Zebediah Figura : explorer: Wrap the desktop window procedure instead of replacing it.

Alexandre Julliard julliard at winehq.org
Wed Jul 4 15:32:34 CDT 2018


Module: wine
Branch: master
Commit: fc14753dc0188a52a05243d5d82c4062b93daaff
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=fc14753dc0188a52a05243d5d82c4062b93daaff

Author: Zebediah Figura <zfigura at codeweavers.com>
Date:   Wed Jul  4 17:16:40 2018 +0200

explorer: Wrap the desktop window procedure instead of replacing it.

Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 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 a2d9e1a..4f47ad0 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 );




More information about the wine-cvs mailing list