diff options
-rw-r--r-- | src/app-menu-item.c | 6 | ||||
-rw-r--r-- | src/dbus-data.h | 4 | ||||
-rw-r--r-- | src/indicator-messages.c | 35 | ||||
-rw-r--r-- | src/launcher-menu-item.c | 21 | ||||
-rw-r--r-- | src/launcher-menu-item.h | 1 |
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); |