diff --git a/win32ss/user/ntuser/menu.c b/win32ss/user/ntuser/menu.c index b8177594df0..eb8874c0cb4 100644 --- a/win32ss/user/ntuser/menu.c +++ b/win32ss/user/ntuser/menu.c @@ -2912,8 +2912,9 @@ static BOOL FASTCALL MENU_ShowPopup(PWND pwndOwner, PMENU menu, UINT id, UINT fl if( x + width > monitor->rcMonitor.right) { - /* If we would flip around our origin, would we go off screen on the other side? */ - if (x - width < monitor->rcMonitor.left) + /* If we would flip around our origin, would we go off screen on the other side? + 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; else 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 we would flip around our origin, would we go off screen on the other side? */ - if (y - height < monitor->rcMonitor.top) + /* If we would flip around our origin, would we go off screen on the other side? + 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; else y -= height;