[NTUSER] Fix Shell Hook HSHELL_WINDOWCREATED (#3294)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Tue, 13 Oct 2020 07:37:52 +0000 (16:37 +0900)
committerGitHub <noreply@github.com>
Tue, 13 Oct 2020 07:37:52 +0000 (16:37 +0900)
Fix Shell Hook and reduce failures of shell32_apitest ShellHook testcase. Fix the condition of notifying shell hook HSHELL_WINDOWCREATED in ntuser/winpos.c. CORE-17330

win32ss/user/ntuser/winpos.c

index b5927d1..9a74a16 100644 (file)
@@ -1904,18 +1904,13 @@ co_WinPosSetWindowPos(
    }
    else if (WinPos.flags & SWP_SHOWWINDOW)
    {
-      if (Window->spwndOwner == NULL ||
-          !(Window->spwndOwner->style & WS_VISIBLE) ||
-          (Window->spwndOwner->ExStyle & WS_EX_TOOLWINDOW))
+      if ((Window->ExStyle & WS_EX_APPWINDOW) ||
+          (!(Window->ExStyle & WS_EX_TOOLWINDOW) && !Window->spwndOwner &&
+           (!Window->spwndParent || UserIsDesktopWindow(Window->spwndParent))))
       {
-         if (UserIsDesktopWindow(Window->spwndParent) &&
-             (!(Window->ExStyle & WS_EX_TOOLWINDOW) ||
-              (Window->ExStyle & WS_EX_APPWINDOW)))
-         {
-            co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
-            if (!(WinPos.flags & SWP_NOACTIVATE))
-               UpdateShellHook(Window);
-         }
+         co_IntShellHookNotify(HSHELL_WINDOWCREATED, (WPARAM)Window->head.h, 0);
+         if (!(WinPos.flags & SWP_NOACTIVATE))
+            UpdateShellHook(Window);
       }
 
       Window->style |= WS_VISIBLE; //IntSetStyle( Window, WS_VISIBLE, 0 );