From 9c51dea6d1bc5c13dcd8e921f425c3a3792641f6 Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Tue, 7 Feb 2023 23:14:55 +0100 Subject: [PATCH] image: Fix rotation gesture on touchscreens Use angle-delta instead of total angle. Total angle is absolute on touchscreens. --- src/widgets/image.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/widgets/image.rs b/src/widgets/image.rs index 04bb93d..748ca72 100644 --- a/src/widgets/image.rs +++ b/src/widgets/image.rs @@ -380,12 +380,15 @@ mod imp { let rotation_gesture = gtk::GestureRotate::new(); obj.add_controller(&rotation_gesture); - rotation_gesture.connect_angle_changed(glib::clone!(@weak obj => move |_, angle, _| { - // offset for rotate gesture to take effect - if angle.abs().to_degrees() > 20. { - obj.set_rotation(obj.imp().rotation_target.get() + angle.to_degrees()); - } - })); + rotation_gesture.connect_angle_changed( + glib::clone!(@weak obj => move |gesture, _, _| { + let angle = gesture.angle_delta(); + // offset for rotate gesture to take effect + if angle.abs().to_degrees() > 20. { + obj.set_rotation(obj.imp().rotation_target.get() + angle.to_degrees()); + } + }), + ); rotation_gesture.connect_end(glib::clone!(@weak obj => move |_, _| { log::debug!("Rotate gesture ended");