diff --git a/Libraries/LibGUI/AbstractView.cpp b/Libraries/LibGUI/AbstractView.cpp index 1b2d43e1ba..d51656ff0e 100644 --- a/Libraries/LibGUI/AbstractView.cpp +++ b/Libraries/LibGUI/AbstractView.cpp @@ -438,10 +438,8 @@ void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update m_cursor_index = index; - if (scroll_cursor_into_view) { - // FIXME: We should scroll into view both vertically *and* horizontally. - scroll_into_view(index, false, true); - } + if (scroll_cursor_into_view) + scroll_into_view(index, true, true); update(); } } diff --git a/Libraries/LibGUI/ScrollableWidget.cpp b/Libraries/LibGUI/ScrollableWidget.cpp index 79e8fca124..60c7ab97f9 100644 --- a/Libraries/LibGUI/ScrollableWidget.cpp +++ b/Libraries/LibGUI/ScrollableWidget.cpp @@ -180,14 +180,14 @@ void ScrollableWidget::scroll_into_view(const Gfx::IntRect& rect, bool scroll_ho if (scroll_vertically) { if (rect.top() < visible_content_rect.top()) { m_vertical_scrollbar->set_value(rect.top()); - } else if (rect.bottom() > visible_content_rect.bottom()) { + } else if (rect.top() > visible_content_rect.top() && 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()) { m_horizontal_scrollbar->set_value(rect.left()); - } else if (rect.right() > visible_content_rect.right()) { + } else if (rect.left() > visible_content_rect.left() && rect.right() > visible_content_rect.right()) { m_horizontal_scrollbar->set_value(rect.right() - visible_content_rect.width() + 1); } }