aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/app-menu-item.c6
-rw-r--r--src/dbus-data.h4
-rw-r--r--src/indicator-messages.c35
-rw-r--r--src/launcher-menu-item.c21
-rw-r--r--src/launcher-menu-item.h1
5 files changed, 25 insertions, 42 deletions
diff --git a/src/app-menu-item.c b/src/app-menu-item.c
index 2fb24f6..a37daf4 100644
--- a/src/app-menu-item.c
+++ b/src/app-menu-item.c
@@ -307,6 +307,12 @@ desktop_cb (IndicateListener * listener, IndicateListenerServer * server, gchar
priv->desktop = g_strdup(value);
update_label(self);
+
+ GIcon * icon = g_app_info_get_icon(priv->appinfo);
+ gchar * iconstr = g_icon_to_string(icon);
+ dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_ICON_NAME, iconstr);
+ g_free(iconstr);
+
g_signal_emit(G_OBJECT(self), signals[NAME_CHANGED], 0, app_menu_item_get_name(self), TRUE);
return;
diff --git a/src/dbus-data.h b/src/dbus-data.h
index 9f53f94..e3d9fd5 100644
--- a/src/dbus-data.h
+++ b/src/dbus-data.h
@@ -8,10 +8,6 @@
#define INDICATOR_MESSAGES_DBUS_SERVICE_OBJECT "/org/ayatana/indicator/messages/service"
#define INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE "org.ayatana.indicator.messages.service"
-#define LAUNCHER_MENUITEM_TYPE "launcher-item"
-#define LAUNCHER_MENUITEM_PROP_APP_NAME "application-name"
-#define LAUNCHER_MENUITEM_PROP_APP_DESC "application-description"
-
#define APPLICATION_MENUITEM_TYPE "application-item"
#define APPLICATION_MENUITEM_PROP_NAME "app-name"
#define APPLICATION_MENUITEM_PROP_COUNT "app-count"
diff --git a/src/indicator-messages.c b/src/indicator-messages.c
index acb2e68..3f533a5 100644
--- a/src/indicator-messages.c
+++ b/src/indicator-messages.c
@@ -337,40 +337,6 @@ new_indicator_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm
return TRUE;
}
-static gboolean
-new_launcher_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client)
-{
- g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE);
- g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
- /* Note: not checking parent, it's reasonable for it to be NULL */
-
- GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_menu_item_new());
-
- GtkWidget * vbox = gtk_vbox_new(TRUE, 2);
-
- GtkWidget * app_label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, LAUNCHER_MENUITEM_PROP_APP_NAME));
- gtk_misc_set_alignment(GTK_MISC(app_label), 0.0, 0.5);
- GtkWidget * dsc_label = gtk_label_new("");
- gtk_misc_set_alignment(GTK_MISC(dsc_label), 0.0, 0.5);
- gtk_label_set_ellipsize(GTK_LABEL(dsc_label), PANGO_ELLIPSIZE_END);
- gtk_widget_set_size_request(dsc_label, 200, -1);
- gchar * markup = g_markup_printf_escaped("<span font-size=\"smaller\">%s</span>", dbusmenu_menuitem_property_get(newitem, LAUNCHER_MENUITEM_PROP_APP_DESC));
- gtk_label_set_markup(GTK_LABEL(dsc_label), markup);
- g_free(markup);
-
- gtk_box_pack_start(GTK_BOX(vbox), app_label, FALSE, FALSE, 0);
- gtk_widget_show(app_label);
- gtk_box_pack_start(GTK_BOX(vbox), dsc_label, FALSE, FALSE, 0);
- gtk_widget_show(dsc_label);
-
- gtk_container_add(GTK_CONTAINER(gmi), GTK_WIDGET(vbox));
- gtk_widget_show(GTK_WIDGET(vbox));
-
- dbusmenu_gtkclient_newitem_base(DBUSMENU_GTKCLIENT(client), newitem, gmi, parent);
-
- return TRUE;
-}
-
static GtkImage *
get_icon (IndicatorObject * io)
{
@@ -409,7 +375,6 @@ get_menu (IndicatorObject * io)
DbusmenuGtkMenu * menu = dbusmenu_gtkmenu_new(INDICATOR_MESSAGES_DBUS_NAME, INDICATOR_MESSAGES_DBUS_OBJECT);
DbusmenuGtkClient * client = dbusmenu_gtkmenu_get_client(menu);
- dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), LAUNCHER_MENUITEM_TYPE, new_launcher_item);
dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), INDICATOR_MENUITEM_TYPE, new_indicator_item);
return GTK_MENU(menu);
diff --git a/src/launcher-menu-item.c b/src/launcher-menu-item.c
index d6386a3..07b0546 100644
--- a/src/launcher-menu-item.c
+++ b/src/launcher-menu-item.c
@@ -161,9 +161,10 @@ launcher_menu_item_new (const gchar * desktop_file)
/* Set the appropriate values on this menu item based on the
app info that we've parsed */
g_debug("\tName: %s", launcher_menu_item_get_name(self));
- dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_TYPE, LAUNCHER_MENUITEM_TYPE);
- dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), LAUNCHER_MENUITEM_PROP_APP_NAME, launcher_menu_item_get_name(self));
- dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), LAUNCHER_MENUITEM_PROP_APP_DESC, launcher_menu_item_get_description(self));
+ dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_LABEL, launcher_menu_item_get_name(self));
+ gchar * iconstr = launcher_menu_item_get_icon(self);
+ dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_ICON_NAME, iconstr);
+ g_free(iconstr);
dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE);
g_signal_connect(G_OBJECT(self), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(activate_cb), NULL);
@@ -223,6 +224,20 @@ nick_activate_cb (LauncherMenuItem * self, guint timestamp, gpointer data)
return;
}
+gchar *
+launcher_menu_item_get_icon (LauncherMenuItem * appitem)
+{
+ LauncherMenuItemPrivate * priv = LAUNCHER_MENU_ITEM_GET_PRIVATE(appitem);
+
+ if (priv->appinfo == NULL) {
+ return NULL;
+ } else {
+ GIcon * icon = g_app_info_get_icon(priv->appinfo);
+ gchar * iconstr = g_icon_to_string(icon);
+ return iconstr;
+ }
+}
+
/* When the menu item is clicked on it tries to launch
the application that is represented by the desktop file */
static void
diff --git a/src/launcher-menu-item.h b/src/launcher-menu-item.h
index 9aed0a7..ace1f85 100644
--- a/src/launcher-menu-item.h
+++ b/src/launcher-menu-item.h
@@ -57,6 +57,7 @@ LauncherMenuItem * launcher_menu_item_new (const gchar * desktop_file);
const gchar * launcher_menu_item_get_name (LauncherMenuItem * appitem);
const gchar * launcher_menu_item_get_desktop (LauncherMenuItem * launchitem);
const gchar * launcher_menu_item_get_description (LauncherMenuItem * li);
+gchar * launcher_menu_item_get_icon (LauncherMenuItem * appitem);
void launcher_menu_item_set_eclipsed (LauncherMenuItem * li, gboolean eclipsed);
gboolean launcher_menu_item_get_eclipsed (LauncherMenuItem * li);
GList * launcher_menu_item_get_items (LauncherMenuItem * li);