diff options
-rw-r--r-- | bindings/python/appindicator.defs | 5 | ||||
-rw-r--r-- | debian/changelog | 10 | ||||
-rw-r--r-- | src/indicator-application.c | 7 | ||||
-rw-r--r-- | src/libappindicator/app-indicator.c | 34 |
4 files changed, 50 insertions, 6 deletions
diff --git a/bindings/python/appindicator.defs b/bindings/python/appindicator.defs index 4498465..98abe4c 100644 --- a/bindings/python/appindicator.defs +++ b/bindings/python/appindicator.defs @@ -41,14 +41,15 @@ (return-type "GType") ) -(define-function app_indicator_new - (c-name "app_indicator_new") +(define-function app_indicator_new_with_path + (c-name "app_indicator_new_with_path") (is-constructor-of "AppIndicator") (return-type "AppIndicator*") (parameters '("const-gchar*" "id") '("const-gchar*" "icon_name") '("AppIndicatorCategory" "category") + '("const-gchar*" "icon_path" (null-ok) (default "NULL")) ) ) diff --git a/debian/changelog b/debian/changelog index 650ed07..4da451a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +indicator-application (0.0.18-0ubuntu2~ppa1) UNRELEASED; urgency=low + + * Upstream Merge + * Setup the icons to use the -panel variants even when falling + back to status icons. (LP: #547072) + * Change python bindings to use _with_path so that they can set + the icon path. (LP: #527061) + + -- Ted Gould <ted@ubuntu.com> Tue, 30 Mar 2010 14:19:47 -0500 + indicator-application (0.0.18-0ubuntu1) lucid; urgency=low * Upstream Release 0.0.18 diff --git a/src/indicator-application.c b/src/indicator-application.c index b681a24..16c3a9f 100644 --- a/src/indicator-application.c +++ b/src/indicator-application.c @@ -447,7 +447,12 @@ application_added (DBusGProxy * proxy, const gchar * iconname, gint position, co /* We make a long name using the suffix, and if that icon is available we want to use it. Otherwise we'll just use the name we were given. */ - gchar * longname = g_strdup_printf("%s-%s", iconname, PANEL_ICON_SUFFIX); + gchar * longname = NULL; + if (!g_str_has_suffix(iconname, PANEL_ICON_SUFFIX)) { + longname = g_strdup_printf("%s-%s", iconname, PANEL_ICON_SUFFIX); + } else { + longname = g_strdup(iconname); + } app->entry.image = indicator_image_helper(longname); g_free(longname); diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c index 6cb49b9..4076334 100644 --- a/src/libappindicator/app-indicator.c +++ b/src/libappindicator/app-indicator.c @@ -43,6 +43,8 @@ License version 3 and version 2.1 along with this program. If not, see #include "dbus-shared.h" +#define PANEL_ICON_SUFFIX "panel" + /** AppIndicatorPrivate: @id: The ID of the indicator. Maps to AppIndicator::id. @@ -140,6 +142,7 @@ static void status_icon_status_wrapper (AppIndicator * self, const gchar * statu static void status_icon_changes (AppIndicator * self, gpointer data); static void status_icon_activate (GtkStatusIcon * icon, gpointer data); static void unfallback (AppIndicator * self, GtkStatusIcon * status_icon); +static gchar * append_panel_icon_suffix (const gchar * icon_name); static void watcher_proxy_destroyed (GObject * object, gpointer data); static void client_menu_changed (GtkWidget *widget, GtkWidget *child, AppIndicator *indicator); static void submenu_changed (GtkWidget *widget, GtkWidget *child, gpointer data); @@ -455,6 +458,7 @@ app_indicator_set_property (GObject * object, guint prop_id, const GValue * valu { AppIndicator *self = APP_INDICATOR (object); AppIndicatorPrivate *priv = self->priv; + gchar *long_name; const gchar *instr; GEnumValue *enum_val; @@ -505,7 +509,8 @@ app_indicator_set_property (GObject * object, guint prop_id, const GValue * valu if (priv->icon_name) g_free (priv->icon_name); - priv->icon_name = g_strdup (instr); + long_name = append_panel_icon_suffix (instr); + priv->icon_name = long_name; g_signal_emit (self, signals[NEW_ICON], 0, TRUE); } @@ -922,6 +927,23 @@ unfallback (AppIndicator * self, GtkStatusIcon * status_icon) return; } +/* A helper function that appends PANEL_ICON_SUFFIX to the given icon name + if it's missing. */ +static gchar * +append_panel_icon_suffix (const gchar *icon_name) +{ + gchar * long_name = NULL; + + if (!g_str_has_suffix (icon_name, PANEL_ICON_SUFFIX)) { + long_name = + g_strdup_printf("%s-%s", icon_name, PANEL_ICON_SUFFIX); + } else { + long_name = g_strdup (icon_name); + } + + return long_name; +} + /* ************************* */ /* Public Functions */ @@ -1023,6 +1045,8 @@ app_indicator_set_status (AppIndicator *self, AppIndicatorStatus status) void app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name) { + gchar *long_name; + g_return_if_fail (IS_APP_INDICATOR (self)); g_return_if_fail (icon_name != NULL); @@ -1031,7 +1055,8 @@ app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name) if (self->priv->attention_icon_name) g_free (self->priv->attention_icon_name); - self->priv->attention_icon_name = g_strdup (icon_name); + long_name = append_panel_icon_suffix (icon_name); + self->priv->attention_icon_name = long_name; g_signal_emit (self, signals[NEW_ATTENTION_ICON], 0, TRUE); } @@ -1049,6 +1074,8 @@ app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name) void app_indicator_set_icon (AppIndicator *self, const gchar *icon_name) { + gchar *long_name; + g_return_if_fail (IS_APP_INDICATOR (self)); g_return_if_fail (icon_name != NULL); @@ -1057,7 +1084,8 @@ app_indicator_set_icon (AppIndicator *self, const gchar *icon_name) if (self->priv->icon_name) g_free (self->priv->icon_name); - self->priv->icon_name = g_strdup (icon_name); + long_name = append_panel_icon_suffix (icon_name); + self->priv->icon_name = long_name; g_signal_emit (self, signals[NEW_ICON], 0, TRUE); } |