Module: wine Branch: master Commit: 72d53fda590126acb8cee72cb1fd208946d55d8c URL: https://source.winehq.org/git/wine.git/?a=commit;h=72d53fda590126acb8cee72cb...
Author: Jacek Caban jacek@codeweavers.com Date: Fri Apr 15 14:52:51 2022 +0200
win32u: Move CreatePopupMenu 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 | 10 ++-------- dlls/win32u/menu.c | 5 +++-- dlls/win32u/sysparams.c | 6 +++--- dlls/win32u/win32u_private.h | 2 +- include/ntuser.h | 12 ++++++------ 5 files changed, 15 insertions(+), 20 deletions(-)
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c index 185d596fbb8..6d506e21c3c 100644 --- a/dlls/user32/menu.c +++ b/dlls/user32/menu.c @@ -4158,13 +4158,7 @@ BOOL WINAPI ModifyMenuA( HMENU hMenu, UINT pos, UINT flags, */ HMENU WINAPI CreatePopupMenu(void) { - HMENU hmenu; - POPUPMENU *menu; - - if (!(hmenu = CreateMenu())) return 0; - menu = MENU_GetMenu( hmenu ); - menu->wFlags |= MF_POPUP; - return hmenu; + return NtUserCreateMenu( TRUE ); }
@@ -4213,7 +4207,7 @@ BOOL WINAPI SetMenuItemBitmaps( HMENU hMenu, UINT nPos, UINT wFlags, */ HMENU WINAPI CreateMenu(void) { - return NtUserCreateMenu(); + return NtUserCreateMenu( FALSE ); }
diff --git a/dlls/win32u/menu.c b/dlls/win32u/menu.c index 6ae55e5cee1..2b1a5c97ac1 100644 --- a/dlls/win32u/menu.c +++ b/dlls/win32u/menu.c @@ -116,8 +116,8 @@ HMENU get_menu( HWND hwnd ) return UlongToHandle( get_window_long( hwnd, GWLP_ID )); }
-/* see CreateMenu */ -HMENU create_menu(void) +/* see CreateMenu and CreatePopupMenu */ +HMENU create_menu( BOOL is_popup ) { POPUPMENU *menu; HMENU handle; @@ -125,6 +125,7 @@ HMENU create_menu(void) if (!(menu = calloc( 1, sizeof(*menu) ))) return 0; menu->FocusedItem = NO_SELECTED_ITEM; menu->refcount = 1; + if (is_popup) menu->wFlags |= MF_POPUP;
if (!(handle = alloc_user_handle( &menu->obj, NTUSER_OBJ_MENU ))) free( menu );
diff --git a/dlls/win32u/sysparams.c b/dlls/win32u/sysparams.c index 4d2455fe64e..f6cbda9fa20 100644 --- a/dlls/win32u/sysparams.c +++ b/dlls/win32u/sysparams.c @@ -4632,9 +4632,6 @@ ULONG_PTR WINAPI NtUserCallNoParam( ULONG code ) { switch(code) { - case NtUserCallNoParam_CreateMenu: - return HandleToUlong( create_menu() ); - case NtUserCallNoParam_GetDesktopWindow: return HandleToUlong( get_desktop_window() );
@@ -4679,6 +4676,9 @@ ULONG_PTR WINAPI NtUserCallOneParam( ULONG_PTR arg, ULONG code ) case NtUserCallOneParam_CreateCursorIcon: return HandleToUlong( alloc_cursoricon_handle( arg ));
+ case NtUserCallOneParam_CreateMenu: + return HandleToUlong( create_menu( arg ) ); + case NtUserCallOneParam_DispatchMessageA: return dispatch_message( (const MSG *)arg, TRUE );
diff --git a/dlls/win32u/win32u_private.h b/dlls/win32u/win32u_private.h index 20d0e4ac5b1..89b717c695d 100644 --- a/dlls/win32u/win32u_private.h +++ b/dlls/win32u/win32u_private.h @@ -353,7 +353,7 @@ extern BOOL set_capture_window( HWND hwnd, UINT gui_flags, HWND *prev_ret ) DECL extern BOOL set_foreground_window( HWND hwnd, BOOL mouse ) DECLSPEC_HIDDEN;
/* menu.c */ -extern HMENU create_menu(void) DECLSPEC_HIDDEN; +extern HMENU create_menu( BOOL is_popup ) DECLSPEC_HIDDEN; extern HMENU get_menu( HWND hwnd ) DECLSPEC_HIDDEN;
/* message.c */ diff --git a/include/ntuser.h b/include/ntuser.h index 34b4462f7fe..47b174bc065 100644 --- a/include/ntuser.h +++ b/include/ntuser.h @@ -577,7 +577,6 @@ HWND WINAPI NtUserWindowFromPoint( LONG x, LONG y ); /* NtUserCallNoParam codes, not compatible with Windows */ enum { - NtUserCallNoParam_CreateMenu, NtUserCallNoParam_GetDesktopWindow, NtUserCallNoParam_GetInputState, NtUserCallNoParam_GetMessagePos, @@ -588,11 +587,6 @@ enum NtUserUpdateClipboard, };
-static inline HMENU NtUserCreateMenu(void) -{ - return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_CreateMenu )); -} - static inline HWND NtUserGetDesktopWindow(void) { return UlongToHandle( NtUserCallNoParam( NtUserCallNoParam_GetDesktopWindow )); @@ -618,6 +612,7 @@ enum { NtUserCallOneParam_BeginDeferWindowPos, NtUserCallOneParam_CreateCursorIcon, + NtUserCallOneParam_CreateMenu, NtUserCallOneParam_DispatchMessageA, NtUserCallOneParam_EnableDC, NtUserCallOneParam_EnableThunkLock, @@ -651,6 +646,11 @@ static inline HICON NtUserCreateCursorIcon( BOOL is_icon ) return UlongToHandle( NtUserCallOneParam( is_icon, NtUserCallOneParam_CreateCursorIcon )); }
+static inline HMENU NtUserCreateMenu( BOOL is_popup ) +{ + return UlongToHandle( NtUserCallOneParam( is_popup, NtUserCallOneParam_CreateMenu )); +} + static inline LRESULT NtUserDispatchMessageA( const MSG *msg ) { return NtUserCallOneParam( (UINT_PTR)msg, NtUserCallOneParam_DispatchMessageA );