Skip to content

Commit

Permalink
Expose TouchpadMagnify event (#707)
Browse files Browse the repository at this point in the history
  • Loading branch information
andi23rosca authored Dec 8, 2024
1 parent bd7ba54 commit 0b0ce61
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 6 deletions.
4 changes: 3 additions & 1 deletion src/app_handle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,9 @@ impl ApplicationHandle {
WindowEvent::MouseInput { state, button, .. } => {
window_handle.mouse_input(button, state);
}
WindowEvent::TouchpadMagnify { .. } => {}
WindowEvent::TouchpadMagnify { delta, phase, .. } => {
window_handle.touchpad_magnify(delta, phase);
}
WindowEvent::SmartMagnify { .. } => {}
WindowEvent::TouchpadRotate { .. } => {}
WindowEvent::TouchpadPressure { .. } => {}
Expand Down
18 changes: 14 additions & 4 deletions src/event.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ use crate::{
dropped_file::DroppedFileEvent,
keyboard::KeyEvent,
pointer::{PointerInputEvent, PointerMoveEvent, PointerWheelEvent},
touchpad::TouchpadMagnifyEvent,
};

/// Control whether an event will continue propagating or whether it should stop.
Expand Down Expand Up @@ -67,6 +68,8 @@ pub enum EventListener {
PointerEnter,
/// Receives [`Event::PointerLeave`]
PointerLeave,
/// Receives [`Event::TouchpadMagnify`]
TouchpadMagnify,
/// Receives [`Event::ImeEnabled`]
ImeEnabled,
/// Receives [`Event::ImeDisabled`]
Expand Down Expand Up @@ -106,6 +109,7 @@ pub enum Event {
PointerMove(PointerMoveEvent),
PointerWheel(PointerWheelEvent),
PointerLeave,
TouchpadMagnify(TouchpadMagnifyEvent),
DroppedFile(DroppedFileEvent),
KeyDown(KeyEvent),
KeyUp(KeyEvent),
Expand Down Expand Up @@ -135,6 +139,7 @@ impl Event {
| Event::PointerMove(_)
| Event::PointerWheel(_)
| Event::PointerLeave
| Event::TouchpadMagnify(..)
| Event::FocusGained
| Event::FocusLost
| Event::ImeEnabled
Expand All @@ -160,7 +165,8 @@ impl Event {
| Event::PointerMove(_)
| Event::PointerWheel(_)
| Event::PointerLeave => true,
Event::KeyDown(_)
Event::TouchpadMagnify(_)
| Event::KeyDown(_)
| Event::KeyUp(_)
| Event::FocusGained
| Event::FocusLost
Expand Down Expand Up @@ -207,7 +213,8 @@ impl Event {
| Event::ImeCommit(_)
| Event::KeyDown(_)
| Event::KeyUp(_) => false,
Event::PointerLeave
Event::TouchpadMagnify(_)
| Event::PointerLeave
| Event::PointerMove(_)
| Event::ThemeChanged(_)
| Event::WindowClosed
Expand All @@ -228,7 +235,8 @@ impl Event {
Event::PointerMove(pointer_event) => Some(pointer_event.pos),
Event::PointerWheel(pointer_event) => Some(pointer_event.pos),
Event::DroppedFile(event) => Some(event.pos),
Event::PointerLeave
Event::TouchpadMagnify(_)
| Event::PointerLeave
| Event::KeyDown(_)
| Event::KeyUp(_)
| Event::FocusGained
Expand Down Expand Up @@ -261,7 +269,8 @@ impl Event {
Event::DroppedFile(event) => {
event.pos = transform.inverse() * event.pos;
}
Event::PointerLeave
Event::TouchpadMagnify(_)
| Event::PointerLeave
| Event::KeyDown(_)
| Event::KeyUp(_)
| Event::FocusGained
Expand All @@ -288,6 +297,7 @@ impl Event {
Event::PointerMove(_) => Some(EventListener::PointerMove),
Event::PointerWheel(_) => Some(EventListener::PointerWheel),
Event::PointerLeave => Some(EventListener::PointerLeave),
Event::TouchpadMagnify(_) => Some(EventListener::TouchpadMagnify),
Event::KeyDown(_) => Some(EventListener::KeyDown),
Event::KeyUp(_) => Some(EventListener::KeyUp),
Event::ImeEnabled => Some(EventListener::ImeEnabled),
Expand Down
1 change: 1 addition & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,7 @@ pub mod responsive;
mod screen_layout;
pub mod style;
pub(crate) mod theme;
pub mod touchpad;
pub mod unit;
mod update;
pub(crate) mod view;
Expand Down
7 changes: 7 additions & 0 deletions src/touchpad.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
use floem_winit::event::TouchPhase;

#[derive(Debug, Clone)]
pub struct TouchpadMagnifyEvent {
pub delta: f64,
pub phase: TouchPhase,
}
8 changes: 7 additions & 1 deletion src/window_handle.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ use floem_renderer::gpu_resources::GpuResources;
use floem_renderer::Renderer;
use floem_winit::{
dpi::{LogicalPosition, LogicalSize},
event::{ElementState, Ime, MouseButton, MouseScrollDelta},
event::{ElementState, Ime, MouseButton, MouseScrollDelta, TouchPhase},
event_loop::EventLoopProxy,
keyboard::{Key, ModifiersState, NamedKey},
window::{CursorIcon, WindowId},
Expand Down Expand Up @@ -40,6 +40,7 @@ use crate::{
profiler::Profile,
style::{CursorStyle, Style, StyleSelector},
theme::{default_theme, Theme},
touchpad::TouchpadMagnifyEvent,
update::{
UpdateMessage, CENTRAL_DEFERRED_UPDATE_MESSAGES, CENTRAL_UPDATE_MESSAGES,
CURRENT_RUNNING_VIEW_HANDLE, DEFERRED_UPDATE_MESSAGES, UPDATE_MESSAGES,
Expand Down Expand Up @@ -540,6 +541,11 @@ impl WindowHandle {
}
}

pub(crate) fn touchpad_magnify(&mut self, delta: f64, phase: TouchPhase) {
let event = TouchpadMagnifyEvent { delta, phase };
self.event(Event::TouchpadMagnify(event));
}

pub(crate) fn focused(&mut self, focused: bool) {
if focused {
self.event(Event::WindowGotFocus);
Expand Down

0 comments on commit 0b0ce61

Please sign in to comment.