Add smart magnification gesture

This commit is contained in:
Jim Eckerlein
2022-11-11 12:11:09 +01:00
parent 05484c5888
commit cdcaa561da
3 changed files with 28 additions and 0 deletions

View File

@@ -29,6 +29,9 @@ fn main() {
println!("Zoomed out {}", delta); println!("Zoomed out {}", delta);
} }
} }
WindowEvent::TouchpadSmartMagnify { .. } => {
println!("Smart zoom");
}
WindowEvent::TouchpadRotate { delta, .. } => { WindowEvent::TouchpadRotate { delta, .. } => {
if delta > 0.0 { if delta > 0.0 {
println!("Rotated counterclockwise {}", delta); println!("Rotated counterclockwise {}", delta);

View File

@@ -444,6 +444,13 @@ pub enum WindowEvent<'a> {
phase: TouchPhase, phase: TouchPhase,
}, },
/// Touchpad smart magnification event.
///
/// ## Platform-specific
///
/// - Only available on **macOS**.
TouchpadSmartMagnify { device_id: DeviceId },
/// Touchpad rotation event with two-finger rotation gesture. /// Touchpad rotation event with two-finger rotation gesture.
/// ///
/// Positive delta values indicate rotation counterclockwise and /// Positive delta values indicate rotation counterclockwise and
@@ -590,6 +597,9 @@ impl Clone for WindowEvent<'static> {
delta: *delta, delta: *delta,
phase: *phase, phase: *phase,
}, },
TouchpadSmartMagnify { device_id } => TouchpadSmartMagnify {
device_id: *device_id,
},
TouchpadRotate { TouchpadRotate {
device_id, device_id,
delta, delta,
@@ -696,6 +706,7 @@ impl<'a> WindowEvent<'a> {
delta, delta,
phase, phase,
}), }),
TouchpadSmartMagnify { device_id } => Some(TouchpadSmartMagnify { device_id }),
TouchpadRotate { TouchpadRotate {
device_id, device_id,
delta, delta,

View File

@@ -859,6 +859,20 @@ declare_class!(
AppState::queue_event(EventWrapper::StaticEvent(window_event)); AppState::queue_event(EventWrapper::StaticEvent(window_event));
} }
#[sel(smartMagnifyWithEvent:)]
fn smart_magnify_with_event(&self, _event: &NSEvent) {
trace_scope!("smartMagnifyWithEvent:");
let window_event = Event::WindowEvent {
window_id: self.window_id(),
event: WindowEvent::TouchpadSmartMagnify {
device_id: DEVICE_ID,
},
};
AppState::queue_event(EventWrapper::StaticEvent(window_event));
}
#[sel(rotateWithEvent:)] #[sel(rotateWithEvent:)]
fn rotate_with_event(&self, event: &NSEvent) { fn rotate_with_event(&self, event: &NSEvent) {
trace_scope!("rotateWithEvent:"); trace_scope!("rotateWithEvent:");