image/scrollable: Abstract adjustment access

This commit is contained in:
Sophie Herold 2023-12-05 21:26:09 +01:00
parent 3ab4d82d36
commit d69d0d5e47
3 changed files with 35 additions and 25 deletions

View file

@ -144,11 +144,8 @@ impl imp::LpImage {
drag_gesture.connect_drag_update(glib::clone!(@weak obj => move |_, x1, y1| {
if let Some((x0, y0)) = obj.imp().last_drag_value.get() {
let hadjustment = obj.hadjustment();
let vadjustment = obj.vadjustment();
hadjustment.set_value(hadjustment.value() - x1 + x0);
vadjustment.set_value(vadjustment.value() - y1 + y0);
obj.set_hadj_value(obj.hadj_value() - x1 + x0);
obj.set_vadj_value(obj.vadj_value() - y1 + y0);
}
obj.imp().last_drag_value.set(Some((x1, y1)));
@ -213,16 +210,14 @@ impl imp::LpImage {
}));
zoom_gesture.connect_scale_changed(glib::clone!(@weak obj => move |gesture, scale| {
let hadjustment = obj.hadjustment();
let vadjustment = obj.vadjustment();
let zoom = obj.imp().zoom_target.get() * scale;
// Move image with fingers on touchscreens
if gesture.device().map(|x| x.source()) == Some(gdk::InputSource::Touchscreen) {
if let p1 @ Some((x1, y1)) = gesture.bounding_box_center() {
if let Some((x0, y0)) = obj.imp().zoom_gesture_center.get() {
hadjustment.set_value(hadjustment.value() + x0 - x1);
vadjustment.set_value(vadjustment.value() + y0 - y1);
obj.set_hadj_value(obj.hadj_value() + x0 - x1);
obj.set_vadj_value(obj.vadj_value()+ y0 - y1);
} else {
log::warn!("Zoom bounding box center: No previous value");
}