GModelSelection: Add contains_row(int) and toggle(GModelIndex)

This commit is contained in:
Andreas Kling 2019-09-07 19:33:58 +02:00
commit b0f42ee672
Notes: sideshowbarker 2024-07-19 12:13:49 +09:00
2 changed files with 19 additions and 0 deletions

View file

@ -20,6 +20,16 @@ void GModelSelection::add(const GModelIndex& index)
m_view.notify_selection_changed({});
}
void GModelSelection::toggle(const GModelIndex& index)
{
ASSERT(index.is_valid());
if (m_indexes.contains(index))
m_indexes.remove(index);
else
m_indexes.set(index);
m_view.notify_selection_changed({});
}
bool GModelSelection::remove(const GModelIndex& index)
{
ASSERT(index.is_valid());

View file

@ -14,9 +14,18 @@ public:
bool is_empty() const { return m_indexes.is_empty(); }
bool contains(const GModelIndex& index) const { return m_indexes.contains(index); }
bool contains_row(int row) const
{
for (auto& index : m_indexes) {
if (index.row() == row)
return true;
}
return false;
}
void set(const GModelIndex&);
void add(const GModelIndex&);
void toggle(const GModelIndex&);
bool remove(const GModelIndex&);
void clear();