Module: wine Branch: master Commit: 782220626fa7148d0d7421a5f7e632083a4b89f2 URL: https://source.winehq.org/git/wine.git/?a=commit;h=782220626fa7148d0d7421a5f...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Apr 20 15:58:00 2022 +0200
win32u: Move GetMenuInfo implementation from user32.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/menu.c | 35 +++-------------------------------- dlls/win32u/menu.c | 23 +++++++++++++++++++++++ dlls/win32u/sysparams.c | 3 +++ dlls/win32u/win32u_private.h | 1 + include/ntuser.h | 7 +++++++ 5 files changed, 37 insertions(+), 32 deletions(-)
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index 2585f92f97d..b1f038938f6 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -5124,40 +5124,11 @@ BOOL WINAPI SetMenuInfo (HMENU hMenu, LPCMENUINFO lpmi) }
/********************************************************************** - * GetMenuInfo (USER32.@) - * - * NOTES - * win98/NT5.0 - * + * GetMenuInfo (USER32.@) */ -BOOL WINAPI GetMenuInfo (HMENU hMenu, LPMENUINFO lpmi) +BOOL WINAPI GetMenuInfo( HMENU menu, MENUINFO *info ) { - POPUPMENU *menu; - - TRACE("(%p %p)\n", hMenu, lpmi); - - if (lpmi && (lpmi->cbSize == sizeof(MENUINFO)) && (menu = grab_menu_ptr(hMenu))) - { - if (lpmi->fMask & MIM_BACKGROUND) - lpmi->hbrBack = menu->hbrBack; - - if (lpmi->fMask & MIM_HELPID) - lpmi->dwContextHelpID = menu->dwContextHelpID; - - if (lpmi->fMask & MIM_MAXHEIGHT) - lpmi->cyMax = menu->cyMax; - - if (lpmi->fMask & MIM_MENUDATA) - lpmi->dwMenuData = menu->dwMenuData; - - if (lpmi->fMask & MIM_STYLE) - lpmi->dwStyle = menu->dwStyle; - - release_menu_ptr(menu); - return TRUE; - } - SetLastError( ERROR_INVALID_PARAMETER); - return FALSE; + return NtUserGetMenuInfo( menu, info ); }
diff --git a/dlls/win32u/menu.c b/dlls/win32u/menu.c index afe4c148775..fd4e1f74039 100644 --- a/dlls/win32u/menu.c +++ b/dlls/win32u/menu.c @@ -451,6 +451,29 @@ BOOL WINAPI NtUserGetMenuItemRect( HWND hwnd, HMENU handle, UINT item, RECT *rec return TRUE; }
+/* see GetMenuInfo */ +BOOL get_menu_info( HMENU handle, MENUINFO *info ) +{ + POPUPMENU *menu; + + TRACE( "(%p %p)\n", handle, info ); + + if (!info || info->cbSize != sizeof(MENUINFO) || !(menu = grab_menu_ptr( handle ))) + { + SetLastError( ERROR_INVALID_PARAMETER); + return FALSE; + } + + if (info->fMask & MIM_BACKGROUND) info->hbrBack = menu->hbrBack; + if (info->fMask & MIM_HELPID) info->dwContextHelpID = menu->dwContextHelpID; + if (info->fMask & MIM_MAXHEIGHT) info->cyMax = menu->cyMax; + if (info->fMask & MIM_MENUDATA) info->dwMenuData = menu->dwMenuData; + if (info->fMask & MIM_STYLE) info->dwStyle = menu->dwStyle; + + release_menu_ptr(menu); + return TRUE; +} + /********************************************************************** * NtUserSetMenuContextHelpId (win32u.@) */ diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 32da544c157..49f3f716b2d 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -4762,6 +4762,9 @@ ULONG_PTR WINAPI NtUserCallTwoParam( ULONG_PTR arg1, ULONG_PTR arg2, ULONG code { switch(code) { + case NtUserCallTwoParam_GetMenuInfo: + return get_menu_info( UlongToHandle(arg1), (MENUINFO *)arg2 ); + case NtUserCallTwoParam_GetMonitorInfo: return get_monitor_info( UlongToHandle(arg1), (MONITORINFO *)arg2 );
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index f3a751f1836..2299330be0d 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -359,6 +359,7 @@ extern BOOL set_foreground_window( HWND hwnd, BOOL mouse ) DECLSPEC_HIDDEN; extern HMENU create_menu( BOOL is_popup ) DECLSPEC_HIDDEN; extern BOOL draw_menu_bar( HWND hwnd ) DECLSPEC_HIDDEN; extern HMENU get_menu( HWND hwnd ) DECLSPEC_HIDDEN; +extern BOOL get_menu_info( HMENU handle, MENUINFO *info ) DECLSPEC_HIDDEN; extern BOOL set_window_menu( HWND hwnd, HMENU handle ) DECLSPEC_HIDDEN;
/* message.c */ diff --git a/include/ntuser.h b/include/ntuser.h index 8420784a5a0..bab4a0dc78c 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -745,6 +745,7 @@ static inline UINT NtUserRealizePalette( HDC hdc ) /* NtUserCallTwoParam codes, not compatible with Windows */ enum { + NtUserCallTwoParam_GetMenuInfo, NtUserCallTwoParam_GetMonitorInfo, NtUserCallTwoParam_GetSystemMetricsForDpi, NtUserCallTwoParam_MonitorFromRect, @@ -756,6 +757,12 @@ enum NtUserGetHandlePtr, };
+static inline BOOL NtUserGetMenuInfo( HMENU menu, MENUINFO *info ) +{ + return NtUserCallTwoParam( HandleToUlong(menu), (ULONG_PTR)info, + NtUserCallTwoParam_GetMenuInfo ); +} + static inline BOOL NtUserGetMonitorInfo( HMONITOR monitor, MONITORINFO *info ) { return NtUserCallTwoParam( HandleToUlong(monitor), (ULONG_PTR)info,