[WIN32K:NTUSER] Fix a case where the menu was off-screen on the other side

Found by Denis Malikov
CORE-15001
CORE-9037
This commit is contained in:
Mark Jansen 2019-01-14 20:49:23 +01:00 committed by Giannis Adamopoulos
parent 1a4732703c
commit 007ec0310c

View file

@ -2912,8 +2912,9 @@ static BOOL FASTCALL MENU_ShowPopup(PWND pwndOwner, PMENU menu, UINT id, UINT fl
if( x + width > monitor->rcMonitor.right) if( x + width > monitor->rcMonitor.right)
{ {
/* If we would flip around our origin, would we go off screen on the other side? */ /* If we would flip around our origin, would we go off screen on the other side?
if (x - width < monitor->rcMonitor.left) Or is our origin itself too far to the right already? */
if (x - width < monitor->rcMonitor.left || x > monitor->rcMonitor.right)
x = monitor->rcMonitor.right - width; x = monitor->rcMonitor.right - width;
else else
x -= width; x -= width;
@ -2935,8 +2936,9 @@ static BOOL FASTCALL MENU_ShowPopup(PWND pwndOwner, PMENU menu, UINT id, UINT fl
if( y + height > monitor->rcMonitor.bottom) if( y + height > monitor->rcMonitor.bottom)
{ {
/* If we would flip around our origin, would we go off screen on the other side? */ /* If we would flip around our origin, would we go off screen on the other side?
if (y - height < monitor->rcMonitor.top) Or is our origin itself too far to the bottom already? */
if (y - height < monitor->rcMonitor.top || y > monitor->rcMonitor.bottom)
y = monitor->rcMonitor.bottom - height; y = monitor->rcMonitor.bottom - height;
else else
y -= height; y -= height;