]> git.0d.be Git - empathy.git/commitdiff
Prevent contact list tooltip from showing if context menu is shown.
authorMike Ruprecht <mike.ruprecht@collabora.co.uk>
Fri, 5 Mar 2010 02:53:53 +0000 (20:53 -0600)
committerMike Ruprecht <mike.ruprecht@collabora.co.uk>
Sat, 6 Mar 2010 00:31:22 +0000 (18:31 -0600)
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

index 0ed24bdf8c292535f3cccfa13bec741213971623..705494e4ada377351ff601cbd5b8a930dabda91d 100644 (file)
@@ -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);