From fc14753dc0188a52a05243d5d82c4062b93daaff Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 4 Jul 2018 17:16:40 +0200 Subject: [PATCH] explorer: Wrap the desktop window procedure instead of replacing it. Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- programs/explorer/desktop.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/programs/explorer/desktop.c b/programs/explorer/desktop.c index a2d9e1a6ce4..4f47ad0d36b 100644 --- a/programs/explorer/desktop.c +++ b/programs/explorer/desktop.c @@ -599,6 +599,8 @@ static BOOL start_screensaver( void ) return FALSE; } +static WNDPROC desktop_orig_wndproc; + /* window procedure for the desktop window */ static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPARAM lp ) { @@ -660,10 +662,9 @@ static LRESULT WINAPI desktop_wnd_proc( HWND hwnd, UINT message, WPARAM wp, LPAR EndPaint( hwnd, &ps ); } return 0; - - default: - return DefWindowProcW( hwnd, message, wp, lp ); } + + return desktop_orig_wndproc( hwnd, message, wp, lp ); } /* create the desktop and the associated driver window, and make it the current desktop */ @@ -978,7 +979,8 @@ void manage_desktop( WCHAR *arg ) CreateWindowExW( 0, messageW, NULL, WS_POPUP | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, 0, 0, 100, 100, 0, 0, 0, NULL ); - SetWindowLongPtrW( hwnd, GWLP_WNDPROC, (LONG_PTR)desktop_wnd_proc ); + desktop_orig_wndproc = (WNDPROC)SetWindowLongPtrW( hwnd, GWLP_WNDPROC, + (LONG_PTR)desktop_wnd_proc ); using_root = !desktop || !create_desktop( graphics_driver, name, width, height ); SendMessageW( hwnd, WM_SETICON, ICON_BIG, (LPARAM)LoadIconW( 0, MAKEINTRESOURCEW(OIC_WINLOGO))); if (name) set_desktop_window_title( hwnd, name );