https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3cbdcc6363666db43ec82…
commit 3cbdcc6363666db43ec82cd119f7f2536470fa93
Author: Mark Jansen <mark.jansen(a)reactos.org>
AuthorDate: Wed Aug 7 00:50:21 2019 +0200
Commit: Mark Jansen <mark.jansen(a)reactos.org>
CommitDate: Thu Aug 8 19:51:15 2019 +0200
[WIN32SS] For application menu's, only exclude the menu item,
not the entire window.
Because the application menu is part of the application window,
this would lead to bad results.
---
win32ss/user/ntuser/menu.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/win32ss/user/ntuser/menu.c b/win32ss/user/ntuser/menu.c
index 13af632520d..ecf67761dd3 100644
--- a/win32ss/user/ntuser/menu.c
+++ b/win32ss/user/ntuser/menu.c
@@ -3354,10 +3354,20 @@ static PMENU FASTCALL MENU_ShowSubPopup(PWND WndOwner, PMENU Menu, BOOL SelectFi
pWnd = ValidateHwndNoErr(Menu->hWnd);
/* Grab the rect of our (entire) parent menu, so we can try to not overlap it */
- if (!IntGetWindowRect(pWnd, &ParentRect))
+ if (Menu->fFlags & MNF_POPUP)
{
- ERR("No pWnd\n");
- ParentRect = Rect;
+ if (!IntGetWindowRect(pWnd, &ParentRect))
+ {
+ ERR("No pWnd\n");
+ ParentRect = Rect;
+ }
+ }
+ else
+ {
+ /* Inside the menu bar, we do not want to grab the entire window... */
+ ParentRect = Rect;
+ if (pWnd)
+ RECTL_vOffsetRect(&ParentRect, pWnd->rcWindow.left, pWnd->rcWindow.top);
}
/* correct item if modified as a reaction to WM_INITMENUPOPUP message */