LibGUI: Add GAbstractView::activate_selected()

This is a nice little utility to activate all the selected items,
which is what you usually want to do.
This commit is contained in:
Sergey Bugaev 2020-01-10 18:50:26 +03:00 committed by Andreas Kling
parent caa08938e5
commit 0f18a16e2c
Notes: sideshowbarker 2024-07-19 10:13:34 +09:00
5 changed files with 21 additions and 24 deletions

View File

@ -383,9 +383,7 @@ void GAbstractColumnView::keydown_event(GKeyEvent& event)
return;
auto& model = *this->model();
if (event.key() == KeyCode::Key_Return) {
selection().for_each_index([this](auto& index) {
activate(index);
});
activate_selected();
return;
}
if (event.key() == KeyCode::Key_Up) {
@ -457,13 +455,10 @@ void GAbstractColumnView::doubleclick_event(GMouseEvent& event)
if (event.y() < header_height())
return;
if (!selection().is_empty()) {
if (is_editable()) {
if (is_editable())
begin_editing(selection().first());
} else {
selection().for_each_index([this](auto& index) {
activate(index);
});
}
else
activate_selected();
}
}
}

View File

@ -113,6 +113,16 @@ void GAbstractView::activate(const GModelIndex& index)
on_activation(index);
}
void GAbstractView::activate_selected()
{
if (!on_activation)
return;
selection().for_each_index([this](auto& index) {
on_activation(index);
});
}
void GAbstractView::notify_selection_changed(Badge<GModelSelection>)
{
did_update_selection();

View File

@ -51,6 +51,7 @@ protected:
virtual void did_scroll() override;
void activate(const GModelIndex&);
void activate_selected();
void update_edit_widget_position();
bool m_editable { false };

View File

@ -258,9 +258,7 @@ void GItemView::doubleclick_event(GMouseEvent& event)
return;
if (event.button() == GMouseButton::Left) {
mousedown_event(event);
selection().for_each_index([this](auto& index) {
activate(index);
});
activate_selected();
}
}
@ -352,9 +350,7 @@ void GItemView::keydown_event(GKeyEvent& event)
auto& model = *this->model();
if (event.key() == KeyCode::Key_Return) {
selection().for_each_index([this](auto& index) {
activate(index);
});
activate_selected();
return;
}
if (event.key() == KeyCode::Key_Home) {

View File

@ -161,9 +161,7 @@ void GListView::keydown_event(GKeyEvent& event)
return;
auto& model = *this->model();
if (event.key() == KeyCode::Key_Return) {
selection().for_each_index([this](auto& index) {
activate(index);
});
activate_selected();
return;
}
if (event.key() == KeyCode::Key_Up) {
@ -233,13 +231,10 @@ void GListView::doubleclick_event(GMouseEvent& event)
return;
if (event.button() == GMouseButton::Left) {
if (!selection().is_empty()) {
if (is_editable()) {
if (is_editable())
begin_editing(selection().first());
} else {
selection().for_each_index([this](auto& index) {
activate(index);
});
}
else
activate_selected();
}
}
}