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:
committed by
Carlos R. Mafra
parent
389a0a252c
commit
c088aba057
11
src/icon.c
11
src/icon.c
@@ -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)
|
||||
{
|
||||
WWindow *wwin = NULL;
|
||||
|
||||
@@ -73,5 +73,6 @@ char *wIconStore(WIcon *icon);
|
||||
char *get_name_for_instance_class(char *wm_instance, char *wm_class);
|
||||
|
||||
void wIconSetHighlited(WIcon *icon, Bool flag);
|
||||
void set_icon_image_from_image(WIcon *icon, RImage *image);
|
||||
|
||||
#endif /* WMICON_H_ */
|
||||
|
||||
@@ -763,14 +763,27 @@ static void applySettings(WMButton *button, InspectorPanel *panel)
|
||||
* the icon text box has an icon path */
|
||||
if (!WFLAGP(wwin, always_user_icon)) {
|
||||
/* Change App Icon image, using the icon provided by the client */
|
||||
if (wapp->app_icon)
|
||||
wIconUpdate(wapp->app_icon->icon,
|
||||
get_rimage_icon_from_wm_hints(wapp->app_icon->icon));
|
||||
if (wapp->app_icon) {
|
||||
RImage *image = 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,
|
||||
* using the icon provided by the client */
|
||||
if (wwin->icon)
|
||||
wIconUpdate(wwin->icon, get_rimage_icon_from_wm_hints(wwin->icon));
|
||||
if (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 {
|
||||
/* Change App Icon image */
|
||||
if (wapp->app_icon)
|
||||
|
||||
Reference in New Issue
Block a user