diff --git a/crates/gpui3/src/events.rs b/crates/gpui3/src/events.rs index 3918f349f6a0b59372ebe1b7f7251384b6bc346e..e9ea56198c174eb3ec943d79729c786a5e1b64d3 100644 --- a/crates/gpui3/src/events.rs +++ b/crates/gpui3/src/events.rs @@ -34,61 +34,20 @@ pub enum TouchPhase { Ended, } -#[derive(Clone, Copy, Debug)] -pub enum ScrollDelta { - Pixels(Point), - Lines(Point), -} - -impl Default for ScrollDelta { - fn default() -> Self { - Self::Lines(Default::default()) - } -} - -impl ScrollDelta { - pub fn precise(&self) -> bool { - match self { - ScrollDelta::Pixels(_) => true, - ScrollDelta::Lines(_) => false, - } - } - - pub fn pixel_delta(&self, line_height: Pixels) -> Point { - match self { - ScrollDelta::Pixels(delta) => *delta, - ScrollDelta::Lines(delta) => point(line_height * delta.x, line_height * delta.y), - } - } -} - #[derive(Clone, Debug, Default)] -pub struct ScrollWheelEvent { +pub struct MouseDownEvent { + pub button: MouseButton, pub position: Point, - pub delta: ScrollDelta, pub modifiers: Modifiers, - /// If the platform supports returning the phase of a scroll wheel event, it will be stored here - pub phase: Option, -} - -impl Deref for ScrollWheelEvent { - type Target = Modifiers; - - fn deref(&self) -> &Self::Target { - &self.modifiers - } -} - -#[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)] -pub enum NavigationDirection { - Back, - Forward, + pub click_count: usize, } -impl Default for NavigationDirection { - fn default() -> Self { - Self::Back - } +#[derive(Clone, Debug, Default)] +pub struct MouseUpEvent { + pub button: MouseButton, + pub position: Point, + pub modifiers: Modifiers, + pub click_count: usize, } #[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)] @@ -117,35 +76,67 @@ impl Default for MouseButton { } } -#[derive(Clone, Debug, Default)] -pub struct MouseDownEvent { - pub button: MouseButton, - pub position: Point, - pub modifiers: Modifiers, - pub click_count: usize, +#[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)] +pub enum NavigationDirection { + Back, + Forward, } -#[derive(Clone, Debug, Default)] -pub struct MouseUpEvent { - pub button: MouseButton, - pub position: Point, - pub modifiers: Modifiers, - pub click_count: usize, +impl Default for NavigationDirection { + fn default() -> Self { + Self::Back + } } #[derive(Clone, Debug, Default)] -pub struct MouseUp { - pub button: MouseButton, +pub struct MouseMovedEvent { pub position: Point, + pub pressed_button: Option, pub modifiers: Modifiers, - pub click_count: usize, } -#[derive(Clone, Debug, Default)] -pub struct MouseMovedEvent { +#[derive(Clone, Debug)] +pub struct ScrollWheelEvent { pub position: Point, - pub pressed_button: Option, + pub delta: ScrollDelta, pub modifiers: Modifiers, + pub touch_phase: TouchPhase, +} + +impl Deref for ScrollWheelEvent { + type Target = Modifiers; + + fn deref(&self) -> &Self::Target { + &self.modifiers + } +} + +#[derive(Clone, Copy, Debug)] +pub enum ScrollDelta { + Pixels(Point), + Lines(Point), +} + +impl Default for ScrollDelta { + fn default() -> Self { + Self::Lines(Default::default()) + } +} + +impl ScrollDelta { + pub fn precise(&self) -> bool { + match self { + ScrollDelta::Pixels(_) => true, + ScrollDelta::Lines(_) => false, + } + } + + pub fn pixel_delta(&self, line_height: Pixels) -> Point { + match self { + ScrollDelta::Pixels(delta) => *delta, + ScrollDelta::Lines(delta) => point(line_height * delta.x, line_height * delta.y), + } + } } #[derive(Clone, Debug, Default)] diff --git a/crates/gpui3/src/platform/mac/events.rs b/crates/gpui3/src/platform/mac/events.rs index 700f876a20fbeffb5cfcc0a8d69a4a56cc276b3e..a2c96608ec14b9e99177752ed19f22d452ed995a 100644 --- a/crates/gpui3/src/platform/mac/events.rs +++ b/crates/gpui3/src/platform/mac/events.rs @@ -161,10 +161,10 @@ impl Event { NSEventType::NSScrollWheel => window_height.map(|window_height| { let phase = match native_event.phase() { NSEventPhase::NSEventPhaseMayBegin | NSEventPhase::NSEventPhaseBegan => { - Some(TouchPhase::Started) + TouchPhase::Started } - NSEventPhase::NSEventPhaseEnded => Some(TouchPhase::Ended), - _ => Some(TouchPhase::Moved), + NSEventPhase::NSEventPhaseEnded => TouchPhase::Ended, + _ => TouchPhase::Moved, }; let raw_data = point( @@ -184,7 +184,7 @@ impl Event { window_height - px(native_event.locationInWindow().y as f32), ), delta, - phase, + touch_phase: phase, modifiers: read_modifiers(native_event), }) }),