diff -Nur -x '*.orig' -x '*~' indicator-application-0.2.9//src/app-indicator.c indicator-application-0.2.9.new//src/app-indicator.c --- indicator-application-0.2.9//src/app-indicator.c 2011-11-18 14:32:25.000000000 +0800 +++ indicator-application-0.2.9.new//src/app-indicator.c 2011-11-18 14:32:55.000000000 +0800 @@ -1188,25 +1188,24 @@ { GtkStatusIcon * icon = GTK_STATUS_ICON(data); GIcon *themed_icon = NULL; - gchar *longname = NULL; + gchar *longname = (gchar*) app_indicator_get_icon(self); - switch (app_indicator_get_status(self)) { - case APP_INDICATOR_STATUS_PASSIVE: + if (longname != NULL && longname[0] == '/') { + gtk_status_icon_set_from_file(icon, longname); + } else { longname = append_panel_icon_suffix(app_indicator_get_icon(self)); themed_icon = g_themed_icon_new_with_default_fallbacks (longname); - gtk_status_icon_set_visible(icon, FALSE); gtk_status_icon_set_from_gicon(icon, themed_icon); + } + + switch (app_indicator_get_status(self)) { + case APP_INDICATOR_STATUS_PASSIVE: + gtk_status_icon_set_visible(icon, FALSE); break; case APP_INDICATOR_STATUS_ACTIVE: - longname = append_panel_icon_suffix(app_indicator_get_icon(self)); - themed_icon = g_themed_icon_new_with_default_fallbacks (longname); - gtk_status_icon_set_from_gicon(icon, themed_icon); gtk_status_icon_set_visible(icon, TRUE); break; case APP_INDICATOR_STATUS_ATTENTION: - longname = append_panel_icon_suffix(app_indicator_get_attention_icon(self)); - themed_icon = g_themed_icon_new_with_default_fallbacks (longname); - gtk_status_icon_set_from_gicon(icon, themed_icon); gtk_status_icon_set_visible(icon, TRUE); break; };