From 4ec8c8b1cb64ff0f013584143e8d2b9ff62b66e3 Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Mon, 8 Dec 2025 16:15:13 +0100 Subject: [PATCH] image_window: Simplify gestures --- src/widgets/image_window.rs | 32 ++++++++++++++++++++++---------- src/widgets/image_window.ui | 4 ++++ 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/widgets/image_window.rs b/src/widgets/image_window.rs index afcf0b7..d9ace79 100644 --- a/src/widgets/image_window.rs +++ b/src/widgets/image_window.rs @@ -98,6 +98,8 @@ mod imp { pub(super) forward_click_gesture: TemplateChild, #[template_child] pub(super) backward_click_gesture: TemplateChild, + #[template_child] + pub(super) general_click_gesture: TemplateChild, #[property(get = Self::is_showing_image)] pub(super) is_showing_image: PhantomData, @@ -161,17 +163,35 @@ mod imp { self.forward_click_gesture.connect_pressed(glib::clone!( #[weak] obj, - move |_, _, _, _| { + move |gesture, _, _, _| { + log::trace!("Mouse forward button clicked"); + gesture.set_state(gtk::EventSequenceState::Claimed); obj.image_view().navigate(Direction::Forward, false); } )); self.backward_click_gesture.connect_pressed(glib::clone!( #[weak] obj, - move |_, _, _, _| { + move |gesture, _, _, _| { + log::trace!("Mouse back button clicked"); + gesture.set_state(gtk::EventSequenceState::Claimed); obj.image_view().navigate(Direction::Back, false); } )); + + self.general_click_gesture.connect_pressed(glib::clone!( + #[weak] + obj, + move |_, n_press, _, _| { + // TODO: We can't claim the gesture here, right? Otherwise we suppress the + // double-click + if n_press == 1 { + log::trace!("General 1 click event"); + obj.on_click(); + } + } + )); + self.properties_button.connect_toggled(glib::clone!( #[weak] obj, @@ -195,14 +215,6 @@ mod imp { move |_| obj.on_fullscreen_changed() )); - let gesture_click = gtk::GestureClick::new(); - gesture_click.connect_pressed(glib::clone!( - #[weak] - obj, - move |_, _, _, _| obj.on_click() - )); - obj.add_controller(gesture_click); - self.motion_controller.connect_motion(glib::clone!( #[weak] obj, diff --git a/src/widgets/image_window.ui b/src/widgets/image_window.ui index 4753ecc..d8469bc 100644 --- a/src/widgets/image_window.ui +++ b/src/widgets/image_window.ui @@ -245,6 +245,10 @@ 8 + + + +