From: Zebediah Figura zfigura@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- 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 );
From: Zebediah Figura zfigura@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/winex11.drv/window.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index 14b6a7a..829a39f 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1804,6 +1804,22 @@ BOOL CDECL X11DRV_CreateDesktopWindow( HWND hwnd ) }
+static WNDPROC desktop_orig_wndproc; + +#define WM_WINE_NOTIFY_ACTIVITY WM_USER + +static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) +{ + switch (msg) + { + case WM_WINE_NOTIFY_ACTIVITY: + XResetScreenSaver( gdi_display ); + XFlush( gdi_display ); + break; + } + return desktop_orig_wndproc( hwnd, msg, wp, lp ); +} + /********************************************************************** * CreateWindow (X11DRV.@) */ @@ -1814,6 +1830,9 @@ BOOL CDECL X11DRV_CreateWindow( HWND hwnd ) struct x11drv_thread_data *data = x11drv_init_thread_data(); XSetWindowAttributes attr;
+ desktop_orig_wndproc = (WNDPROC)SetWindowLongPtrW( GetDesktopWindow(), + GWLP_WNDPROC, (LONG_PTR)desktop_wndproc_wrapper ); + /* create the cursor clipping window */ attr.override_redirect = TRUE; attr.event_mask = StructureNotifyMask | FocusChangeMask;
From: Zebediah Figura zfigura@codeweavers.com
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/winemac.drv/window.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 48b44a6..886c604 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -1551,13 +1551,36 @@ BOOL CDECL macdrv_CreateDesktopWindow(HWND hwnd) }
+static WNDPROC desktop_orig_wndproc; + +#define WM_WINE_NOTIFY_ACTIVITY WM_USER + +static LRESULT CALLBACK desktop_wndproc_wrapper( HWND hwnd, UINT msg, WPARAM wp, LPARAM lp ) +{ + switch (msg) + { + case WM_WINE_NOTIFY_ACTIVITY: + { + static IOPMAssertionID assertion; + IOPMAssertionDeclareUserActivity(CFSTR("Wine user input"), kIOPMUserActiveLocal, &assertion); + break; + } + } + return desktop_orig_wndproc( hwnd, msg, wp, lp ); +} + /********************************************************************** * CreateWindow (MACDRV.@) */ BOOL CDECL macdrv_CreateWindow(HWND hwnd) { if (hwnd == GetDesktopWindow()) + { + desktop_orig_wndproc = (WNDPROC)SetWindowLongPtrW( GetDesktopWindow(), + GWLP_WNDPROC, (LONG_PTR)desktop_wndproc_wrapper ); + macdrv_init_clipboard(); + } return TRUE; }