image: Fix rotation gesture on touchscreens

Use angle-delta instead of total angle. Total angle is
absolute on touchscreens.
This commit is contained in:
Sophie Herold 2023-02-07 23:14:55 +01:00 • committed by Christopher Davis
parent f87a1b7131
commit 9c51dea6d1

View file

@ -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");