Jacek Caban : win32u: Move NtUserDeleteMenu implementation from user32.
Alexandre Julliard
julliard at winehq.org
Mon May 2 16:02:10 CDT 2022
Module: wine
Branch: master
Commit: 189da79a18bcb7baabcd50de36bf2a6ba818b79d
URL: https://source.winehq.org/git/wine.git/?a=commit;h=189da79a18bcb7baabcd50de36bf2a6ba818b79d
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Apr 15 00:42:16 2022 +0200
win32u: Move NtUserDeleteMenu implementation from user32.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/user32/mdi.c | 6 +++---
dlls/user32/menu.c | 26 +++-----------------------
dlls/user32/user32.spec | 2 +-
dlls/win32u/menu.c | 19 +++++++++++++++++++
dlls/win32u/syscall.c | 1 +
dlls/win32u/win32u.spec | 2 +-
dlls/wow64win/syscall.h | 1 +
dlls/wow64win/user.c | 9 +++++++++
include/ntuser.h | 1 +
9 files changed, 39 insertions(+), 28 deletions(-)
diff --git a/dlls/user32/mdi.c b/dlls/user32/mdi.c
index b856f054247..1b06143d4cf 100644
--- a/dlls/user32/mdi.c
+++ b/dlls/user32/mdi.c
@@ -945,11 +945,11 @@ static BOOL MDI_RestoreFrameMenu( HWND frame, HWND hChild )
}
/* close */
- DeleteMenu(menu, SC_CLOSE, MF_BYCOMMAND);
+ NtUserDeleteMenu( menu, SC_CLOSE, MF_BYCOMMAND );
/* restore */
- DeleteMenu(menu, SC_RESTORE, MF_BYCOMMAND);
+ NtUserDeleteMenu( menu, SC_RESTORE, MF_BYCOMMAND );
/* minimize */
- DeleteMenu(menu, SC_MINIMIZE, MF_BYCOMMAND);
+ NtUserDeleteMenu( menu, SC_MINIMIZE, MF_BYCOMMAND );
DrawMenuBar(frame);
diff --git a/dlls/user32/menu.c b/dlls/user32/menu.c
index 669d838bf61..761718182b5 100644
--- a/dlls/user32/menu.c
+++ b/dlls/user32/menu.c
@@ -410,7 +410,7 @@ static HMENU MENU_GetSysMenu( HWND hWnd, HMENU hPopupMenu )
if (hPopupMenu)
{
if (GetClassLongW(hWnd, GCL_STYLE) & CS_NOCLOSE)
- DeleteMenu(hPopupMenu, SC_CLOSE, MF_BYCOMMAND);
+ NtUserDeleteMenu( hPopupMenu, SC_CLOSE, MF_BYCOMMAND );
InsertMenuW( hMenu, -1, MF_SYSMENU | MF_POPUP | MF_BYPOSITION,
(UINT_PTR)hPopupMenu, NULL );
@@ -3540,7 +3540,7 @@ BOOL WINAPI ChangeMenuA( HMENU hMenu, UINT pos, LPCSTR data,
TRACE("menu=%p pos=%d data=%p id=%08x flags=%08x\n", hMenu, pos, data, id, flags );
if (flags & MF_APPEND) return AppendMenuA( hMenu, flags & ~MF_APPEND,
id, data );
- if (flags & MF_DELETE) return DeleteMenu(hMenu, pos, flags & ~MF_DELETE);
+ if (flags & MF_DELETE) return NtUserDeleteMenu( hMenu, pos, flags & ~MF_DELETE );
if (flags & MF_CHANGE) return ModifyMenuA(hMenu, pos, flags & ~MF_CHANGE,
id, data );
if (flags & MF_REMOVE) return NtUserRemoveMenu( hMenu,
@@ -3560,7 +3560,7 @@ BOOL WINAPI ChangeMenuW( HMENU hMenu, UINT pos, LPCWSTR data,
TRACE("menu=%p pos=%d data=%p id=%08x flags=%08x\n", hMenu, pos, data, id, flags );
if (flags & MF_APPEND) return AppendMenuW( hMenu, flags & ~MF_APPEND,
id, data );
- if (flags & MF_DELETE) return DeleteMenu(hMenu, pos, flags & ~MF_DELETE);
+ if (flags & MF_DELETE) return NtUserDeleteMenu( hMenu, pos, flags & ~MF_DELETE );
if (flags & MF_CHANGE) return ModifyMenuW(hMenu, pos, flags & ~MF_CHANGE,
id, data );
if (flags & MF_REMOVE) return NtUserRemoveMenu( hMenu,
@@ -3825,26 +3825,6 @@ BOOL WINAPI AppendMenuW( HMENU hMenu, UINT flags,
}
-/**********************************************************************
- * DeleteMenu (USER32.@)
- */
-BOOL WINAPI DeleteMenu( HMENU hMenu, UINT id, UINT flags )
-{
- POPUPMENU *menu;
- UINT pos;
-
- if (!(menu = find_menu_item(hMenu, id, flags, &pos)))
- return FALSE;
-
- if (menu->items[pos].fType & MF_POPUP)
- NtUserDestroyMenu( menu->items[pos].hSubMenu );
-
- NtUserRemoveMenu( menu->obj.handle, pos, flags | MF_BYPOSITION );
- release_menu_ptr(menu);
- return TRUE;
-}
-
-
/*******************************************************************
* ModifyMenuW (USER32.@)
*/
diff --git a/dlls/user32/user32.spec b/dlls/user32/user32.spec
index 26f2d1caf45..0697bcfa841 100644
--- a/dlls/user32/user32.spec
+++ b/dlls/user32/user32.spec
@@ -153,7 +153,7 @@
@ stdcall DefWindowProcA(long long long long)
@ stdcall DefWindowProcW(long long long long)
@ stdcall DeferWindowPos(long long long long long long long long)
-@ stdcall DeleteMenu(long long long)
+@ stdcall DeleteMenu(long long long) NtUserDeleteMenu
@ stdcall DeregisterShellHookWindow (long)
@ stdcall DestroyAcceleratorTable(long) NtUserDestroyAcceleratorTable
@ stdcall DestroyCaret()
diff --git a/dlls/win32u/menu.c b/dlls/win32u/menu.c
index d41aba956f2..67abac37037 100644
--- a/dlls/win32u/menu.c
+++ b/dlls/win32u/menu.c
@@ -976,6 +976,25 @@ BOOL WINAPI NtUserRemoveMenu( HMENU handle, UINT id, UINT flags )
return TRUE;
}
+/**********************************************************************
+ * NtUserDeleteMenu (win32u.@)
+ */
+BOOL WINAPI NtUserDeleteMenu( HMENU handle, UINT id, UINT flags )
+{
+ POPUPMENU *menu;
+ UINT pos;
+
+ if (!(menu = find_menu_item( handle, id, flags, &pos )))
+ return FALSE;
+
+ if (menu->items[pos].fType & MF_POPUP)
+ NtUserDestroyMenu( menu->items[pos].hSubMenu );
+
+ NtUserRemoveMenu( menu->obj.handle, pos, flags | MF_BYPOSITION );
+ release_menu_ptr( menu );
+ return TRUE;
+}
+
/**********************************************************************
* NtUserSetMenuContextHelpId (win32u.@)
*/
diff --git a/dlls/win32u/syscall.c b/dlls/win32u/syscall.c
index f585e90bd4a..488056ef439 100644
--- a/dlls/win32u/syscall.c
+++ b/dlls/win32u/syscall.c
@@ -114,6 +114,7 @@ static void * const syscalls[] =
NtUserCreateAcceleratorTable,
NtUserCreateDesktopEx,
NtUserCreateWindowStation,
+ NtUserDeleteMenu,
NtUserDestroyAcceleratorTable,
NtUserFindExistingCursorIcon,
NtUserFindWindowEx,
diff --git a/dlls/win32u/win32u.spec b/dlls/win32u/win32u.spec
index 483b3d52289..43db8421bb8 100644
--- a/dlls/win32u/win32u.spec
+++ b/dlls/win32u/win32u.spec
@@ -824,7 +824,7 @@
@ stdcall NtUserDeferWindowPosAndBand(long long long long long long long long long long)
@ stub NtUserDelegateCapturePointers
@ stub NtUserDelegateInput
-@ stub NtUserDeleteMenu
+@ stdcall -syscall NtUserDeleteMenu(long long long)
@ stub NtUserDeleteWindowGroup
@ stdcall -syscall NtUserDestroyAcceleratorTable(long)
@ stub NtUserDestroyActivationGroup
diff --git a/dlls/wow64win/syscall.h b/dlls/wow64win/syscall.h
index 776a7e671f6..27ba163408b 100644
--- a/dlls/wow64win/syscall.h
+++ b/dlls/wow64win/syscall.h
@@ -101,6 +101,7 @@
SYSCALL_ENTRY( NtUserCreateAcceleratorTable ) \
SYSCALL_ENTRY( NtUserCreateDesktopEx ) \
SYSCALL_ENTRY( NtUserCreateWindowStation ) \
+ SYSCALL_ENTRY( NtUserDeleteMenu ) \
SYSCALL_ENTRY( NtUserDestroyAcceleratorTable ) \
SYSCALL_ENTRY( NtUserFindExistingCursorIcon ) \
SYSCALL_ENTRY( NtUserFindWindowEx ) \
diff --git a/dlls/wow64win/user.c b/dlls/wow64win/user.c
index 1f287c7631c..d90c4ec2f99 100644
--- a/dlls/wow64win/user.c
+++ b/dlls/wow64win/user.c
@@ -669,6 +669,15 @@ NTSTATUS WINAPI wow64_NtUserCheckMenuItem( UINT *args )
return NtUserCheckMenuItem( handle, id, flags );
}
+NTSTATUS WINAPI wow64_NtUserDeleteMenu( UINT *args )
+{
+ HMENU menu = get_handle( &args );
+ UINT id = get_ulong( &args );
+ UINT flags = get_ulong( &args );
+
+ return NtUserDeleteMenu( menu, id, flags );
+}
+
NTSTATUS WINAPI wow64_NtUserGetMenuItemRect( UINT *args )
{
HWND hwnd = get_handle( &args );
diff --git a/include/ntuser.h b/include/ntuser.h
index 1876b32c84b..dfa9f53a187 100644
--- a/include/ntuser.h
+++ b/include/ntuser.h
@@ -487,6 +487,7 @@ HWINSTA WINAPI NtUserCreateWindowStation( OBJECT_ATTRIBUTES *attr, ACCESS_MASK m
ULONG arg4, ULONG arg5, ULONG arg6, ULONG arg7 );
HDWP WINAPI NtUserDeferWindowPosAndBand( HDWP hdwp, HWND hwnd, HWND after, INT x, INT y,
INT cx, INT cy, UINT flags, UINT unk1, UINT unk2 );
+BOOL WINAPI NtUserDeleteMenu( HMENU menu, UINT id, UINT flags );
BOOL WINAPI NtUserDestroyAcceleratorTable( HACCEL handle );
BOOL WINAPI NtUserDestroyCursor( HCURSOR cursor, ULONG arg );
BOOL WINAPI NtUserDestroyMenu( HMENU menu );
More information about the wine-cvs
mailing list