aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-09-18 15:08:02 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-09-18 15:08:02 +0200
commitf8901fd80116c4c6ae51ada33c34f6a05de542db (patch)
tree2ed832dc8e5a869c2b7940d7911c53afcaaeff26
parent894c9d2e239a4ecc99319fa2517b6d68bdd72774 (diff)
parent8b7183be4edd964fe2dad738962e1b1156300668 (diff)
downloadayatana-indicator-messages-f8901fd80116c4c6ae51ada33c34f6a05de542db.tar.gz
ayatana-indicator-messages-f8901fd80116c4c6ae51ada33c34f6a05de542db.tar.bz2
ayatana-indicator-messages-f8901fd80116c4c6ae51ada33c34f6a05de542db.zip
Merge lp:~larsu/indicator-messages/show-separators
-rw-r--r--configure.ac2
-rw-r--r--src/indicator-messages.c26
-rw-r--r--src/messages-service.c3
3 files changed, 11 insertions, 20 deletions
diff --git a/configure.ac b/configure.ac
index 37268a2..b3e7a13 100644
--- a/configure.ac
+++ b/configure.ac
@@ -38,7 +38,7 @@ AC_PROG_CXX
# Dependencies
###########################
-GTK_REQUIRED_VERSION=3.5.12
+GTK_REQUIRED_VERSION=3.5.17
GIO_UNIX_REQUIRED_VERSION=2.33.10
INDICATOR_REQUIRED_VERSION=0.3.19
GLIB_REQUIRED_VERSION=2.33.10
diff --git a/src/indicator-messages.c b/src/indicator-messages.c
index 29979ed..2647a76 100644
--- a/src/indicator-messages.c
+++ b/src/indicator-messages.c
@@ -58,7 +58,6 @@ struct _IndicatorMessages {
IndicatorObject parent;
IndicatorServiceManager * service;
GActionGroup *actions;
- GMenu *menu_wrapper;
GMenuModel *menu;
GtkWidget *image;
GtkWidget *gtkmenu;
@@ -121,8 +120,7 @@ indicator_messages_init (IndicatorMessages *self)
g_signal_connect (self->service, "connection-change",
G_CALLBACK (service_connection_changed), self);
- self->menu_wrapper = g_menu_new ();
- self->gtkmenu = gtk_menu_new_from_model (G_MENU_MODEL (self->menu_wrapper));
+ self->gtkmenu = gtk_menu_new ();
g_object_ref_sink (self->gtkmenu);
self->image = g_object_ref_sink (gtk_image_new ());
@@ -142,7 +140,6 @@ indicator_messages_dispose (GObject *object)
g_return_if_fail(self != NULL);
g_clear_object (&self->service);
- g_clear_object (&self->menu_wrapper);
g_clear_object (&self->actions);
g_clear_object (&self->menu);
g_clear_object (&self->gtkmenu);
@@ -184,8 +181,7 @@ static void service_connection_changed (IndicatorServiceManager *sm,
g_signal_handlers_disconnect_by_func (self->menu, menu_items_changed, self);
g_clear_object (&self->menu);
}
- if (g_menu_model_get_n_items (G_MENU_MODEL (self->menu_wrapper)) == 1)
- g_menu_remove (self->menu_wrapper, 0);
+ gtk_menu_shell_bind_model (GTK_MENU_SHELL (self->gtkmenu), NULL, NULL, FALSE);
if (connected == FALSE)
return;
@@ -308,14 +304,11 @@ indicator_messages_add_toplevel_menu (IndicatorMessages *self)
popup = g_menu_model_get_item_link (self->menu, 0, G_MENU_LINK_SUBMENU);
if (popup) {
- GMenuItem *item;
+ gtk_menu_shell_bind_model (GTK_MENU_SHELL (self->gtkmenu),
+ popup,
+ get_name_hint (INDICATOR_OBJECT (self)),
+ TRUE);
- item = g_menu_item_new_section (NULL, popup);
- g_menu_item_set_attribute (item, "action-namespace",
- "s", get_name_hint (INDICATOR_OBJECT (self)));
- g_menu_append_item (self->menu_wrapper, item);
-
- g_object_unref (item);
g_object_unref (popup);
}
}
@@ -331,13 +324,10 @@ menu_items_changed (GMenuModel *menu,
g_return_if_fail (position == 0);
- if (added == 1) {
+ if (added == 1)
indicator_messages_add_toplevel_menu (self);
- }
- else if (removed == 1) {
- g_menu_remove (self->menu_wrapper, 0);
+ else if (removed == 1)
indicator_object_set_visible (INDICATOR_OBJECT (self), FALSE);
- }
}
static void
diff --git a/src/messages-service.c b/src/messages-service.c
index bc9ac1b..fd0bdcb 100644
--- a/src/messages-service.c
+++ b/src/messages-service.c
@@ -132,7 +132,8 @@ update_chat_section ()
g_menu_insert_section (menu, 0, NULL, chat_section);
}
- g_object_unref (first_section);
+ if (first_section != NULL)
+ g_object_unref (first_section);
}
static void