1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-19 20:38:08 +01:00

New function set_icon_image_from_image

The new function set_icon_image_from_image() sets the icon image using
a image provided as argument.

This function will be used to avoid call wIconUpdate() with the image
argument, doing the code easier and faster.

This patch calls unset_icon_image(), to free the icon image, to avoid
lost memory. After this patch, in winspector.c, the wIconUpdate() call
don't free the memory before update it.
This commit is contained in:
Rodolfo García Peñas (kix)
2013-04-08 19:40:44 +02:00
committed by Carlos R. Mafra
parent 389a0a252c
commit c088aba057
3 changed files with 30 additions and 5 deletions

View File

@@ -564,6 +564,17 @@ static void unset_icon_image(WIcon *icon)
} }
} }
void set_icon_image_from_image(WIcon *icon, RImage *image)
{
if (!icon)
return;
unset_icon_image(icon);
icon->file_image = NULL;
icon->file_image = image;
}
void wIconUpdate(WIcon *icon, RImage *image) void wIconUpdate(WIcon *icon, RImage *image)
{ {
WWindow *wwin = NULL; WWindow *wwin = NULL;

View File

@@ -73,5 +73,6 @@ char *wIconStore(WIcon *icon);
char *get_name_for_instance_class(char *wm_instance, char *wm_class); char *get_name_for_instance_class(char *wm_instance, char *wm_class);
void wIconSetHighlited(WIcon *icon, Bool flag); void wIconSetHighlited(WIcon *icon, Bool flag);
void set_icon_image_from_image(WIcon *icon, RImage *image);
#endif /* WMICON_H_ */ #endif /* WMICON_H_ */

View File

@@ -763,14 +763,27 @@ static void applySettings(WMButton *button, InspectorPanel *panel)
* the icon text box has an icon path */ * the icon text box has an icon path */
if (!WFLAGP(wwin, always_user_icon)) { if (!WFLAGP(wwin, always_user_icon)) {
/* Change App Icon image, using the icon provided by the client */ /* Change App Icon image, using the icon provided by the client */
if (wapp->app_icon) if (wapp->app_icon) {
wIconUpdate(wapp->app_icon->icon, RImage *image = get_rimage_icon_from_wm_hints(wapp->app_icon->icon);
get_rimage_icon_from_wm_hints(wapp->app_icon->icon)); if (image) {
set_icon_image_from_image(wapp->app_icon->icon, image);
update_icon_pixmap(wapp->app_icon->icon);
} else {
wIconUpdate(wapp->app_icon->icon, NULL);
}
}
/* Change icon image if the app is minimized, /* Change icon image if the app is minimized,
* using the icon provided by the client */ * using the icon provided by the client */
if (wwin->icon) if (wwin->icon) {
wIconUpdate(wwin->icon, get_rimage_icon_from_wm_hints(wwin->icon)); RImage *image = get_rimage_icon_from_wm_hints(wwin->icon);
if (image) {
set_icon_image_from_image(wwin->icon, image);
update_icon_pixmap(wwin->icon);
} else {
wIconUpdate(wwin->icon, NULL);
}
}
} else { } else {
/* Change App Icon image */ /* Change App Icon image */
if (wapp->app_icon) if (wapp->app_icon)