aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-04-01 14:56:09 -0500
committerTed Gould <ted@gould.cx>2010-04-01 14:56:09 -0500
commit5055af870eadff1cdd0f472298047514e25b3af0 (patch)
treebecc17aa051eb47e7a24f2191e67ef4e5ab2e16d
parentd3026a23f611f1790d8c9dc2e49a50217f1fe5aa (diff)
parent14aebe465a014d42381f73b8dea3386357d14098 (diff)
downloadlibayatana-appindicator-5055af870eadff1cdd0f472298047514e25b3af0.tar.gz
libayatana-appindicator-5055af870eadff1cdd0f472298047514e25b3af0.tar.bz2
libayatana-appindicator-5055af870eadff1cdd0f472298047514e25b3af0.zip
Don't store the panel suffix, just add it for the fallback icons.
-rw-r--r--src/libappindicator/app-indicator.c53
-rw-r--r--src/libappindicator/app-indicator.h3
2 files changed, 24 insertions, 32 deletions
diff --git a/src/libappindicator/app-indicator.c b/src/libappindicator/app-indicator.c
index 4076334..11a9b1c 100644
--- a/src/libappindicator/app-indicator.c
+++ b/src/libappindicator/app-indicator.c
@@ -458,8 +458,6 @@ 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;
switch (prop_id) {
@@ -502,26 +500,15 @@ app_indicator_set_property (GObject * object, guint prop_id, const GValue * valu
break;
case PROP_ICON_NAME:
- instr = g_value_get_string (value);
-
- if (g_strcmp0 (priv->icon_name, instr) != 0)
- {
- if (priv->icon_name)
- g_free (priv->icon_name);
-
- long_name = append_panel_icon_suffix (instr);
- priv->icon_name = long_name;
-
- g_signal_emit (self, signals[NEW_ICON], 0, TRUE);
- }
-
+ app_indicator_set_icon (APP_INDICATOR (object),
+ g_value_get_string (value));
check_connect (self);
break;
case PROP_ATTENTION_ICON_NAME:
app_indicator_set_attention_icon (APP_INDICATOR (object),
g_value_get_string (value));
- break;
+ break;
case PROP_ICON_THEME_PATH:
if (priv->icon_path != NULL) {
@@ -867,30 +854,36 @@ status_icon_changes (AppIndicator * self, gpointer data)
{
GtkStatusIcon * icon = GTK_STATUS_ICON(data);
GIcon *themed_icon = NULL;
+ gchar *longname = NULL;
switch (app_indicator_get_status(self)) {
case APP_INDICATOR_STATUS_PASSIVE:
- themed_icon =
- g_themed_icon_new_with_default_fallbacks (app_indicator_get_icon (self));
+ 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);
break;
case APP_INDICATOR_STATUS_ACTIVE:
- themed_icon =
- g_themed_icon_new_with_default_fallbacks (app_indicator_get_icon (self));
+ 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:
- themed_icon =
- g_themed_icon_new_with_default_fallbacks (app_indicator_get_attention_icon (self));
+ 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;
};
- if (themed_icon)
+ if (themed_icon) {
g_object_unref (themed_icon);
+ }
+
+ if (longname) {
+ g_free(longname);
+ }
return;
}
@@ -1045,8 +1038,6 @@ 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);
@@ -1055,11 +1046,12 @@ app_indicator_set_attention_icon (AppIndicator *self, const gchar *icon_name)
if (self->priv->attention_icon_name)
g_free (self->priv->attention_icon_name);
- long_name = append_panel_icon_suffix (icon_name);
- self->priv->attention_icon_name = long_name;
+ self->priv->attention_icon_name = g_strdup(icon_name);
g_signal_emit (self, signals[NEW_ATTENTION_ICON], 0, TRUE);
}
+
+ return;
}
/**
@@ -1074,8 +1066,6 @@ 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);
@@ -1084,11 +1074,12 @@ app_indicator_set_icon (AppIndicator *self, const gchar *icon_name)
if (self->priv->icon_name)
g_free (self->priv->icon_name);
- long_name = append_panel_icon_suffix (icon_name);
- self->priv->icon_name = long_name;
+ self->priv->icon_name = g_strdup(icon_name);
g_signal_emit (self, signals[NEW_ICON], 0, TRUE);
}
+
+ return;
}
static void
diff --git a/src/libappindicator/app-indicator.h b/src/libappindicator/app-indicator.h
index 03656ce..d490c8c 100644
--- a/src/libappindicator/app-indicator.h
+++ b/src/libappindicator/app-indicator.h
@@ -189,6 +189,7 @@ struct _AppIndicatorClass {
/**
AppIndicator:
@parent: Parent object.
+ @priv: Internal data.
A application indicator represents the values that are needed to show a
unique status in the panel for an application. In general, applications
@@ -198,7 +199,7 @@ struct _AppIndicatorClass {
struct _AppIndicator {
GObject parent;
- AppIndicatorPrivate *priv;
+ AppIndicatorPrivate *priv;
};
/* GObject Stuff */