From dfdb691f737a930da9d69cfd3dc84655717101d2 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Mon, 9 Oct 2023 21:30:14 -0600 Subject: [PATCH] Checkpoint --- crates/gpui3/src/events.rs | 131 +++++++++++------------- crates/gpui3/src/platform/mac/events.rs | 8 +- 2 files changed, 65 insertions(+), 74 deletions(-) diff --git a/crates/gpui3/src/events.rs b/crates/gpui3/src/events.rs index 3918f349f6..e9ea56198c 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 MouseDownEvent { + pub button: MouseButton, + pub position: Point, + pub modifiers: Modifiers, + pub click_count: usize, } #[derive(Clone, Debug, Default)] -pub struct ScrollWheelEvent { +pub struct MouseUpEvent { + 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, -} - -impl Default for NavigationDirection { - fn default() -> Self { - Self::Back - } + pub click_count: usize, } #[derive(Hash, PartialEq, Eq, Copy, Clone, Debug)] @@ -117,28 +76,16 @@ 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, -} - -#[derive(Clone, Debug, Default)] -pub struct MouseUp { - 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)] @@ -148,6 +95,50 @@ pub struct MouseMovedEvent { pub modifiers: Modifiers, } +#[derive(Clone, Debug)] +pub struct ScrollWheelEvent { + pub position: Point, + 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)] pub struct MouseExitedEvent { pub position: Point, diff --git a/crates/gpui3/src/platform/mac/events.rs b/crates/gpui3/src/platform/mac/events.rs index 700f876a20..a2c96608ec 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), }) }),