From 6a4ff4de66e2cd344396d71f0b063adab990e228 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Thu, 19 May 2022 14:48:23 +0200 Subject: [PATCH] winex11: Implement DesktopWindowProc driver entry point. Signed-off-by: Jacek Caban Signed-off-by: Alexandre Julliard --- dlls/winex11.drv/init.c | 1 + dlls/winex11.drv/window.c | 12 +++++------- dlls/winex11.drv/x11drv.h | 1 + 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dlls/winex11.drv/init.c b/dlls/winex11.drv/init.c index fc190805401..3bdc05999f1 100644 --- a/dlls/winex11.drv/init.c +++ b/dlls/winex11.drv/init.c @@ -408,6 +408,7 @@ static const struct user_driver_funcs x11drv_funcs = .pUpdateDisplayDevices = X11DRV_UpdateDisplayDevices, .pCreateDesktopWindow = X11DRV_CreateDesktopWindow, .pCreateWindow = X11DRV_CreateWindow, + .pDesktopWindowProc = X11DRV_DesktopWindowProc, .pDestroyWindow = X11DRV_DestroyWindow, .pFlashWindowEx = X11DRV_FlashWindowEx, .pGetDC = X11DRV_GetDC, diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 50a848cae86..773fa81f5f3 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1860,13 +1860,14 @@ BOOL X11DRV_CreateDesktopWindow( HWND hwnd ) } -static WNDPROC desktop_orig_wndproc; - #define WM_WINE_NOTIFY_ACTIVITY WM_USER #define WM_WINE_DELETE_TAB (WM_USER + 1) #define WM_WINE_ADD_TAB (WM_USER + 2) -static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) +/********************************************************************** + * DesktopWindowProc (X11DRV.@) + */ +LRESULT X11DRV_DesktopWindowProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) { switch (msg) { @@ -1891,7 +1892,7 @@ static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, send_notify_message( (HWND)wp, WM_X11DRV_ADD_TAB, 0, 0 ); break; } - return desktop_orig_wndproc( hwnd, msg, wp, lp ); + return NtUserMessageCall( hwnd, msg, wp, lp, 0, NtUserDefWindowProc, FALSE ); } /********************************************************************** @@ -1904,9 +1905,6 @@ BOOL X11DRV_CreateWindow( HWND hwnd ) struct x11drv_thread_data *data = x11drv_init_thread_data(); XSetWindowAttributes attr; - desktop_orig_wndproc = (WNDPROC)NtUserSetWindowLongPtr( hwnd, GWLP_WNDPROC, - (LONG_PTR)desktop_wndproc_wrapper, FALSE ); - /* create the cursor clipping window */ attr.override_redirect = TRUE; attr.event_mask = StructureNotifyMask | FocusChangeMask; diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 9a775215321..613dc0e05fe 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -218,6 +218,7 @@ extern void X11DRV_UpdateDisplayDevices( const struct gdi_device_manager *device BOOL force, void *param ) DECLSPEC_HIDDEN; extern BOOL X11DRV_CreateDesktopWindow( HWND hwnd ) DECLSPEC_HIDDEN; extern BOOL X11DRV_CreateWindow( HWND hwnd ) DECLSPEC_HIDDEN; +extern LRESULT X11DRV_DesktopWindowProc( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) DECLSPEC_HIDDEN; extern void X11DRV_DestroyWindow( HWND hwnd ) DECLSPEC_HIDDEN; extern void X11DRV_FlashWindowEx( PFLASHWINFO pfinfo ) DECLSPEC_HIDDEN; extern void X11DRV_GetDC( HDC hdc, HWND hwnd, HWND top, const RECT *win_rect,