Alexandre Julliard : winex11: Subtract the tray window from the work area in desktop mode.

Alexandre Julliard julliard at winehq.org
Thu May 26 10:54:45 CDT 2016


Module: wine
Branch: master
Commit: 6c6814056f067f863a4cf47f756c9336dcdf8afc
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=6c6814056f067f863a4cf47f756c9336dcdf8afc

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu May 26 21:47:51 2016 +0900

winex11: Subtract the tray window from the work area in desktop mode.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/winex11.drv/xinerama.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/dlls/winex11.drv/xinerama.c b/dlls/winex11.drv/xinerama.c
index 7e28726..0419535 100644
--- a/dlls/winex11.drv/xinerama.c
+++ b/dlls/winex11.drv/xinerama.c
@@ -87,6 +87,20 @@ static void query_work_area( RECT *rc_work )
     }
 }
 
+static void query_desktop_work_area( RECT *rc_work )
+{
+    static const WCHAR trayW[] = {'S','h','e','l','l','_','T','r','a','y','W','n','d',0};
+    RECT rect;
+    HWND hwnd = FindWindowW( trayW, NULL );
+
+    if (!hwnd || !IsWindowVisible( hwnd )) return;
+    if (!GetWindowRect( hwnd, &rect )) return;
+    if (rect.top) rc_work->bottom = rect.top;
+    else rc_work->top = rect.bottom;
+    TRACE( "found tray %p %s work area %s\n", hwnd,
+           wine_dbgstr_rect( &rect ), wine_dbgstr_rect( rc_work ));
+}
+
 #ifdef SONAME_LIBXINERAMA
 
 #define MAKE_FUNCPTR(f) static typeof(f) * p##f
@@ -198,6 +212,8 @@ void xinerama_init( unsigned int width, unsigned int height )
         default_monitor.rcWork = default_monitor.rcMonitor = rect;
         if (root_window == DefaultRootWindow( gdi_display ))
             query_work_area( &default_monitor.rcWork );
+        else
+            query_desktop_work_area( &default_monitor.rcWork );
         nb_monitors = 1;
         monitors = &default_monitor;
     }




More information about the wine-cvs mailing list