Checkpoint

Nathan Sobo created

Change summary

crates/gpui/src/gpui.rs              |  1 
crates/gpui2/src/arc_cow.rs          | 53 ++++++++++++++++++++++++++++++
crates/gpui2/src/elements/text.rs    | 53 -----------------------------
crates/gpui2/src/gpui2.rs            |  2 +
crates/storybook/src/collab_panel.rs |  2 
crates/storybook/src/components.rs   |  4 +-
crates/storybook/src/storybook.rs    |  2 
7 files changed, 61 insertions(+), 56 deletions(-)

Detailed changes

crates/gpui/src/gpui.rs 🔗

@@ -28,6 +28,7 @@ pub mod json;
 pub mod keymap_matcher;
 pub mod platform;
 pub use gpui_macros::{test, Element};
+pub use usvg;
 pub use window::{
     Axis, Layout, LayoutEngine, LayoutId, RectFExt, SizeConstraint, Vector2FExt, WindowContext,
 };

crates/gpui2/src/arc_cow.rs 🔗

@@ -0,0 +1,53 @@
+use std::sync::Arc;
+
+pub enum ArcCow<'a, T: ?Sized> {
+    Borrowed(&'a T),
+    Owned(Arc<T>),
+}
+
+impl<'a, T: ?Sized> Clone for ArcCow<'a, T> {
+    fn clone(&self) -> Self {
+        match self {
+            Self::Borrowed(borrowed) => Self::Borrowed(borrowed),
+            Self::Owned(owned) => Self::Owned(owned.clone()),
+        }
+    }
+}
+
+impl<'a, T: ?Sized> From<&'a T> for ArcCow<'a, T> {
+    fn from(s: &'a T) -> Self {
+        Self::Borrowed(s)
+    }
+}
+
+impl<T> From<Arc<T>> for ArcCow<'_, T> {
+    fn from(s: Arc<T>) -> Self {
+        Self::Owned(s)
+    }
+}
+
+impl From<String> for ArcCow<'_, str> {
+    fn from(value: String) -> Self {
+        Self::Owned(value.into())
+    }
+}
+
+impl<T: ?Sized> std::ops::Deref for ArcCow<'_, T> {
+    type Target = T;
+
+    fn deref(&self) -> &Self::Target {
+        match self {
+            ArcCow::Borrowed(s) => s,
+            ArcCow::Owned(s) => s.as_ref(),
+        }
+    }
+}
+
+impl<T: ?Sized> AsRef<T> for ArcCow<'_, T> {
+    fn as_ref(&self) -> &T {
+        match self {
+            ArcCow::Borrowed(borrowed) => borrowed,
+            ArcCow::Owned(owned) => owned.as_ref(),
+        }
+    }
+}

crates/gpui2/src/elements/text.rs 🔗

@@ -2,6 +2,7 @@ use crate::{
     element::{Element, IntoElement, Layout},
     layout_context::LayoutContext,
     paint_context::PaintContext,
+    ArcCow,
 };
 use anyhow::Result;
 use gpui::{geometry::Size, text_layout::LineLayout, LayoutId};
@@ -93,55 +94,3 @@ pub struct TextLayout {
     line_layout: Arc<LineLayout>,
     line_height: f32,
 }
-
-pub enum ArcCow<'a, T: ?Sized> {
-    Borrowed(&'a T),
-    Owned(Arc<T>),
-}
-
-impl<'a, T: ?Sized> Clone for ArcCow<'a, T> {
-    fn clone(&self) -> Self {
-        match self {
-            Self::Borrowed(borrowed) => Self::Borrowed(borrowed),
-            Self::Owned(owned) => Self::Owned(owned.clone()),
-        }
-    }
-}
-
-impl<'a, T: ?Sized> From<&'a T> for ArcCow<'a, T> {
-    fn from(s: &'a T) -> Self {
-        Self::Borrowed(s)
-    }
-}
-
-impl<T> From<Arc<T>> for ArcCow<'_, T> {
-    fn from(s: Arc<T>) -> Self {
-        Self::Owned(s)
-    }
-}
-
-impl From<String> for ArcCow<'_, str> {
-    fn from(value: String) -> Self {
-        Self::Owned(value.into())
-    }
-}
-
-impl<T: ?Sized> std::ops::Deref for ArcCow<'_, T> {
-    type Target = T;
-
-    fn deref(&self) -> &Self::Target {
-        match self {
-            ArcCow::Borrowed(s) => s,
-            ArcCow::Owned(s) => s.as_ref(),
-        }
-    }
-}
-
-impl<T: ?Sized> AsRef<T> for ArcCow<'_, T> {
-    fn as_ref(&self) -> &T {
-        match self {
-            ArcCow::Borrowed(borrowed) => borrowed,
-            ArcCow::Owned(owned) => owned.as_ref(),
-        }
-    }
-}

crates/gpui2/src/gpui2.rs 🔗

@@ -1,4 +1,5 @@
 pub mod adapter;
+mod arc_cow;
 pub mod color;
 pub mod element;
 pub mod elements;
@@ -8,6 +9,7 @@ pub mod paint_context;
 pub mod style;
 pub mod view;
 
+pub use arc_cow::ArcCow;
 pub use color::*;
 pub use element::{AnyElement, Element, IntoElement, Layout, ParentElement};
 pub use geometry::{

crates/storybook/src/collab_panel.rs 🔗

@@ -19,7 +19,7 @@ impl<V: 'static> CollabPanelElement<V> {
 
         div()
             .full()
-            .font("Zed Mono")
+            .font("Zed Sans")
             .text_color(theme.middle.variant.default.foreground)
             .fill(theme.middle.base.default.background)
             .py_2()

crates/storybook/src/components.rs 🔗

@@ -1,6 +1,6 @@
 use gpui2::{
-    elements::div, elements::text::ArcCow, interactive::Interactive, platform::MouseButton,
-    style::StyleHelpers, Element, IntoElement, ParentElement, ViewContext,
+    elements::div, interactive::Interactive, platform::MouseButton, style::StyleHelpers, ArcCow,
+    Element, IntoElement, ParentElement, ViewContext,
 };
 use std::{marker::PhantomData, rc::Rc};
 

crates/storybook/src/storybook.rs 🔗

@@ -44,7 +44,7 @@ fn storybook<V: 'static>(cx: &mut ViewContext<V>) -> impl Element<V> {
     collab_panel().themed(current_theme(cx))
 }
 
-// Nathan: During the transition, we will include the base theme on the legacy Theme struct.
+// Nathan: During the transition to gpui2, we will include the base theme on the legacy Theme struct.
 fn current_theme<V: 'static>(cx: &mut ViewContext<V>) -> Theme {
     settings::get::<ThemeSettings>(cx)
         .theme