discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=f6b3c1533ee7fe93898fca90d8e1fc571eecd810

commit f6b3c1533ee7fe93898fca90d8e1fc571eecd810
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Feb 23 17:22:51 2015 -0500

    fix appindicator icon loading when using IconThemePath key
    
    fix T1888
---
 src/modules/systray/e_mod_notifier_host.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/modules/systray/e_mod_notifier_host.c 
b/src/modules/systray/e_mod_notifier_host.c
index 95b4938..89a3d54 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;
+                    }
                }
           }
      }

-- 


Reply via email to