/* * Return the HICON to use in the taskbar notification area */ HICON winTaskbarIcon(void) { HICON hicon; hicon = 0; /* First try and load an overridden, if success then return it */ if (pref.trayIconName[0]) { hicon = LoadImageComma (pref.trayIconName, GetSystemMetrics (SM_CXSMICON), GetSystemMetrics (SM_CYSMICON), 0 ); } /* Otherwise return the default */ if (!hicon) hicon = (HICON) LoadImage (g_hInstance, MAKEINTRESOURCE(IDI_XWIN), IMAGE_ICON, GetSystemMetrics (SM_CXSMICON), GetSystemMetrics (SM_CYSMICON), 0); return hicon; }
/* * Check for a match of the window class to one specified in the * ICONS{} section in the prefs file, and load the icon from a file */ HICON winOverrideIcon(char *res_name, char *res_class, char *wmName) { int i; HICON hicon; for (i = 0; i < pref.iconItems; i++) { if ((res_name && !strcmp(pref.icon[i].match, res_name)) || (res_class && !strcmp(pref.icon[i].match, res_class)) || (wmName && strstr(wmName, pref.icon[i].match))) { if (pref.icon[i].hicon) return pref.icon[i].hicon; hicon = LoadImageComma(pref.icon[i].iconFile, 0, 0, LR_DEFAULTSIZE); if (hicon == NULL) ErrorF("winOverrideIcon: LoadImageComma(%s) failed\n", pref.icon[i].iconFile); pref.icon[i].hicon = hicon; return hicon; } } /* Didn't find the icon, fail gracefully */ return 0; }
/* * Check for and return an overridden default ICON specified in the prefs */ HICON winOverrideDefaultIcon(int size) { HICON hicon; if (pref.defaultIconName[0]) { hicon = LoadImageComma(pref.defaultIconName, size, size, 0); if (hicon == NULL) ErrorF("winOverrideDefaultIcon: LoadImageComma(%s) failed\n", pref.defaultIconName); return hicon; } return 0; }
/* * Check for a match of the window class to one specified in the * ICONS{} section in the prefs file, and load the icon from a file */ HICON winOverrideIcon (unsigned long longWin) { WindowPtr pWin = (WindowPtr) longWin; char *res_name, *res_class; int i; HICON hicon; char *wmName; if (pWin==NULL) return 0; /* If we can't find the class, we can't override from default! */ if (!winMultiWindowGetClassHint (pWin, &res_name, &res_class)) return 0; winMultiWindowGetWMName (pWin, &wmName); for (i=0; i<pref.iconItems; i++) { if (!strcmp(pref.icon[i].match, res_name) || !strcmp(pref.icon[i].match, res_class) || (wmName && strstr(wmName, pref.icon[i].match))) { free (res_name); free (res_class); free(wmName); if (pref.icon[i].hicon) return pref.icon[i].hicon; hicon = LoadImageComma (pref.icon[i].iconFile, 0, 0, LR_DEFAULTSIZE); if (hicon==NULL) ErrorF ("winOverrideIcon: LoadImageComma(%s) failed\n", pref.icon[i].iconFile); pref.icon[i].hicon = hicon; return hicon; } } /* Didn't find the icon, fail gracefully */ free (res_name); free (res_class); free(wmName); return 0; }