[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