From: Rodolfo García Peñas (kix) Date: Wed, 31 Oct 2012 21:44:19 +0000 (+0100) Subject: wIconChangeImageFile change image only if found X-Git-Tag: wmaker-0.95.4~75 X-Git-Url: https://repo.or.cz/w/wmaker-crm.git/commitdiff_plain/5728b6436ddef73e2995548b4b2ec061f7567a15 wIconChangeImageFile change image only if found This patch changes the behavior of wIconChangeImageFile. Before apply this patch the behavior was: The image (file_image) is set to NULL, then the function tried to find a new image. If the new image was not found, the variable file_image contains NULL when the function returns, and the return code was 1. With this patch the image is changed only if a new image is found. --- diff --git a/src/icon.c b/src/icon.c index 0b95df25..f693e77f 100644 --- a/src/icon.c +++ b/src/icon.c @@ -373,31 +373,39 @@ Bool wIconChangeImageFile(WIcon *icon, char *file) { WScreen *scr = icon->core->screen_ptr; char *path; + RImage *image = NULL; int error = 0; + /* If no new image, don't do nothing */ if (!file) return True; - if (icon->file_image) { - RReleaseImage(icon->file_image); - icon->file_image = NULL; - } - + /* Find the new image */ path = FindImage(wPreferences.icon_path, file); - if (path) { - icon->file_image = get_rimage_from_file(scr, path, wPreferences.icon_size); + if (path) + image = get_rimage_from_file(scr, path, wPreferences.icon_size); + else + error = 1; + + /* New image! */ + if (!error && image) { + /* Remove the old one */ if (icon->file_image) { - icon->file = wstrdup(path); - wIconUpdate(icon); - } else { - error = 1; + RReleaseImage(icon->file_image); + icon->file_image = NULL; } - wfree(path); + /* Set the new image */ + icon->file_image = image; + icon->file = wstrdup(path); + wIconUpdate(icon); } else { error = 1; } + if (path) + wfree(path); + return !error; }