LibGUI: Open and increment ComboBox ListViews by exact steps

This feels a bit nicer and always places the current index at the top
of visible content in long scrollable lists.
This commit is contained in:
thankyouverycool 2023-04-02 13:26:35 -04:00 committed by Andreas Kling
parent 207409c925
commit 1097f3066e
2 changed files with 6 additions and 2 deletions

View file

@ -271,8 +271,11 @@ void ComboBox::open()
m_list_window->set_rect(rect);
m_list_view->set_min_size(rect.size());
if (m_selected_index.has_value())
m_list_view->set_cursor(m_selected_index.value(), AbstractView::SelectionUpdate::Set);
if (m_selected_index.has_value()) {
m_list_view->set_cursor(m_selected_index.value(), AbstractView::SelectionUpdate::Set, false);
auto index_top = m_list_view->vertical_scrollbar().step() * m_selected_index.value().row();
m_list_view->vertical_scrollbar().set_value(index_top);
}
m_list_window->show();
}

View file

@ -21,6 +21,7 @@ ListView::ListView()
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);
set_searchable(true);
vertical_scrollbar().set_step(item_height());
}
ListView::~ListView() = default;