mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +01:00
Icon: Make icon_create_for_* be more similar
The contents for searching the icon in wAppIconCreateForDock() are moved to icon_create_for_dock(). Now wAppIconCreateForDock() and wAppIconCreate() do the same work and icon_create_for_dock() and icon_create_for_wwindow() do the same work too. The procedure to create the icon is similar in both functions. Now wAppIconCreateForDock, needs more arguments (command, instance and class).
This commit is contained in:
committed by
Carlos R. Mafra
parent
97f74548ef
commit
727b25d947
@@ -109,7 +109,6 @@ void wApplicationExtractDirPackIcon(WScreen * scr, char *path, char *wm_instance
|
|||||||
WAppIcon *wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance, char *wm_class, int tile)
|
WAppIcon *wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance, char *wm_class, int tile)
|
||||||
{
|
{
|
||||||
WAppIcon *aicon;
|
WAppIcon *aicon;
|
||||||
char *path;
|
|
||||||
|
|
||||||
aicon = wmalloc(sizeof(WAppIcon));
|
aicon = wmalloc(sizeof(WAppIcon));
|
||||||
wretain(aicon);
|
wretain(aicon);
|
||||||
@@ -127,12 +126,8 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance,
|
|||||||
if (wm_instance)
|
if (wm_instance)
|
||||||
aicon->wm_instance = wstrdup(wm_instance);
|
aicon->wm_instance = wstrdup(wm_instance);
|
||||||
|
|
||||||
/* Search the icon using instance and class, without default icon */
|
aicon->icon = icon_create_for_dock(scr, command, wm_instance, wm_class, tile);
|
||||||
path = get_default_icon_filename(scr, wm_instance, wm_class, command, False);
|
|
||||||
|
|
||||||
aicon->icon = icon_create_for_dock(scr, path, tile);
|
|
||||||
if (path)
|
|
||||||
wfree(path);
|
|
||||||
#ifdef XDND
|
#ifdef XDND
|
||||||
wXDNDMakeAwareness(aicon->icon->core->window);
|
wXDNDMakeAwareness(aicon->icon->core->window);
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
30
src/icon.c
30
src/icon.c
@@ -127,38 +127,44 @@ WIcon *icon_create_for_wwindow(WWindow *wwin)
|
|||||||
icon->show_title = 1;
|
icon->show_title = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Get the application icon, default included */
|
|
||||||
file = get_default_icon_filename(scr, wwin->wm_instance, wwin->wm_class, NULL, True);
|
|
||||||
if (file) {
|
|
||||||
icon->file = wstrdup(file);
|
|
||||||
icon->file_image = get_default_icon_rimage(scr, icon->file, wPreferences.icon_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
icon->icon_name = wNETWMGetIconName(wwin->client_win);
|
icon->icon_name = wNETWMGetIconName(wwin->client_win);
|
||||||
if (icon->icon_name)
|
if (icon->icon_name)
|
||||||
wwin->flags.net_has_icon_title = 1;
|
wwin->flags.net_has_icon_title = 1;
|
||||||
else
|
else
|
||||||
wGetIconName(dpy, wwin->client_win, &icon->icon_name);
|
wGetIconName(dpy, wwin->client_win, &icon->icon_name);
|
||||||
|
|
||||||
|
/* Get the application icon, default included */
|
||||||
|
file = get_default_icon_filename(scr, wwin->wm_instance, wwin->wm_class, NULL, True);
|
||||||
|
if (file) {
|
||||||
|
icon->file = wstrdup(file);
|
||||||
|
icon->file_image = get_default_icon_rimage(scr, icon->file, wPreferences.icon_size);
|
||||||
|
wfree(file);
|
||||||
|
}
|
||||||
|
|
||||||
icon->tile_type = TILE_NORMAL;
|
icon->tile_type = TILE_NORMAL;
|
||||||
|
|
||||||
wIconUpdate(icon);
|
wIconUpdate(icon);
|
||||||
|
|
||||||
XFlush(dpy);
|
|
||||||
|
|
||||||
WMAddNotificationObserver(appearanceObserver, icon, WNIconAppearanceSettingsChanged, icon);
|
WMAddNotificationObserver(appearanceObserver, icon, WNIconAppearanceSettingsChanged, icon);
|
||||||
WMAddNotificationObserver(tileObserver, icon, WNIconTileSettingsChanged, icon);
|
WMAddNotificationObserver(tileObserver, icon, WNIconTileSettingsChanged, icon);
|
||||||
|
|
||||||
return icon;
|
return icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
WIcon *icon_create_for_dock(WScreen *scr, char *iconfile, int tile)
|
WIcon *icon_create_for_dock(WScreen *scr, char *command, char *wm_instance, char *wm_class, int tile)
|
||||||
{
|
{
|
||||||
WIcon *icon;
|
WIcon *icon;
|
||||||
|
char *file = NULL;
|
||||||
|
|
||||||
icon = icon_create_core(scr, 0, 0);
|
icon = icon_create_core(scr, 0, 0);
|
||||||
|
|
||||||
icon->file_image = get_default_icon_rimage(scr, iconfile, wPreferences.icon_size);
|
/* Search the icon using instance and class, without default icon */
|
||||||
icon->file = wstrdup(iconfile);
|
file = get_default_icon_filename(scr, wm_instance, wm_class, command, False);
|
||||||
|
if (file) {
|
||||||
|
icon->file = wstrdup(file);
|
||||||
|
icon->file_image = get_default_icon_rimage(scr, icon->file, wPreferences.icon_size);
|
||||||
|
wfree(file);
|
||||||
|
}
|
||||||
|
|
||||||
icon->tile_type = tile;
|
icon->tile_type = tile;
|
||||||
|
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ typedef struct WIcon {
|
|||||||
* color */
|
* color */
|
||||||
} WIcon;
|
} WIcon;
|
||||||
|
|
||||||
WIcon *icon_create_for_dock(WScreen *scr, char *iconfile, int tile);
|
WIcon *icon_create_for_dock(WScreen *scr, char *command, char *wm_instance, char *wm_class, int tile);
|
||||||
WIcon *icon_create_for_wwindow(WWindow *wwin);
|
WIcon *icon_create_for_wwindow(WWindow *wwin);
|
||||||
|
|
||||||
void wIconDestroy(WIcon *icon);
|
void wIconDestroy(WIcon *icon);
|
||||||
|
|||||||
Reference in New Issue
Block a user