Unnamed repository; edit this file 'description' to name the repository.
Fix scrolling to the end within a popup (#10181)
when the available height for the popup is low/small, then it is not possible to scroll until the end Signed-off-by: Ben Fekih, Hichem <[email protected]>
Hichem 2024-04-08
parent 92338bc · commit ea2a485
-rw-r--r--helix-term/src/ui/popup.rs12
1 files changed, 8 insertions, 4 deletions
diff --git a/helix-term/src/ui/popup.rs b/helix-term/src/ui/popup.rs
index 4f379b4a..124b4402 100644
--- a/helix-term/src/ui/popup.rs
+++ b/helix-term/src/ui/popup.rs
@@ -283,16 +283,20 @@ impl<T: Component> Component for Popup<T> {
(height + self.margin.height()).min(max_height),
);
- // re-clamp scroll offset
- let max_offset = self.child_size.1.saturating_sub(self.size.1);
- self.scroll = self.scroll.min(max_offset as usize);
-
Some(self.size)
}
fn render(&mut self, viewport: Rect, surface: &mut Surface, cx: &mut Context) {
let area = self.area(viewport, cx.editor);
self.area = area;
+
+ // required_size() calculates the popup size without taking account of self.position
+ // so we need to correct the popup height to correctly calculate the scroll
+ self.size.1 = area.height;
+
+ // re-clamp scroll offset
+ let max_offset = self.child_size.1.saturating_sub(self.size.1);
+ self.scroll = self.scroll.min(max_offset as usize);
cx.scroll = Some(self.scroll);
// clear area