From ea011d11d6b952cf269d7ff46a13daa052eb7779 Mon Sep 17 00:00:00 2001 From: Jason Lee Date: Fri, 22 Nov 2024 15:38:47 +0800 Subject: [PATCH] dock: Hide toggle button when side dock is not exist. (#431) --- crates/ui/src/dock/dock.rs | 2 +- crates/ui/src/dock/tab_panel.rs | 14 +++++++++++--- crates/ui/src/scroll/scrollable_mask.rs | 2 +- crates/ui/src/scroll/scrollbar.rs | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/crates/ui/src/dock/dock.rs b/crates/ui/src/dock/dock.rs index 5e56a484..759c3b3e 100644 --- a/crates/ui/src/dock/dock.rs +++ b/crates/ui/src/dock/dock.rs @@ -296,7 +296,7 @@ impl Render for Dock { }) // Bottom Dock should keep the title bar, then user can click the Toggle button .when(!self.open && self.placement.is_bottom(), |this| { - this.h(px(30.)) + this.h(px(29.)) }) .map(|this| match &self.panel { DockItem::Split { view, .. } => this.child(view.clone()), diff --git a/crates/ui/src/dock/tab_panel.rs b/crates/ui/src/dock/tab_panel.rs index 90797394..f89ecaee 100644 --- a/crates/ui/src/dock/tab_panel.rs +++ b/crates/ui/src/dock/tab_panel.rs @@ -385,13 +385,21 @@ impl TabPanel { let view_entity_id = cx.view().entity_id(); let dock_area = self.dock_area.upgrade()?.read(cx); + let toggle_button_panels = dock_area.toggle_button_panels; // Check if current TabPanel's entity_id matches the one stored in DockArea for this placement if !match placement { - DockPlacement::Left => toggle_button_panels.left == Some(view_entity_id), - DockPlacement::Right => toggle_button_panels.right == Some(view_entity_id), - DockPlacement::Bottom => toggle_button_panels.bottom == Some(view_entity_id), + DockPlacement::Left => { + dock_area.left_dock.is_some() && toggle_button_panels.left == Some(view_entity_id) + } + DockPlacement::Right => { + dock_area.right_dock.is_some() && toggle_button_panels.right == Some(view_entity_id) + } + DockPlacement::Bottom => { + dock_area.bottom_dock.is_some() + && toggle_button_panels.bottom == Some(view_entity_id) + } } { return None; } diff --git a/crates/ui/src/scroll/scrollable_mask.rs b/crates/ui/src/scroll/scrollable_mask.rs index 4efb4bfd..a6f29ba8 100644 --- a/crates/ui/src/scroll/scrollable_mask.rs +++ b/crates/ui/src/scroll/scrollable_mask.rs @@ -117,7 +117,7 @@ impl Element for ScrollableMask { bounds, border_widths: Edges::all(px(1.0)), border_color: color, - background: gpui::transparent_white().into(), + background: gpui::transparent_white(), corner_radii: Corners::all(px(0.)), }); } diff --git a/crates/ui/src/scroll/scrollbar.rs b/crates/ui/src/scroll/scrollbar.rs index 01588f71..56f7cb45 100644 --- a/crates/ui/src/scroll/scrollbar.rs +++ b/crates/ui/src/scroll/scrollbar.rs @@ -460,7 +460,7 @@ impl Element for Scrollbar { cx.paint_quad(PaintQuad { bounds, corner_radii: (0.).into(), - background: gpui::transparent_black().into(), + background: gpui::transparent_black(), border_widths: if is_vertical { Edges { top: px(0.),