[USER32] Make App Switcher use the owner window's icon (#1299)
authorKatayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
Thu, 24 Jan 2019 13:41:42 +0000 (22:41 +0900)
committerGitHub <noreply@github.com>
Thu, 24 Jan 2019 13:41:42 +0000 (22:41 +0900)
CORE-15672

win32ss/user/user32/controls/appswitch.c

index 7f97d0d..ecd48b4 100644 (file)
@@ -165,20 +165,24 @@ void CompleteSwitch(BOOL doSwitch)
 BOOL CALLBACK EnumerateCallback(HWND window, LPARAM lParam)
 {
    HICON hIcon;
+   HWND hwndIcon, hwndOwner;
 
    UNREFERENCED_PARAMETER(lParam);
 
+   hwndOwner = GetWindow(window, GW_OWNER);
+   hwndIcon = (hwndOwner ? hwndOwner : window);
+
    // First try to get the big icon assigned to the window
-   hIcon = (HICON)SendMessageW(window, WM_GETICON, ICON_BIG, 0);
+   hIcon = (HICON)SendMessageW(hwndIcon, WM_GETICON, ICON_BIG, 0);
    if (!hIcon)
    {
       // If no icon is assigned, try to get the icon assigned to the windows' class
-      hIcon = (HICON)GetClassLongPtrW(window, GCL_HICON);
+      hIcon = (HICON)GetClassLongPtrW(hwndIcon, GCL_HICON);
       if (!hIcon)
       {
          // If we still don't have an icon, see if we can do with the small icon,
          // or a default application icon
-         hIcon = (HICON)SendMessageW(window, WM_GETICON, ICON_SMALL2, 0);
+         hIcon = (HICON)SendMessageW(hwndIcon, WM_GETICON, ICON_SMALL2, 0);
          if (!hIcon)
          {
             // using windows logo icon as default