From eec39dc23ccb121828cc0f2cfee2c78396940140 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Fri, 18 Aug 2023 17:14:29 -0600 Subject: [PATCH] WIP --- crates/gpui/playground/docs/thoughts.md | 33 +++++++++++++++++++ crates/gpui/playground/src/hoverable.rs | 7 ++-- crates/gpui/src/platform/event.rs | 7 ++-- .../src/derive_refineable.rs | 2 -- 4 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 crates/gpui/playground/docs/thoughts.md diff --git a/crates/gpui/playground/docs/thoughts.md b/crates/gpui/playground/docs/thoughts.md new file mode 100644 index 0000000000000000000000000000000000000000..147d8bdc81a93a06e9f01266d499b7573c13d72a --- /dev/null +++ b/crates/gpui/playground/docs/thoughts.md @@ -0,0 +1,33 @@ +```rs +#[derive(Styled, Interactive)] +pub struct Div { + declared_style: StyleRefinement, + interactions: Interactions +} + +pub trait Styled { + fn declared_style(&mut self) -> &mut StyleRefinement; + fn compute_style(&mut self) -> Style { + Style::default().refine(self.declared_style()) + } + + // All the tailwind classes, modifying self.declared_style() +} + +impl Style { + pub fn paint_background(layout: Layout, cx: &mut PaintContext); + pub fn paint_foreground(layout: Layout, cx: &mut PaintContext); +} + +pub trait Interactive { + fn interactions(&mut self) -> &mut Interactions; + + fn on_click(self, ) +} + +struct Interactions { + click: SmallVec<[; 1]>, +} + + +``` diff --git a/crates/gpui/playground/src/hoverable.rs b/crates/gpui/playground/src/hoverable.rs index b09e1079f5d5511229078a92ea1adec36440d213..d703ecbdf8d16c4a7d39669efa52110da4e347a8 100644 --- a/crates/gpui/playground/src/hoverable.rs +++ b/crates/gpui/playground/src/hoverable.rs @@ -2,7 +2,7 @@ use std::{cell::Cell, marker::PhantomData, rc::Rc}; use gpui::{ geometry::{rect::RectF, vector::Vector2F}, - scene::MouseMove, + platform::MouseMovedEvent, EngineLayout, ViewContext, }; use refineable::Refineable; @@ -40,6 +40,8 @@ impl> Element for Hoverable { } fn computed_style(&mut self, cx: &mut ViewContext) -> &StyleRefinement { + dbg!(self.computed_style.is_some()); + self.computed_style.get_or_insert_with(|| { let mut style = self.child.computed_style(cx).clone(); if self.hovered.get() { @@ -83,9 +85,10 @@ impl> Element for Hoverable { order, window_bounds, false, - move |view, event: &MouseMove, cx| { + move |view, event: &MouseMovedEvent, cx| { let mouse_within_bounds = bounds.contains_point(cx.mouse_position()); if mouse_within_bounds != hovered.get() { + dbg!("hovered", mouse_within_bounds); hovered.set(mouse_within_bounds); cx.repaint(); } diff --git a/crates/gpui/src/platform/event.rs b/crates/gpui/src/platform/event.rs index bb76bb995e1edd0c0ee2a45d0d5112b6c25d6570..07d730172ef2e88eed8a912e9044dcc247540bc5 100644 --- a/crates/gpui/src/platform/event.rs +++ b/crates/gpui/src/platform/event.rs @@ -228,10 +228,9 @@ impl Event { Event::ModifiersChanged { .. } => None, Event::MouseDown(event) => Some(event), Event::MouseUp(event) => Some(event), - _ => None, - // Event::MouseMoved(event) => Some(event), - // Event::MouseExited(event) => Some(event), - // Event::ScrollWheel(event) => Some(event), + Event::MouseMoved(event) => Some(event), + Event::MouseExited(event) => Some(event), + Event::ScrollWheel(event) => Some(event), } } } diff --git a/crates/refineable/derive_refineable/src/derive_refineable.rs b/crates/refineable/derive_refineable/src/derive_refineable.rs index 939726fc8f5821da201d3b12693b4a15510948f6..b5ba4124820c8a775974a427542b2d6e35f10914 100644 --- a/crates/refineable/derive_refineable/src/derive_refineable.rs +++ b/crates/refineable/derive_refineable/src/derive_refineable.rs @@ -147,8 +147,6 @@ pub fn derive_refineable(input: TokenStream) -> TokenStream { } }; - println!("{}", gen); - gen.into() }