[Xfce4-commits] <xfce4-taskbar-plugin:master> Made the hover menu wait around a little time when it loses mouse focus, instead of just exiting immediately.

Gearoid Murphy noreply at xfce.org
Sat Oct 13 16:52:02 CEST 2012


Updating branch refs/heads/master
         to 92e1f9b78c3c0a2832b5f2514b154ba2f4e86223 (commit)
       from c7178568dc3a4a4c0399b49bf65dcc8ea817e986 (commit)

commit 92e1f9b78c3c0a2832b5f2514b154ba2f4e86223
Author: Gearoid Murphy <gearoid at murphy.com>
Date:   Sat Oct 13 15:48:42 2012 +0100

    Made the hover menu wait around a little time when it loses mouse focus, instead of just exiting immediately.

 taskbar-widget.c |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletions(-)

diff --git a/taskbar-widget.c b/taskbar-widget.c
index c1a8ce2..61ae585 100644
--- a/taskbar-widget.c
+++ b/taskbar-widget.c
@@ -2387,7 +2387,11 @@ static gboolean hover_menu_enter(GtkWidget *widget, GdkEvent  *event, gpointer m
 static gboolean hover_menu_leave(GtkWidget *widget, GdkEvent  *event, gpointer menu_ptr)
 {
     GtkWidget *menu_widget = (GtkWidget *)menu_ptr;
-    gtk_widget_destroy (menu_widget);
+    
+    //We don't want to kill the hover menu immediately, so we wait a small time
+    size_t timeout_id = (size_t)g_timeout_add(300, xfce_taskbar_hover_menu_timeout, menu_widget);
+    g_object_set_data(G_OBJECT(menu_widget), "timeout_id", (void *)timeout_id);
+    
     return FALSE ;
 }
 
@@ -2453,6 +2457,7 @@ static gboolean xfce_taskbar_group_button_leave_event(GtkWidget *button_widget,
             size_t timeout_id = (size_t)g_timeout_add(300, xfce_taskbar_hover_menu_timeout, menu_widget);
             g_object_set_data(G_OBJECT(menu_widget), "timeout_id", (void *)timeout_id);
             
+            //We use the enter event to disable the pending timeout (if the user mouses over the hover menu)
             g_signal_connect (GTK_WINDOW (GTK_MENU(menu_widget)->toplevel), "enter-notify-event", G_CALLBACK (hover_menu_enter), menu_widget);
             g_signal_connect (GTK_WINDOW (GTK_MENU(menu_widget)->toplevel), "leave-notify-event", G_CALLBACK (hover_menu_leave), menu_widget);
         }


More information about the Xfce4-commits mailing list