diff options
author | Ted Gould <ted@gould.cx> | 2011-04-06 11:02:08 -0500 |
---|---|---|
committer | Ted Gould <ted@gould.cx> | 2011-04-06 11:02:08 -0500 |
commit | 3138814a32a91aa0b635ce7059c3a2cd6de860a9 (patch) | |
tree | e0a1f6af07dc8783e25a3acd9dfb7491b0d5a192 /src/app-menu-item.c | |
parent | 84cfe5c355b60b18789eb3dafab2feff762955fd (diff) | |
download | ayatana-indicator-messages-3138814a32a91aa0b635ce7059c3a2cd6de860a9.tar.gz ayatana-indicator-messages-3138814a32a91aa0b635ce7059c3a2cd6de860a9.tar.bz2 ayatana-indicator-messages-3138814a32a91aa0b635ce7059c3a2cd6de860a9.zip |
Create the keyfile for the application icon as well
Diffstat (limited to 'src/app-menu-item.c')
-rw-r--r-- | src/app-menu-item.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/app-menu-item.c b/src/app-menu-item.c index e846914..575ac0a 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -52,6 +52,7 @@ struct _AppMenuItemPrivate gchar * type; GAppInfo * appinfo; + GKeyFile * keyfile; gchar * desktop; guint unreadcount; @@ -129,6 +130,7 @@ app_menu_item_init (AppMenuItem *self) priv->server = NULL; priv->type = NULL; priv->appinfo = NULL; + priv->keyfile = NULL; priv->desktop = NULL; priv->unreadcount = 0; @@ -179,6 +181,16 @@ app_menu_item_dispose (GObject *object) priv->client = NULL; } + if (priv->appinfo != NULL) { + g_object_unref(priv->appinfo); + priv->appinfo = NULL; + } + + if (priv->keyfile != NULL) { + g_object_unref(priv->keyfile); + priv->keyfile = NULL; + } + G_OBJECT_CLASS (app_menu_item_parent_class)->dispose (object); } @@ -192,14 +204,12 @@ app_menu_item_finalize (GObject *object) if (priv->type != NULL) { g_free(priv->type); + priv->type = NULL; } if (priv->desktop != NULL) { g_free(priv->desktop); - } - - if (priv->appinfo != NULL) { - g_object_unref(priv->appinfo); + priv->desktop = NULL; } G_OBJECT_CLASS (app_menu_item_parent_class)->finalize (object); @@ -298,7 +308,7 @@ count_cb (IndicateListener * listener, IndicateListenerServer * server, guint va /* Callback for when we ask the server for the path to it's desktop file. We then turn it into an app structure and start sucking data out of it. - Mostly the name. */ + Mostly the name. And the icon. */ static void desktop_cb (IndicateListener * listener, IndicateListenerServer * server, const gchar * value, gpointer data) { @@ -325,6 +335,9 @@ desktop_cb (IndicateListener * listener, IndicateListenerServer * server, const priv->appinfo = G_APP_INFO(g_desktop_app_info_new_from_filename(value)); g_return_if_fail(priv->appinfo != NULL); + priv->keyfile = g_key_file_new(); + g_key_file_load_from_file(priv->keyfile, value, G_KEY_FILE_NONE, NULL); + priv->desktop = g_strdup(value); dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE); |