diff --git a/ChangeLog b/ChangeLog index ab4ef4e1dc..159e0b529b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-10-29 Tor Lillqvist + + * gdk/win32/gdkwindow-win32.c (RegisterGdkClass): Improve handling + of the small icon of the window class. (#152620, Kazuki Iwamoto) + 2006-10-27 Kristian Rietveld * gtk/gtktreeview.c (validate_visible_area): rework the area_above == 0 diff --git a/gdk/win32/gdkwindow-win32.c b/gdk/win32/gdkwindow-win32.c index 22959242fd..31650cbd8b 100644 --- a/gdk/win32/gdkwindow-win32.c +++ b/gdk/win32/gdkwindow-win32.c @@ -318,6 +318,7 @@ RegisterGdkClass (GdkWindowType wtype) static ATOM klassCHILD = 0; static ATOM klassTEMP = 0; static HICON hAppIcon = NULL; + static HICON hAppIconSm = NULL; static WNDCLASSEXW wcl; ATOM klass = 0; @@ -330,26 +331,37 @@ RegisterGdkClass (GdkWindowType wtype) wcl.cbWndExtra = 0; wcl.hInstance = _gdk_app_hmodule; wcl.hIcon = 0; + wcl.hIconSm = 0; /* initialize once! */ - if (0 == hAppIcon) + if (0 == hAppIcon && 0 == hAppIconSm) { gchar sLoc [MAX_PATH+1]; if (0 != GetModuleFileName (_gdk_app_hmodule, sLoc, MAX_PATH)) - { - hAppIcon = ExtractIcon (_gdk_app_hmodule, sLoc, 0); - if (0 == hAppIcon) - { - if (0 != GetModuleFileName (_gdk_dll_hinstance, sLoc, MAX_PATH)) - hAppIcon = ExtractIcon (_gdk_dll_hinstance, sLoc, 0); - } - } - if (0 == hAppIcon) - hAppIcon = LoadIcon (NULL, IDI_APPLICATION); + { + ExtractIconEx (sLoc, 0, &hAppIcon, &hAppIconSm, 1); + if (0 == hAppIcon && 0 == hAppIconSm) + { + if (0 != GetModuleFileName (_gdk_dll_hinstance, sLoc, MAX_PATH)) + ExtractIconEx (sLoc, 0, &hAppIcon, &hAppIconSm, 1); + } + } + if (0 == hAppIcon && 0 == hAppIconSm) + { + hAppIcon = LoadImage (NULL, IDI_APPLICATION, IMAGE_ICON, + GetSystemMetrics (SM_CXICON), + GetSystemMetrics (SM_CYICON), 0); + hAppIconSm = LoadImage (NULL, IDI_APPLICATION, IMAGE_ICON, + GetSystemMetrics (SM_CXSMICON), + GetSystemMetrics (SM_CYSMICON), 0); + } } + if (0 == hAppIcon) + hAppIcon = hAppIconSm; + else if (0 == hAppIconSm) + hAppIconSm = hAppIcon; wcl.lpszMenuName = NULL; - wcl.hIconSm = 0; /* initialize once per class */ /* @@ -359,7 +371,7 @@ RegisterGdkClass (GdkWindowType wtype) */ #define ONCE_PER_CLASS() \ wcl.hIcon = CopyIcon (hAppIcon); \ - wcl.hIconSm = CopyIcon (hAppIcon); \ + wcl.hIconSm = CopyIcon (hAppIconSm); \ wcl.hbrBackground = NULL; \ wcl.hCursor = LoadCursor (NULL, IDC_ARROW);