Checkpoint

Nate Butler created

Change summary

crates/gpui3/src/elements/hoverable.rs    | 3 ++-
crates/ui2/src/components/list.rs         | 3 +++
crates/ui2/src/components/notification.rs | 1 +
crates/ui2/src/prelude.rs                 | 5 +++--
4 files changed, 9 insertions(+), 3 deletions(-)

Detailed changes

crates/gpui3/src/elements/hoverable.rs 🔗

@@ -108,9 +108,10 @@ where
             let hovered = self.hovered.clone();
 
             move |_, event: &MouseMoveEvent, phase, cx| {
-                if phase == DispatchPhase::Capture {
+                if phase == DispatchPhase::Bubble {
                     if target_bounds.contains_point(event.position) != hovered.load(SeqCst) {
                         cx.notify();
+                        cx.stop_propagation();
                     }
                 }
             }

crates/ui2/src/components/list.rs 🔗

@@ -397,6 +397,7 @@ impl<S: 'static + Send + Sync + Clone> ListEntry<S> {
 
         div()
             .relative()
+            .group("")
             .fill(color.surface)
             .when(self.state == InteractionState::Focused, |this| {
                 this.border().border_color(color.border_focused)
@@ -411,6 +412,8 @@ impl<S: 'static + Send + Sync + Clone> ListEntry<S> {
                             .h_full()
                             .flex()
                             .justify_center()
+                            .group_hover("")
+                            .fill(color.border_focused)
                             .child(
                                 h_stack()
                                     .child(div().w_px().h_full())

crates/ui2/src/components/notification.rs 🔗

@@ -24,6 +24,7 @@ pub struct NotificationToast<S: 'static + Send + Sync + Clone> {
 
 impl<S: 'static + Send + Sync + Clone> NotificationToast<S> {
     pub fn new(
+        // TODO: use a `SharedString` here
         title: impl Into<String>,
         message: impl Into<String>,
         primary_action: Button<S>,

crates/ui2/src/prelude.rs 🔗

@@ -19,7 +19,7 @@ pub struct Token {
 impl Default for Token {
     fn default() -> Self {
         Self {
-            list_indent_depth: AbsoluteLength::Rems(rems(0.3)),
+            list_indent_depth: rems(0.3).into(),
             default_panel_size: AbsoluteLength::Rems(rems(16.)),
             state_hover_background: hsla(0.0, 0.0, 0.0, 0.08),
             state_active_background: hsla(0.0, 0.0, 0.0, 0.16),
@@ -74,7 +74,8 @@ pub struct ThemeColor {
     /// or tapped on a touch screen.
     /// - TODO: Map to step 5.
     pub filled_element_active: Hsla,
-    /// The background color of a selected element, like a selected tab, a button toggled on, or a checkbox that is checked.
+    /// The background color of a selected element, like a selected tab,
+    /// a button toggled on, or a checkbox that is checked.
     pub filled_element_selected: Hsla,
     pub filled_element_disabled: Hsla,
     pub ghost_element: Hsla,