git.lucas.co / cce-ui
GPU-accelerated UI toolkit (Vulkan)
git clone https://git.lucas.co/cce-ui.git

commit3c7731b3429313bd73821316d706675aa803d7b3
parentc06a77e780
authorLucas Galante <[email protected]>
date2026-07-16 19:48
feat: param scrollbar sits an eighth of the pane width in from the right

The scrollbar's right edge is now inset from the pane's right side by an
eighth of the pane width, instead of a fixed 4px. Factored into a
scrollbar_x() helper so the draw path and hit test stay in sync.

Co-Authored-By: Claude Fable 5 <[email protected]>

 src/widget/container/parameters_bg.rs | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/widget/container/parameters_bg.rs b/src/widget/container/parameters_bg.rs
index 252f638..0f4274c 100644
--- a/src/widget/container/parameters_bg.rs
+++ b/src/widget/container/parameters_bg.rs
@@ -168,12 +168,19 @@ impl ParametersBg {
         rects
     }
 
+    /// The scrollbar's left x. The bar sits an eighth of the plate's width in from the right
+    /// edge — i.e. that gap separates the bar's right edge from the pane's right side.
+    fn scrollbar_x(&self) -> f32 {
+        let sb_w = crate::layout::scrollbar_width();
+        self.rect.x + self.rect.width - sb_w - self.rect.width / 8.0
+    }
+
     pub fn hit_test_scrollbar(&self, px: f32, py: f32) -> bool {
         if self.content_h <= self.rect.height {
             return false;
         }
         let sb_w = crate::layout::scrollbar_width();
-        let sb_x = self.rect.x + self.rect.width - sb_w - 4.0;
+        let sb_x = self.scrollbar_x();
         let sb_track_h = self.rect.height - 8.0;
         let sb_track_y = self.rect.y + 4.0;
 
@@ -216,7 +223,7 @@ impl ParametersBg {
             return Vec::new();
         }
         let sb_w = crate::layout::scrollbar_width();
-        let sb_x = self.rect.x + self.rect.width - sb_w - 4.0;
+        let sb_x = self.scrollbar_x();
         let sb_track_h = self.rect.height - 8.0;
         let sb_track_y = self.rect.y + 4.0;