inputHandling: Claim double-click gesture
This commit is contained in:
parent
689401dffc
commit
8e8751d41a
1 changed files with 15 additions and 3 deletions
|
|
@ -142,9 +142,14 @@ impl imp::LpImage {
|
||||||
move |gesture, n_press, x, y| {
|
move |gesture, n_press, x, y| {
|
||||||
// only handle double clicks
|
// only handle double clicks
|
||||||
if n_press != 2 {
|
if n_press != 2 {
|
||||||
|
log::trace!("Gesture {n_press} click");
|
||||||
|
gesture.set_state(gtk::EventSequenceState::Denied);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log::trace!("Gesture double click");
|
||||||
|
|
||||||
|
gesture.set_state(gtk::EventSequenceState::Claimed);
|
||||||
if gesture.device().map(|x| x.source()) == Some(gdk::InputSource::Touchscreen) {
|
if gesture.device().map(|x| x.source()) == Some(gdk::InputSource::Touchscreen) {
|
||||||
// zoom
|
// zoom
|
||||||
obj.imp().pointer_position.set(Some((x, y)));
|
obj.imp().pointer_position.set(Some((x, y)));
|
||||||
|
|
@ -170,6 +175,7 @@ impl imp::LpImage {
|
||||||
#[weak]
|
#[weak]
|
||||||
obj,
|
obj,
|
||||||
move |gesture, _, _| {
|
move |gesture, _, _| {
|
||||||
|
log::trace!("Drag gesture begin");
|
||||||
let imp = obj.imp();
|
let imp = obj.imp();
|
||||||
|
|
||||||
// Allow only left and middle button
|
// Allow only left and middle button
|
||||||
|
|
@ -210,6 +216,7 @@ impl imp::LpImage {
|
||||||
#[weak]
|
#[weak]
|
||||||
obj,
|
obj,
|
||||||
move |_, _, _| {
|
move |_, _, _| {
|
||||||
|
log::trace!("Drag gesture end");
|
||||||
obj.set_cursor(None);
|
obj.set_cursor(None);
|
||||||
obj.imp().last_drag_value.set(None);
|
obj.imp().last_drag_value.set(None);
|
||||||
}
|
}
|
||||||
|
|
@ -222,7 +229,10 @@ impl imp::LpImage {
|
||||||
rotation_gesture.connect_begin(glib::clone!(
|
rotation_gesture.connect_begin(glib::clone!(
|
||||||
#[weak]
|
#[weak]
|
||||||
obj,
|
obj,
|
||||||
move |_, _| obj.imp().cancel_deceleration()
|
move |_, _| {
|
||||||
|
log::trace!("Rotate gesture begin");
|
||||||
|
obj.imp().cancel_deceleration();
|
||||||
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
rotation_gesture.connect_angle_changed(glib::clone!(
|
rotation_gesture.connect_angle_changed(glib::clone!(
|
||||||
|
|
@ -260,7 +270,7 @@ impl imp::LpImage {
|
||||||
#[weak]
|
#[weak]
|
||||||
obj,
|
obj,
|
||||||
move |_, _| {
|
move |_, _| {
|
||||||
log::debug!("Rotate gesture ended");
|
log::debug!("Rotate gesture end");
|
||||||
|
|
||||||
let angle = (obj.rotation() / 90.).round() * 90. - obj.imp().rotation_target.get();
|
let angle = (obj.rotation() / 90.).round() * 90. - obj.imp().rotation_target.get();
|
||||||
obj.rotate_by(angle);
|
obj.rotate_by(angle);
|
||||||
|
|
@ -276,6 +286,8 @@ impl imp::LpImage {
|
||||||
#[weak]
|
#[weak]
|
||||||
obj,
|
obj,
|
||||||
move |gesture, _| {
|
move |gesture, _| {
|
||||||
|
log::trace!("Zoom gesture begin");
|
||||||
|
|
||||||
let imp = obj.imp();
|
let imp = obj.imp();
|
||||||
imp.cancel_deceleration();
|
imp.cancel_deceleration();
|
||||||
imp.zoom_gesture_center.set(gesture.bounding_box_center());
|
imp.zoom_gesture_center.set(gesture.bounding_box_center());
|
||||||
|
|
@ -324,7 +336,7 @@ impl imp::LpImage {
|
||||||
obj,
|
obj,
|
||||||
move |_, _| {
|
move |_, _| {
|
||||||
let imp = obj.imp();
|
let imp = obj.imp();
|
||||||
log::debug!("Zoom gesture ended");
|
log::debug!("Zoom gesture end");
|
||||||
|
|
||||||
let rotation_target = (obj.rotation() / 90.).round() * 90.;
|
let rotation_target = (obj.rotation() / 90.).round() * 90.;
|
||||||
if obj.zoom() < imp.zoom_level_best_fit_for_rotation(rotation_target) {
|
if obj.zoom() < imp.zoom_level_best_fit_for_rotation(rotation_target) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue