From 49e595cda2109b91397e298f4b89bd09e946667e Mon Sep 17 00:00:00 2001 From: Sophie Herold Date: Thu, 10 Nov 2022 20:03:12 +0100 Subject: [PATCH] image: Support rotate gesture --- src/widgets/image.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/widgets/image.rs b/src/widgets/image.rs index 95863a5..caf1ecd 100644 --- a/src/widgets/image.rs +++ b/src/widgets/image.rs @@ -98,6 +98,18 @@ mod imp { .target(&adw::PropertyAnimationTarget::new(&*obj, "rotation")) .build(); self.rotation_animation.replace(Some(rotation_animation)); + + let rotation_gesture = gtk::GestureRotate::new(); + obj.add_controller(&rotation_gesture); + + rotation_gesture.connect_angle_changed(glib::clone!(@weak obj => move |_, angle, _| { + obj.set_rotation(obj.imp().rotation_target.get() + angle.to_degrees()); + })); + + rotation_gesture.connect_end(glib::clone!(@weak obj => move |_, _| { + let angle = (obj.rotation() / 90.).round() * 90. - obj.imp().rotation_target.get(); + obj.rotate(angle); + })); } fn dispose(&self) {