[empathy] individual-view: detach the individual menu once it has been displayed
- From: Guillaume Desmottes <gdesmott src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy] individual-view: detach the individual menu once it has been displayed
- Date: Thu, 3 Feb 2011 10:28:46 +0000 (UTC)
commit 8859363aee3d81abd6fb84f8d54f78e782d90425
Author: Guillaume Desmottes <guillaume desmottes collabora co uk>
Date: Thu Feb 3 10:58:57 2011 +0100
individual-view: detach the individual menu once it has been displayed
libempathy-gtk/empathy-individual-view.c | 20 ++++++++++++++++++++
1 files changed, 20 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-individual-view.c b/libempathy-gtk/empathy-individual-view.c
index d5ed8b6..597b4c4 100644
--- a/libempathy-gtk/empathy-individual-view.c
+++ b/libempathy-gtk/empathy-individual-view.c
@@ -889,6 +889,17 @@ typedef struct
guint32 time;
} MenuPopupData;
+static void
+menu_deactivate_cb (GtkMenuShell *menushell,
+ gpointer user_data)
+{
+ gtk_menu_detach (GTK_MENU (menushell));
+
+ /* FIXME: we shouldn't have to disconnec the signal (bgo #641327) */
+ g_signal_handlers_disconnect_by_func (menushell,
+ menu_deactivate_cb, user_data);
+}
+
static gboolean
individual_view_popup_menu_idle_cb (gpointer user_data)
{
@@ -906,6 +917,15 @@ individual_view_popup_menu_idle_cb (gpointer user_data)
gtk_widget_show (menu);
gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, data->button,
data->time);
+
+ /* menu is initially unowned but gtk_menu_attach_to_widget() taked its
+ * floating ref. We can either wait that the treeview releases its ref
+ * when it will be destroyed (when leaving Empathy) or explicitely
+ * detach the menu when it's not displayed any more.
+ * We go for the latter as we don't want to keep useless menus in memory
+ * during the whole lifetime of Empathy. */
+ g_signal_connect (menu, "deactivate", G_CALLBACK (menu_deactivate_cb),
+ NULL);
}
g_slice_free (MenuPopupData, data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]