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 <hichem.f@live.de>
pull/10307/head
Hichem 8 months ago committed by GitHub
parent 92338bc207
commit ea2a4858b7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -283,16 +283,20 @@ impl<T: Component> Component for Popup<T> {
(height + self.margin.height()).min(max_height), (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) Some(self.size)
} }
fn render(&mut self, viewport: Rect, surface: &mut Surface, cx: &mut Context) { fn render(&mut self, viewport: Rect, surface: &mut Surface, cx: &mut Context) {
let area = self.area(viewport, cx.editor); let area = self.area(viewport, cx.editor);
self.area = area; 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); cx.scroll = Some(self.scroll);
// clear area // clear area

Loading…
Cancel
Save