From 68339dfb629b1ffc8c57c16fcda2a269b171f5fc Mon Sep 17 00:00:00 2001 From: Jonathan Johnson Date: Sat, 11 Nov 2023 10:23:24 -0800 Subject: [PATCH] Scroll fixes --- examples/login.rs | 1 + examples/scroll.rs | 1 + src/widgets/scroll.rs | 16 ++++------------ 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/examples/login.rs b/examples/login.rs index 3075628..89d1281 100644 --- a/examples/login.rs +++ b/examples/login.rs @@ -46,6 +46,7 @@ fn main() -> gooey::Result { Lp::points(300)..Lp::points(600), Stack::rows(username_row.and(password_row).and(buttons)), ) + .scroll() .centered() .expand() .run() diff --git a/examples/scroll.rs b/examples/scroll.rs index 4875ca7..745ec1f 100644 --- a/examples/scroll.rs +++ b/examples/scroll.rs @@ -5,5 +5,6 @@ use gooey::Run; fn main() -> gooey::Result { Label::new(include_str!("../src/widgets/scroll.rs")) .scroll() + .expand() .run() } diff --git a/src/widgets/scroll.rs b/src/widgets/scroll.rs index bed39da..9811800 100644 --- a/src/widgets/scroll.rs +++ b/src/widgets/scroll.rs @@ -126,22 +126,17 @@ impl Widget for Scroll { fn redraw(&mut self, context: &mut crate::context::GraphicsContext<'_, '_, '_, '_, '_>) { context.redraw_when_changed(&self.scrollbar_opacity); - let Some(visible_rect) = context.gfx.visible_rect() else { - return; - }; - let visible_bottom_right = visible_rect.into_signed().extent(); let managed = self.contents.mounted(&mut context.as_event_context()); context.for_other(&managed).redraw(); + let size = context.gfx.region().size; + if self.horizontal_bar.amount_hidden > 0 { context.gfx.draw_shape( &Shape::filled_rect( Rect::new( - Point::new( - self.horizontal_bar.offset, - self.control_size.height - self.bar_width, - ), + Point::new(self.horizontal_bar.offset, size.height - self.bar_width), Size::new(self.horizontal_bar.size, self.bar_width), ), Color::new_f32(1.0, 1.0, 1.0, *self.scrollbar_opacity.get()), @@ -156,10 +151,7 @@ impl Widget for Scroll { context.gfx.draw_shape( &Shape::filled_rect( Rect::new( - Point::new( - visible_bottom_right.x - self.bar_width, - self.vertical_bar.offset, - ), + Point::new(size.width - self.bar_width, self.vertical_bar.offset), Size::new(self.bar_width, self.vertical_bar.size), ), Color::new_f32(1.0, 1.0, 1.0, *self.scrollbar_opacity.get()),