From 727b25d9473b72eaa580b7ccf8f04fcfe2d75d79 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20=28kix=29?= Date: Tue, 2 Oct 2012 23:22:10 +0200 Subject: [PATCH] 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). --- src/appicon.c | 7 +------ src/icon.c | 28 +++++++++++++++++----------- src/icon.h | 2 +- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/src/appicon.c b/src/appicon.c index 45911b82..a90e35b2 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -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 *aicon; - char *path; aicon = wmalloc(sizeof(WAppIcon)); wretain(aicon); @@ -127,12 +126,8 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance, if (wm_instance) aicon->wm_instance = wstrdup(wm_instance); - /* Search the icon using instance and class, without default icon */ - path = get_default_icon_filename(scr, wm_instance, wm_class, command, False); + aicon->icon = icon_create_for_dock(scr, command, wm_instance, wm_class, tile); - aicon->icon = icon_create_for_dock(scr, path, tile); - if (path) - wfree(path); #ifdef XDND wXDNDMakeAwareness(aicon->icon->core->window); #endif diff --git a/src/icon.c b/src/icon.c index 73592bcb..e950a7d6 100644 --- a/src/icon.c +++ b/src/icon.c @@ -127,38 +127,44 @@ WIcon *icon_create_for_wwindow(WWindow *wwin) icon->show_title = 1; #endif + icon->icon_name = wNETWMGetIconName(wwin->client_win); + if (icon->icon_name) + wwin->flags.net_has_icon_title = 1; + else + 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->icon_name = wNETWMGetIconName(wwin->client_win); - if (icon->icon_name) - wwin->flags.net_has_icon_title = 1; - else - wGetIconName(dpy, wwin->client_win, &icon->icon_name); - icon->tile_type = TILE_NORMAL; wIconUpdate(icon); - XFlush(dpy); - WMAddNotificationObserver(appearanceObserver, icon, WNIconAppearanceSettingsChanged, icon); WMAddNotificationObserver(tileObserver, icon, WNIconTileSettingsChanged, 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; + char *file = NULL; icon = icon_create_core(scr, 0, 0); - icon->file_image = get_default_icon_rimage(scr, iconfile, wPreferences.icon_size); - icon->file = wstrdup(iconfile); + /* Search the icon using instance and class, without default icon */ + 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; diff --git a/src/icon.h b/src/icon.h index 7de9e504..f0786cbf 100644 --- a/src/icon.h +++ b/src/icon.h @@ -54,7 +54,7 @@ typedef struct WIcon { * color */ } 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); void wIconDestroy(WIcon *icon); -- 2.11.4.GIT