From: Mike Blumenkrantz Date: Mon, 23 Feb 2015 22:22:51 +0000 (-0500) Subject: fix appindicator icon loading when using IconThemePath key X-Git-Tag: submit/tizen/20150311.085739^2~47 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f6b3c1533ee7fe93898fca90d8e1fc571eecd810;p=platform%2Fupstream%2Fenlightenment.git fix appindicator icon loading when using IconThemePath key fix T1888 --- diff --git a/src/modules/systray/e_mod_notifier_host.c b/src/modules/systray/e_mod_notifier_host.c index 95b4938903..89a3d54014 100644 --- a/src/modules/systray/e_mod_notifier_host.c +++ b/src/modules/systray/e_mod_notifier_host.c @@ -66,7 +66,7 @@ systray_notifier_item_free(Notifier_Item *item) static void image_load(const char *name, const char *path, Evas_Object *image) { - const char *exts[] = + const char **ext, *exts[] = { ".png", ".jpg", @@ -75,16 +75,24 @@ image_load(const char *name, const char *path, Evas_Object *image) if (path && path[0]) { char buf[PATH_MAX]; + const char **theme, *themes[] = { e_config->icon_theme, "hicolor", NULL }; - snprintf(buf, sizeof(buf), "%s/%s", path, name); - if (!e_icon_file_set(image, buf)) + for (theme = themes; *theme; theme++) { - const char **ext; + struct stat st; + unsigned int *i, sizes[] = { 24, 32, 48, 64, 128, 256, 0 }; - for (ext = exts; *ext; ext++) + snprintf(buf, sizeof(buf), "%s/%s", path, *theme); + if (stat(buf, &st)) continue; + for (i = sizes; *i; i++) { - snprintf(buf, sizeof(buf), "%s/%s%s", path, name, *ext); - if (e_icon_file_set(image, buf)) return; + snprintf(buf, sizeof(buf), "%s/%s/%ux%u", path, *theme, *i, *i); + if (stat(buf, &st)) continue; + for (ext = exts; *ext; ext++) + { + snprintf(buf, sizeof(buf), "%s/%s/%ux%u/apps/%s%s", path, *theme, *i, *i, name, *ext); + if (e_icon_file_set(image, buf)) return; + } } } }