From adf2ffddfbf1837ec9db20d2648786e57565719e Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 24 Aug 2010 14:59:07 -0500 Subject: Set the image menu icon --- src/indicator-messages.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/indicator-messages.c b/src/indicator-messages.c index df2d972..dcb57dc 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -418,7 +418,7 @@ new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbu GtkWidget * icon = gtk_image_new_from_icon_name(dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_ICON), GTK_ICON_SIZE_MENU); gtk_widget_set_size_request(icon, width, height); gtk_misc_set_alignment(GTK_MISC(icon), 0.0, 0.5); - gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, padding); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(gmi), icon); gtk_widget_show(icon); /* Application name in a label */ -- cgit v1.2.3 From de84a7600cbe17e38f7fcca07095b105e21e1dea Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 24 Aug 2010 15:00:22 -0500 Subject: Removing the blank menu items --- src/app-menu-item.c | 2 -- src/launcher-menu-item.c | 1 - 2 files changed, 3 deletions(-) diff --git a/src/app-menu-item.c b/src/app-menu-item.c index c276a90..676f03e 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -355,7 +355,6 @@ child_added_cb (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint positio AppMenuItem * self = APP_MENU_ITEM(data); AppMenuItemPrivate * priv = APP_MENU_ITEM_GET_PRIVATE(self); DbusmenuMenuitemProxy * mip = dbusmenu_menuitem_proxy_new(child); - dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(mip), DBUSMENU_MENUITEM_PROP_ICON_NAME, DBUSMENU_MENUITEM_ICON_NAME_BLANK); priv->shortcuts = g_list_insert(priv->shortcuts, mip, position); @@ -456,7 +455,6 @@ root_changed (DbusmenuClient * client, DbusmenuMenuitem * newroot, gpointer data g_debug("\tProcessing %d children", g_list_length(children)); while (children != NULL) { DbusmenuMenuitemProxy * mip = dbusmenu_menuitem_proxy_new(DBUSMENU_MENUITEM(children->data)); - dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(mip), DBUSMENU_MENUITEM_PROP_ICON_NAME, DBUSMENU_MENUITEM_ICON_NAME_BLANK); priv->shortcuts = g_list_append(priv->shortcuts, mip); g_signal_emit(G_OBJECT(self), signals[SHORTCUT_ADDED], 0, mip, TRUE); children = g_list_next(children); diff --git a/src/launcher-menu-item.c b/src/launcher-menu-item.c index 63e5594..5d9de12 100644 --- a/src/launcher-menu-item.c +++ b/src/launcher-menu-item.c @@ -199,7 +199,6 @@ launcher_menu_item_new (const gchar * desktop_file) DbusmenuMenuitem * mi = dbusmenu_menuitem_new(); g_object_set_data(G_OBJECT(mi), NICK_DATA, (gpointer)nicks[i]); - dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_ICON_NAME, DBUSMENU_MENUITEM_ICON_NAME_BLANK); dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_LABEL, indicator_desktop_shortcuts_nick_get_name(priv->ids, nicks[i])); g_signal_connect(G_OBJECT(mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(nick_activate_cb), self); -- cgit v1.2.3 From 422423618105395db6ca9316ea78d58d92d136b4 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 24 Aug 2010 15:06:41 -0500 Subject: Only show the avatar if it is sent --- src/indicator-messages.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/indicator-messages.c b/src/indicator-messages.c index dcb57dc..9039af7 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -489,6 +489,10 @@ indicator_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, i if (resized_pixbuf != pixbuf) { g_object_unref(resized_pixbuf); } + + gtk_widget_show(mi_data->icon); + } else { + gtk_widget_hide(mi_data->icon); } } @@ -550,7 +554,10 @@ new_indicator_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbusm } gtk_misc_set_alignment(GTK_MISC(mi_data->icon), 0.0, 0.5); gtk_box_pack_start(GTK_BOX(hbox), mi_data->icon, FALSE, FALSE, padding); - gtk_widget_show(mi_data->icon); + + if (pixbuf != NULL) { + gtk_widget_show(mi_data->icon); + } /* Label, probably a username, chat room or mailbox name */ mi_data->label = gtk_label_new(dbusmenu_menuitem_property_get(newitem, INDICATOR_MENUITEM_PROP_LABEL)); -- cgit v1.2.3 From a58b07fb80399028e27ee95cc3d1dac848bebe6d Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Tue, 24 Aug 2010 15:24:59 -0500 Subject: Removing some extra code that's not needed and ensuring the icon is always shown. --- src/indicator-messages.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/indicator-messages.c b/src/indicator-messages.c index 9039af7..97220c6 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -405,6 +405,7 @@ static gboolean new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) { GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_image_menu_item_new()); + gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(gmi), TRUE); gint padding = 4; gtk_widget_style_get(GTK_WIDGET(gmi), "horizontal-padding", &padding, NULL); @@ -412,12 +413,7 @@ new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbu GtkWidget * hbox = gtk_hbox_new(FALSE, 0); /* Set the minimum size, we always want it to take space */ - gint width, height; - gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height); - GtkWidget * icon = gtk_image_new_from_icon_name(dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_ICON), GTK_ICON_SIZE_MENU); - gtk_widget_set_size_request(icon, width, height); - gtk_misc_set_alignment(GTK_MISC(icon), 0.0, 0.5); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(gmi), icon); gtk_widget_show(icon); -- cgit v1.2.3 From e32c731f5ef66f6be62d6fc839548356f4665e35 Mon Sep 17 00:00:00 2001 From: David Barth Date: Thu, 26 Aug 2010 21:31:18 +0200 Subject: adjusted position of the left icons and triangle overlay --- src/app-menu-item.c | 1 + src/dbus-data.h | 5 +++-- src/indicator-messages.c | 26 +++++++++++++++++++++++--- src/launcher-menu-item.c | 1 + src/messages-service.c | 1 + 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/src/app-menu-item.c b/src/app-menu-item.c index 676f03e..0b0588e 100644 --- a/src/app-menu-item.c +++ b/src/app-menu-item.c @@ -328,6 +328,7 @@ desktop_cb (IndicateListener * listener, IndicateListenerServer * server, gchar priv->desktop = g_strdup(value); dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(self), DBUSMENU_MENUITEM_PROP_VISIBLE, TRUE); + dbusmenu_menuitem_property_set_bool(DBUSMENU_MENUITEM(self), APPLICATION_MENUITEM_PROP_RUNNING, TRUE); update_label(self); diff --git a/src/dbus-data.h b/src/dbus-data.h index c16b2b5..100ac0a 100644 --- a/src/dbus-data.h +++ b/src/dbus-data.h @@ -9,8 +9,9 @@ #define INDICATOR_MESSAGES_DBUS_SERVICE_INTERFACE "org.ayatana.indicator.messages.service" #define APPLICATION_MENUITEM_TYPE "application-item" -#define APPLICATION_MENUITEM_PROP_NAME "app-name" -#define APPLICATION_MENUITEM_PROP_ICON "app-icon" +#define APPLICATION_MENUITEM_PROP_NAME "label" +#define APPLICATION_MENUITEM_PROP_ICON "icon-name" +#define APPLICATION_MENUITEM_PROP_RUNNING "app-running" #define INDICATOR_MENUITEM_TYPE "indicator-item" #define INDICATOR_MENUITEM_PROP_LABEL "indicator-label" diff --git a/src/indicator-messages.c b/src/indicator-messages.c index 97220c6..302b9e5 100644 --- a/src/indicator-messages.c +++ b/src/indicator-messages.c @@ -287,6 +287,11 @@ application_prop_change_cb (DbusmenuMenuitem * mi, gchar * prop, GValue * value, } } + if (!g_strcmp0(prop, APPLICATION_MENUITEM_PROP_RUNNING)) { + /* TODO: should hide/show the triangle live if the menu was open. + In practice, this is rarely needed. */ + } + return; } @@ -299,13 +304,18 @@ application_triangle_draw_cb (GtkWidget *widget, GdkEventExpose *event, gpointer int x, y, arrow_width, arrow_height; if (!GTK_IS_WIDGET (widget)) return FALSE; + if (!DBUSMENU_IS_MENUITEM (data)) return FALSE; + + /* render the triangle indicator only if the application is running */ + if (! dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM(data), APPLICATION_MENUITEM_PROP_RUNNING)) + return FALSE;; /* get style */ style = gtk_widget_get_style (widget); /* set arrow position / dimensions */ - arrow_width = (int) ((double)widget->allocation.height * 0.25f); - arrow_height = (int) ((double)widget->allocation.height * 0.50f); + arrow_width = 5; /* the pixel-based reference triangle is 5x9 */ + arrow_height = 9; x = widget->allocation.x; y = widget->allocation.y + widget->allocation.height/2.0 - (double)arrow_height/2.0; @@ -326,7 +336,7 @@ application_triangle_draw_cb (GtkWidget *widget, GdkEventExpose *event, gpointer cairo_fill (cr); /* remember to destroy cairo context to avoid leaks */ - cairo_destroy (cr); + cairo_destroy (cr); return FALSE; } @@ -404,6 +414,8 @@ numbers_draw_cb (GtkWidget *widget, GdkEventExpose *event, gpointer data) static gboolean new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client) { + g_debug ("%s (\"%s\")", __func__, dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_NAME)); + GtkMenuItem * gmi = GTK_MENU_ITEM(gtk_image_menu_item_new()); gtk_image_menu_item_set_always_show_image(GTK_IMAGE_MENU_ITEM(gmi), TRUE); @@ -413,7 +425,15 @@ new_application_item (DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, Dbu GtkWidget * hbox = gtk_hbox_new(FALSE, 0); /* Set the minimum size, we always want it to take space */ + gint width, height; + gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &width, &height); + GtkWidget * icon = gtk_image_new_from_icon_name(dbusmenu_menuitem_property_get(newitem, APPLICATION_MENUITEM_PROP_ICON), GTK_ICON_SIZE_MENU); + gtk_widget_set_size_request(icon, width + + 5 /* ref triangle is 5x9 pixels */ + + 2 /* padding */, + height); + gtk_misc_set_alignment(GTK_MISC(icon), 1.0 /* right aligned */, 0.5); gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(gmi), icon); gtk_widget_show(icon); diff --git a/src/launcher-menu-item.c b/src/launcher-menu-item.c index 5d9de12..a47af03 100644 --- a/src/launcher-menu-item.c +++ b/src/launcher-menu-item.c @@ -197,6 +197,7 @@ launcher_menu_item_new (const gchar * desktop_file) gint i; for (i = 0; nicks[i] != NULL; i++) { DbusmenuMenuitem * mi = dbusmenu_menuitem_new(); + dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_TYPE, APPLICATION_MENUITEM_TYPE); g_object_set_data(G_OBJECT(mi), NICK_DATA, (gpointer)nicks[i]); dbusmenu_menuitem_property_set(mi, DBUSMENU_MENUITEM_PROP_LABEL, indicator_desktop_shortcuts_nick_get_name(priv->ids, nicks[i])); diff --git a/src/messages-service.c b/src/messages-service.c index 0783d91..b87c2ff 100644 --- a/src/messages-service.c +++ b/src/messages-service.c @@ -1346,6 +1346,7 @@ build_launcher_core (const gchar * desktop) launcherList = g_list_insert_sorted(launcherList, ll, launcherList_sort); /* Add it to the menu */ + dbusmenu_menuitem_property_set(DBUSMENU_MENUITEM(ll->menuitem), DBUSMENU_MENUITEM_PROP_TYPE, APPLICATION_MENUITEM_TYPE); dbusmenu_menuitem_child_append(root_menuitem, DBUSMENU_MENUITEM(ll->menuitem)); GList * shortcuts = launcher_menu_item_get_items(ll->menuitem); while (shortcuts != NULL) { -- cgit v1.2.3 From 9a1fe3fafbdaabd0fbcaed2e80b285ca48bf53b1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 26 Aug 2010 15:03:47 -0500 Subject: 0.3.10 --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 63ea89d..ab230fd 100644 --- a/configure.ac +++ b/configure.ac @@ -4,7 +4,7 @@ AC_INIT(src/indicator-messages.c) AC_PREREQ(2.53) AM_CONFIG_HEADER(config.h) -AM_INIT_AUTOMAKE(indicator-messages, 0.3.9) +AM_INIT_AUTOMAKE(indicator-messages, 0.3.10) AM_MAINTAINER_MODE -- cgit v1.2.3