diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2023-02-02 10:51:08 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2023-02-02 11:21:22 +0100 |
commit | 3ba3e8286f3446cc9879ac3a90b901c2a9d4f57d (patch) | |
tree | cf00bccc1301e2867aecb14d9cb6931ea030f4a1 /gtk | |
parent | fbf4817ef5f308983fa6f2df122917057eed8e6b (diff) | |
download | gtk+-3ba3e8286f3446cc9879ac3a90b901c2a9d4f57d.tar.gz |
gtkwindowhandle: Refactor click handling a bit
Do not get a GdkEvent first and foremost, and only do that in the
parts where the GdkEvent is absolutely necessary (i.e. popping up
the WM menu for the window).
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtkwindowhandle.c | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/gtk/gtkwindowhandle.c b/gtk/gtkwindowhandle.c index 4eb97c1de8..1e7c6cc344 100644 --- a/gtk/gtkwindowhandle.c +++ b/gtk/gtkwindowhandle.c @@ -256,10 +256,17 @@ do_popup_fallback (GtkWindowHandle *self, static void do_popup (GtkWindowHandle *self, - GdkEvent *event) + GtkGestureClick *gesture) { GdkSurface *surface = gtk_native_get_surface (gtk_widget_get_native (GTK_WIDGET (self))); + GdkEventSequence *sequence; + GdkEvent *event; + + sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); + event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); + if (!event) + return; if (!gdk_toplevel_show_window_menu (GDK_TOPLEVEL (surface), event)) do_popup_fallback (self, event); @@ -267,7 +274,7 @@ do_popup (GtkWindowHandle *self, static gboolean perform_titlebar_action_fallback (GtkWindowHandle *self, - GdkEvent *event, + GtkGestureClick *click_gesture, GdkTitlebarGesture gesture) { GtkSettings *settings; @@ -306,7 +313,7 @@ perform_titlebar_action_fallback (GtkWindowHandle *self, "window.minimize", NULL); else if (g_str_equal (action, "menu")) - do_popup (self, event); + do_popup (self, click_gesture); else { g_warning ("Unsupported titlebar action %s", action); @@ -320,7 +327,7 @@ perform_titlebar_action_fallback (GtkWindowHandle *self, static gboolean perform_titlebar_action (GtkWindowHandle *self, - GdkEvent *event, + GtkGestureClick *click_gesture, guint button, int n_press) { @@ -349,7 +356,7 @@ perform_titlebar_action (GtkWindowHandle *self, if (gdk_toplevel_titlebar_gesture (GDK_TOPLEVEL (surface), gesture)) return TRUE; - return perform_titlebar_action_fallback (self, event, gesture); + return perform_titlebar_action_fallback (self, click_gesture, gesture); } static void @@ -360,17 +367,10 @@ click_gesture_pressed_cb (GtkGestureClick *gesture, GtkWindowHandle *self) { GtkWidget *widget; - GdkEventSequence *sequence; - GdkEvent *event; guint button; widget = GTK_WIDGET (self); - sequence = gtk_gesture_single_get_current_sequence (GTK_GESTURE_SINGLE (gesture)); button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); - event = gtk_gesture_get_last_event (GTK_GESTURE (gesture), sequence); - - if (!event) - return; if (n_press > 1) gtk_gesture_set_state (self->drag_gesture, GTK_EVENT_SEQUENCE_DENIED); @@ -387,14 +387,14 @@ click_gesture_pressed_cb (GtkGestureClick *gesture, case GDK_BUTTON_PRIMARY: if (n_press == 2) { - perform_titlebar_action (self, event, button, n_press); + perform_titlebar_action (self, gesture, button, n_press); gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); } break; case GDK_BUTTON_SECONDARY: - if (perform_titlebar_action (self, event, button, n_press)) + if (perform_titlebar_action (self, gesture, button, n_press)) gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); @@ -403,7 +403,7 @@ click_gesture_pressed_cb (GtkGestureClick *gesture, break; case GDK_BUTTON_MIDDLE: - if (perform_titlebar_action (self, event, button, n_press)) + if (perform_titlebar_action (self, gesture, button, n_press)) gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); break; |