user32: Make the GetWindowPlacement test pass for tool windows.

Dmitry Timoshkov dmitry at codeweavers.com
Thu Sep 11 00:35:55 CDT 2008


---
 dlls/user32/tests/monitor.c |    5 +----
 dlls/user32/winpos.c        |   15 +++++++++++++++
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/dlls/user32/tests/monitor.c b/dlls/user32/tests/monitor.c
index a66868f..74d1e47 100644
--- a/dlls/user32/tests/monitor.c
+++ b/dlls/user32/tests/monitor.c
@@ -361,10 +361,7 @@ static void test_work_area(void)
           wp.rcNormalPosition.left, wp.rcNormalPosition.top,
           wp.rcNormalPosition.right, wp.rcNormalPosition.bottom);
     OffsetRect(&wp.rcNormalPosition, rc_work.left, rc_work.top);
-    if (!EqualRect(&mi.rcMonitor, &mi.rcWork)) /* FIXME: remove once Wine is fixed */
-        todo_wine ok(EqualRect(&rc_normal, &wp.rcNormalPosition), "normal pos is different\n");
-    else
-        ok(EqualRect(&rc_normal, &wp.rcNormalPosition), "normal pos is different\n");
+    ok(EqualRect(&rc_normal, &wp.rcNormalPosition), "normal pos is different\n");
 
     SetWindowLong(hwnd, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
 
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index 21e1554..e977c2c 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -1216,6 +1216,21 @@ BOOL WINAPI GetWindowPlacement( HWND hwnd, WINDOWPLACEMENT *wndpl )
     wndpl->rcNormalPosition = pWnd->normal_rect;
     WIN_ReleasePtr( pWnd );
 
+    if (!(GetWindowLongW( hwnd, GWL_EXSTYLE ) & WS_EX_TOOLWINDOW))
+    {
+        HWND parent = GetParent( hwnd );
+        if (!parent || parent == GetDesktopWindow())
+        {
+            HMONITOR hmon;
+            MONITORINFO mi;
+
+            hmon = MonitorFromRect( &wndpl->rcNormalPosition, MONITOR_DEFAULTTOPRIMARY );
+            mi.cbSize = sizeof(mi);
+            GetMonitorInfoW( hmon, &mi );
+            OffsetRect( &wndpl->rcNormalPosition, -mi.rcWork.left, -mi.rcWork.top );
+        }
+    }
+
     TRACE( "%p: returning min %d,%d max %d,%d normal %s\n",
            hwnd, wndpl->ptMinPosition.x, wndpl->ptMinPosition.y,
            wndpl->ptMaxPosition.x, wndpl->ptMaxPosition.y,
-- 
1.6.0.1






More information about the wine-patches mailing list