Rémi Bernon : user32: Add a default ShowWindow implementation.

Alexandre Julliard julliard at winehq.org
Mon May 17 15:45:32 CDT 2021


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

Author: Rémi Bernon <rbernon at codeweavers.com>
Date:   Fri May 14 13:40:05 2021 +0200

user32: Add a default ShowWindow implementation.

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/driver.c |  2 +-
 dlls/user32/winpos.c | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index 87c8cd621b3..f769677d30d 100644
--- a/dlls/user32/driver.c
+++ b/dlls/user32/driver.c
@@ -356,7 +356,7 @@ static void CDECL nulldrv_SetWindowText( HWND hwnd, LPCWSTR text )
 
 static UINT CDECL nulldrv_ShowWindow( HWND hwnd, INT cmd, RECT *rect, UINT swp )
 {
-    return swp;
+    return ~0; /* use default implementation */
 }
 
 static LRESULT CDECL nulldrv_SysCommand( HWND hwnd, WPARAM wparam, LPARAM lparam )
diff --git a/dlls/user32/winpos.c b/dlls/user32/winpos.c
index cf7e7914869..de5d50d4c3a 100644
--- a/dlls/user32/winpos.c
+++ b/dlls/user32/winpos.c
@@ -1118,7 +1118,16 @@ static BOOL show_window( HWND hwnd, INT cmd )
     }
 
     if (IsRectEmpty( &newPos )) new_swp = swp;
-    else new_swp = USER_Driver->pShowWindow( hwnd, cmd, &newPos, swp );
+    else if ((new_swp = USER_Driver->pShowWindow( hwnd, cmd, &newPos, swp )) == ~0)
+    {
+        if (GetWindowLongW( hwnd, GWL_STYLE ) & WS_CHILD) new_swp = swp;
+        else if (IsIconic( hwnd ) && (newPos.left != -32000 || newPos.top != -32000))
+        {
+            OffsetRect( &newPos, -32000 - newPos.left, -32000 - newPos.top );
+            new_swp = swp & ~(SWP_NOMOVE | SWP_NOCLIENTMOVE);
+        }
+        else new_swp = swp;
+    }
     swp = new_swp;
 
     parent = GetAncestor( hwnd, GA_PARENT );




More information about the wine-cvs mailing list