From b6bea3d25be7a3bb81888e73d43d9198310d852b Mon Sep 17 00:00:00 2001 From: Ben Wiederhake Date: Fri, 1 May 2020 04:24:35 +0200 Subject: [PATCH] LibGUI: Fix off-by-one in ScrollableWidget This was most notable in the widgets TextBox and TextEditor (and therefore also ComboBox and ColorInput), because there the cursor regularly landed just one pixel outside the visible region when going to the right. --- Libraries/LibGUI/ScrollableWidget.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Libraries/LibGUI/ScrollableWidget.cpp b/Libraries/LibGUI/ScrollableWidget.cpp index 622876d0ab..3968a4b99e 100644 --- a/Libraries/LibGUI/ScrollableWidget.cpp +++ b/Libraries/LibGUI/ScrollableWidget.cpp @@ -171,16 +171,18 @@ void ScrollableWidget::scroll_into_view(const Gfx::Rect& rect, bool scroll_horiz return; if (scroll_vertically) { - if (rect.top() < visible_content_rect.top()) + if (rect.top() < visible_content_rect.top()) { m_vertical_scrollbar->set_value(rect.top()); - else if (rect.bottom() > visible_content_rect.bottom()) - m_vertical_scrollbar->set_value(rect.bottom() - visible_content_rect.height()); + } else if (rect.bottom() > visible_content_rect.bottom()) { + m_vertical_scrollbar->set_value(rect.bottom() - visible_content_rect.height() + 1); + } } if (scroll_horizontally) { - if (rect.left() < visible_content_rect.left()) + if (rect.left() < visible_content_rect.left()) { m_horizontal_scrollbar->set_value(rect.left()); - else if (rect.right() > visible_content_rect.right()) - m_horizontal_scrollbar->set_value(rect.right() - visible_content_rect.width()); + } else if (rect.right() > visible_content_rect.right()) { + m_horizontal_scrollbar->set_value(rect.right() - visible_content_rect.width() + 1); + } } }