diff --git a/crates/gpui2/src/adapter.rs b/crates/gpui2/src/adapter.rs index 6aa89385af..d1bc7ac290 100644 --- a/crates/gpui2/src/adapter.rs +++ b/crates/gpui2/src/adapter.rs @@ -1,4 +1,4 @@ -use crate::{layout_context::LayoutContext, paint_context::PaintContext}; +use crate::{paint_context::PaintContext, ViewContext}; use gpui::{geometry::rect::RectF, LayoutEngine, LayoutId}; use util::ResultExt; @@ -17,7 +17,7 @@ impl gpui::Element for AdapterElement { ) -> (gpui::geometry::vector::Vector2F, Self::LayoutState) { cx.push_layout_engine(LayoutEngine::new()); - let mut cx = LayoutContext::new(cx); + let mut cx = ViewContext::new(cx); let layout_id = self.0.layout(view, &mut cx).log_err(); if let Some(layout_id) = layout_id { cx.layout_engine() diff --git a/crates/gpui2/src/element.rs b/crates/gpui2/src/element.rs index 3f376f978f..d2a8efee83 100644 --- a/crates/gpui2/src/element.rs +++ b/crates/gpui2/src/element.rs @@ -1,5 +1,5 @@ -pub use crate::layout_context::LayoutContext; pub use crate::paint_context::PaintContext; +pub use crate::ViewContext; use anyhow::Result; use gpui::geometry::vector::Vector2F; pub use gpui::{Layout, LayoutId}; @@ -11,7 +11,7 @@ pub trait Element: 'static + IntoElement { fn layout( &mut self, view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> Result<(LayoutId, Self::PaintState)> where Self: Sized; @@ -39,7 +39,7 @@ pub trait Element: 'static + IntoElement { /// Used to make ElementState into a trait object, so we can wrap it in AnyElement. trait AnyStatefulElement { - fn layout(&mut self, view: &mut V, cx: &mut LayoutContext) -> Result; + fn layout(&mut self, view: &mut V, cx: &mut ViewContext) -> Result; fn paint(&mut self, view: &mut V, parent_origin: Vector2F, cx: &mut PaintContext); } @@ -86,7 +86,7 @@ impl> Default for ElementPhase { /// We blanket-implement the object-safe ElementStateObject interface to make ElementStates into trait objects impl> AnyStatefulElement for StatefulElement { - fn layout(&mut self, view: &mut V, cx: &mut LayoutContext) -> Result { + fn layout(&mut self, view: &mut V, cx: &mut ViewContext) -> Result { let result; self.phase = match self.element.layout(view, cx) { Ok((layout_id, paint_state)) => { @@ -145,7 +145,7 @@ impl> AnyStatefulElement for StatefulElement { pub struct AnyElement(Box>); impl AnyElement { - pub fn layout(&mut self, view: &mut V, cx: &mut LayoutContext) -> Result { + pub fn layout(&mut self, view: &mut V, cx: &mut ViewContext) -> Result { self.0.layout(view, cx) } diff --git a/crates/gpui2/src/elements/div.rs b/crates/gpui2/src/elements/div.rs index 162383642a..f32b22434a 100644 --- a/crates/gpui2/src/elements/div.rs +++ b/crates/gpui2/src/elements/div.rs @@ -3,10 +3,9 @@ use std::{cell::Cell, rc::Rc}; use crate::{ element::{AnyElement, Element, IntoElement, Layout, ParentElement}, hsla, - layout_context::LayoutContext, paint_context::PaintContext, style::{CornerRadii, Overflow, Style, StyleHelpers, Styleable}, - InteractionHandlers, Interactive, + InteractionHandlers, Interactive, ViewContext, }; use anyhow::Result; use gpui::{ @@ -41,7 +40,7 @@ impl Element for Div { fn layout( &mut self, view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> Result<(LayoutId, Self::PaintState)> where Self: Sized, diff --git a/crates/gpui2/src/elements/hoverable.rs b/crates/gpui2/src/elements/hoverable.rs index 89a8b663ee..ba8109038f 100644 --- a/crates/gpui2/src/elements/hoverable.rs +++ b/crates/gpui2/src/elements/hoverable.rs @@ -1,9 +1,9 @@ use crate::{ element::{AnyElement, Element, IntoElement, Layout, ParentElement}, interactive::{InteractionHandlers, Interactive}, - layout_context::LayoutContext, paint_context::PaintContext, style::{Style, StyleHelpers, Styleable}, + ViewContext, }; use anyhow::Result; use gpui::{geometry::vector::Vector2F, platform::MouseMovedEvent, LayoutId}; @@ -45,7 +45,7 @@ impl + Styleable> Element for Hoverable { fn layout( &mut self, view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> Result<(LayoutId, Self::PaintState)> where Self: Sized, diff --git a/crates/gpui2/src/elements/img.rs b/crates/gpui2/src/elements/img.rs index 8f9620ce2a..a4934c5415 100644 --- a/crates/gpui2/src/elements/img.rs +++ b/crates/gpui2/src/elements/img.rs @@ -1,6 +1,8 @@ use crate as gpui2; -use crate::style::{StyleHelpers, Styleable}; -use crate::{style::Style, Element}; +use crate::{ + style::{Style, StyleHelpers, Styleable}, + Element, +}; use futures::FutureExt; use gpui::geometry::vector::Vector2F; use gpui::scene; @@ -35,7 +37,7 @@ impl Element for Img { fn layout( &mut self, _: &mut V, - cx: &mut crate::LayoutContext, + cx: &mut crate::ViewContext, ) -> anyhow::Result<(gpui::LayoutId, Self::PaintState)> where Self: Sized, diff --git a/crates/gpui2/src/elements/pressable.rs b/crates/gpui2/src/elements/pressable.rs index db6652fad5..1b696e7ef6 100644 --- a/crates/gpui2/src/elements/pressable.rs +++ b/crates/gpui2/src/elements/pressable.rs @@ -1,9 +1,9 @@ use crate::{ element::{AnyElement, Element, IntoElement, Layout, ParentElement}, interactive::{InteractionHandlers, Interactive}, - layout_context::LayoutContext, paint_context::PaintContext, style::{Style, StyleHelpers, Styleable}, + ViewContext, }; use anyhow::Result; use gpui::{geometry::vector::Vector2F, platform::MouseButtonEvent, LayoutId}; @@ -45,7 +45,7 @@ impl + Styleable> Element for Pressable { fn layout( &mut self, view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> Result<(LayoutId, Self::PaintState)> where Self: Sized, diff --git a/crates/gpui2/src/elements/svg.rs b/crates/gpui2/src/elements/svg.rs index 216725b6d6..ebf06178aa 100644 --- a/crates/gpui2/src/elements/svg.rs +++ b/crates/gpui2/src/elements/svg.rs @@ -34,7 +34,7 @@ impl Element for Svg { fn layout( &mut self, _: &mut V, - cx: &mut crate::LayoutContext, + cx: &mut crate::ViewContext, ) -> anyhow::Result<(LayoutId, Self::PaintState)> where Self: Sized, diff --git a/crates/gpui2/src/elements/text.rs b/crates/gpui2/src/elements/text.rs index c0e2996d16..97b911201a 100644 --- a/crates/gpui2/src/elements/text.rs +++ b/crates/gpui2/src/elements/text.rs @@ -1,7 +1,7 @@ use crate::{ element::{Element, IntoElement, Layout}, - layout_context::LayoutContext, paint_context::PaintContext, + ViewContext, }; use anyhow::Result; use gpui::{ @@ -31,7 +31,7 @@ impl Element for Text { fn layout( &mut self, _view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> Result<(LayoutId, Self::PaintState)> { let fonts = cx.platform().fonts(); let text_style = cx.text_style(); diff --git a/crates/gpui2/src/gpui2.rs b/crates/gpui2/src/gpui2.rs index c92d22ba61..11d5279ec1 100644 --- a/crates/gpui2/src/gpui2.rs +++ b/crates/gpui2/src/gpui2.rs @@ -3,10 +3,10 @@ pub mod color; pub mod element; pub mod elements; pub mod interactive; -pub mod layout_context; pub mod paint_context; pub mod style; pub mod view; +pub mod view_context; pub use color::*; pub use element::{AnyElement, Element, IntoElement, Layout, ParentElement}; @@ -17,7 +17,7 @@ pub use geometry::{ pub use gpui::*; pub use gpui2_macros::{Element, *}; pub use interactive::*; -pub use layout_context::LayoutContext; pub use platform::{Platform, WindowBounds, WindowOptions}; pub use util::arc_cow::ArcCow; pub use view::*; +pub use view_context::ViewContext; diff --git a/crates/gpui2/src/layout_context.rs b/crates/gpui2/src/view_context.rs similarity index 76% rename from crates/gpui2/src/layout_context.rs rename to crates/gpui2/src/view_context.rs index 0249246514..43d8093240 100644 --- a/crates/gpui2/src/layout_context.rs +++ b/crates/gpui2/src/view_context.rs @@ -2,17 +2,17 @@ use crate::{element::LayoutId, style::Style}; use anyhow::{anyhow, Result}; use derive_more::{Deref, DerefMut}; use gpui::{geometry::Size, MeasureParams}; -pub use gpui::{taffy::tree::NodeId, LayoutContext as LegacyLayoutContext}; +pub use gpui::{taffy::tree::NodeId, ViewContext as LegacyViewContext}; #[derive(Deref, DerefMut)] -pub struct LayoutContext<'a, 'b, 'c, 'd, V> { +pub struct ViewContext<'a, 'b, 'c, V> { #[deref] #[deref_mut] - pub(crate) legacy_cx: &'d mut LegacyLayoutContext<'a, 'b, 'c, V>, + pub(crate) legacy_cx: &'c mut LegacyViewContext<'a, 'b, V>, } -impl<'a, 'b, 'c, 'd, V: 'static> LayoutContext<'a, 'b, 'c, 'd, V> { - pub fn new(legacy_cx: &'d mut LegacyLayoutContext<'a, 'b, 'c, V>) -> Self { +impl<'a, 'b, 'c, V: 'static> ViewContext<'a, 'b, 'c, V> { + pub fn new(legacy_cx: &'c mut LegacyViewContext<'a, 'b, V>) -> Self { Self { legacy_cx } } diff --git a/crates/gpui2_macros/src/derive_element.rs b/crates/gpui2_macros/src/derive_element.rs index ca94112a02..a769437676 100644 --- a/crates/gpui2_macros/src/derive_element.rs +++ b/crates/gpui2_macros/src/derive_element.rs @@ -67,7 +67,7 @@ pub fn derive_element(input: TokenStream) -> TokenStream { fn layout( &mut self, view: &mut V, - cx: &mut gpui2::element::LayoutContext, + cx: &mut gpui2::ViewContext, ) -> anyhow::Result<(gpui2::element::LayoutId, Self::PaintState)> { let mut rendered_element = self.render(view, cx).into_element().into_any(); let layout_id = rendered_element.layout(view, cx)?; diff --git a/crates/storybook/src/components.rs b/crates/storybook/src/components.rs index c24f9d672b..1aafefc1a6 100644 --- a/crates/storybook/src/components.rs +++ b/crates/storybook/src/components.rs @@ -1,11 +1,11 @@ use gpui2::{ elements::div, interactive::Interactive, platform::MouseButton, style::StyleHelpers, ArcCow, - Element, IntoElement, ParentElement, ViewContext, + Element, EventContext, IntoElement, ParentElement, ViewContext, }; use std::{marker::PhantomData, rc::Rc}; struct ButtonHandlers { - click: Option)>>, + click: Option)>>, } impl Default for ButtonHandlers { @@ -59,7 +59,10 @@ impl Button { self } - pub fn on_click(mut self, handler: impl Fn(&mut V, &D, &mut ViewContext) + 'static) -> Self { + pub fn on_click( + mut self, + handler: impl Fn(&mut V, &D, &mut EventContext) + 'static, + ) -> Self { self.handlers.click = Some(Rc::new(handler)); self } diff --git a/crates/storybook/src/storybook.rs b/crates/storybook/src/storybook.rs index cbfc9681f6..04e1038988 100644 --- a/crates/storybook/src/storybook.rs +++ b/crates/storybook/src/storybook.rs @@ -41,7 +41,7 @@ fn main() { |cx| { view(|cx| { cx.enable_inspector(); - storybook(cx) + storybook(&mut ViewContext::new(cx)) }) }, ); diff --git a/crates/storybook/src/theme.rs b/crates/storybook/src/theme.rs index fbcb8e37a8..45327e1ffc 100644 --- a/crates/storybook/src/theme.rs +++ b/crates/storybook/src/theme.rs @@ -1,8 +1,7 @@ use gpui2::{ color::Hsla, element::{Element, PaintContext}, - layout_context::LayoutContext, - serde_json, AppContext, IntoElement, Vector2F, WindowContext, + serde_json, AppContext, IntoElement, Vector2F, ViewContext, WindowContext, }; use serde::{de::Visitor, Deserialize, Deserializer}; use std::{collections::HashMap, fmt, marker::PhantomData}; @@ -146,7 +145,7 @@ impl> Element for Themed { fn layout( &mut self, view: &mut V, - cx: &mut LayoutContext, + cx: &mut ViewContext, ) -> anyhow::Result<(gpui2::LayoutId, Self::PaintState)> where Self: Sized,