Piotr Caban : user32: Fix style passed to HCBT_CREATEWND hook.

Alexandre Julliard julliard at winehq.org
Thu Oct 7 16:21:22 CDT 2021


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Oct  7 16:34:07 2021 +0200

user32: Fix style passed to HCBT_CREATEWND hook.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/tests/win.c | 12 ++++++------
 dlls/user32/win.c       |  6 ------
 2 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/dlls/user32/tests/win.c b/dlls/user32/tests/win.c
index b9824422409..6715a26b631 100644
--- a/dlls/user32/tests/win.c
+++ b/dlls/user32/tests/win.c
@@ -1222,9 +1222,10 @@ static LRESULT CALLBACK cbt_hook_proc(int nCode, WPARAM wParam, LPARAM lParam)
 
 	    /* WS_VISIBLE should be turned off yet */
 	    style = createwnd->lpcs->style & ~WS_VISIBLE;
-	    ok(style == GetWindowLongA(hwnd, GWL_STYLE),
-		"style of hwnd and style in the CREATESTRUCT do not match: %08x != %08x\n",
-		GetWindowLongA(hwnd, GWL_STYLE), style);
+            todo_wine_if(!(style & WS_CLIPSIBLINGS) && (!(style & WS_CHILD) || (style & WS_POPUP)))
+                ok(style == GetWindowLongA(hwnd, GWL_STYLE),
+                        "style of hwnd and style in the CREATESTRUCT do not match: %08x != %08x\n",
+                        GetWindowLongA(hwnd, GWL_STYLE), style);
 
             if (0)
             {
@@ -4444,9 +4445,8 @@ static LRESULT WINAPI cbt_proc(int ncode, WPARAM wparam, LPARAM lparam)
 
     ts = c->lpcs->lpCreateParams;
     ok(ts != NULL, "lpCreateParams not set\n");
-    todo_wine_if(!(ts->cs_style & WS_CHILD) || (ts->cs_style & WS_POPUP))
-        ok(c->lpcs->style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
-                c->lpcs->style, ts->cs_style);
+    ok(c->lpcs->style == ts->cs_style, "style = 0x%08x, expected 0x%08x\n",
+            c->lpcs->style, ts->cs_style);
     ok(c->lpcs->dwExStyle == ts->cs_exstyle, "exstyle = 0x%08x, expected 0x%08x\n",
             c->lpcs->dwExStyle, ts->cs_exstyle);
 
diff --git a/dlls/user32/win.c b/dlls/user32/win.c
index 21214432b6d..081d21a95d0 100644
--- a/dlls/user32/win.c
+++ b/dlls/user32/win.c
@@ -1706,7 +1706,6 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module,
     }
     else SetWindowLongPtrW( hwnd, GWLP_ID, (ULONG_PTR)cs->hMenu );
 
-    style = wndPtr->dwStyle;
     win_dpi = wndPtr->dpi;
     WIN_ReleasePtr( wndPtr );
 
@@ -1716,12 +1715,7 @@ HWND WIN_CreateWindowEx( CREATESTRUCTW *cs, LPCWSTR className, HINSTANCE module,
 
     /* call the WH_CBT hook */
 
-    /* the window style passed to the hook must be the real window style,
-     * rather than just the window style that the caller to CreateWindowEx
-     * passed in, so we have to copy the original CREATESTRUCT and get the
-     * the real style. */
     cbcs = *cs;
-    cbcs.style = style;
     cbtc.lpcs = &cbcs;
     cbtc.hwndInsertAfter = HWND_TOP;
     if (HOOK_CallHooks( WH_CBT, HCBT_CREATEWND, (WPARAM)hwnd, (LPARAM)&cbtc, unicode )) goto failed;




More information about the wine-cvs mailing list