[empathy: 1/2] Prevent contact list tooltip from showing if context menu is shown.



commit 023e73e6c363e37de3f9306e0c81c9d255a1a880
Author: Mike Ruprecht <mike ruprecht collabora co uk>
Date:   Thu Mar 4 20:53:53 2010 -0600

    Prevent contact list tooltip from showing if context menu is shown.
    
    Previously, if you opened a context menu in the contact list,
    contact tooltips would still be capable of being shown and
    obscuring the context menu options. This patch prevents tooltips
    from being shown if a context menu is visible.
    
    Fixes #607626

 libempathy-gtk/empathy-contact-list-view.c |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)
---
diff --git a/libempathy-gtk/empathy-contact-list-view.c b/libempathy-gtk/empathy-contact-list-view.c
index 0ed24bd..705494e 100644
--- a/libempathy-gtk/empathy-contact-list-view.c
+++ b/libempathy-gtk/empathy-contact-list-view.c
@@ -155,6 +155,11 @@ contact_list_view_query_tooltip_cb (EmpathyContactListView *view,
 	}
 	running++;
 
+	/* Don't show the tooltip if there's already a popup menu */
+	if (gtk_menu_get_for_attach_widget (GTK_WIDGET (view)) != NULL) {
+		goto OUT;
+	}
+
 	if (!gtk_tree_view_get_tooltip_context (GTK_TREE_VIEW (view), &x, &y,
 						keyboard_mode,
 						&model, &path, &iter)) {
@@ -679,6 +684,10 @@ contact_list_view_popup_menu_idle_cb (gpointer user_data)
 	}
 
 	if (menu) {
+		g_signal_connect (menu, "deactivate",
+				  G_CALLBACK (gtk_menu_detach), NULL);
+		gtk_menu_attach_to_widget (GTK_MENU (menu),
+					   GTK_WIDGET (data->view), NULL);
 		gtk_widget_show (menu);
 		gtk_menu_popup (GTK_MENU (menu),
 				NULL, NULL, NULL, NULL,
@@ -794,6 +803,10 @@ contact_list_view_call_activated_cb (
 	gtk_menu_shell_append (shell, item);
 	gtk_widget_show (item);
 
+	g_signal_connect (menu, "deactivate",
+			  G_CALLBACK (gtk_menu_detach), NULL);
+	gtk_menu_attach_to_widget (GTK_MENU (menu),
+				   GTK_WIDGET (view), NULL);
 	gtk_widget_show (menu);
 	gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
 			event->button, event->time);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]