aboutsummaryrefslogtreecommitdiff
path: root/src/app-menu-item.c
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2011-04-06 11:02:08 -0500
committerTed Gould <ted@gould.cx>2011-04-06 11:02:08 -0500
commit3138814a32a91aa0b635ce7059c3a2cd6de860a9 (patch)
treee0a1f6af07dc8783e25a3acd9dfb7491b0d5a192 /src/app-menu-item.c
parent84cfe5c355b60b18789eb3dafab2feff762955fd (diff)
downloadayatana-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.c23
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);