LibGUI: Add GModelSelection to help implementing multiple-select views

Each GAbstractView now has a GModelSelection backed by a simple
HashTable<GModelIndex>. When the selection changes somehow, the view
gets notified via the notify_selection_changed() callback.

In the future it will probably make sense to move to using some kind of
ranges as the internal representation instead.
This commit is contained in:
Andreas Kling 2019-09-07 19:14:59 +02:00
parent 19b69741ed
commit 82559e211d
Notes: sideshowbarker 2024-07-19 12:13:55 +09:00
5 changed files with 95 additions and 0 deletions

View file

@ -8,6 +8,7 @@
GAbstractView::GAbstractView(GWidget* parent)
: GScrollableWidget(parent)
, m_selection(*this)
{
}
@ -96,3 +97,8 @@ void GAbstractView::activate(const GModelIndex& index)
if (on_activation)
on_activation(index);
}
void GAbstractView::notify_selection_changed(Badge<GModelSelection>)
{
update();
}