1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 15:58:11 +00:00

LibGUI: Make Tableview handle multi-selected indexes when deleting

Previously when the delete key was pressed, only the first selected
cell index would have been deleted. This commit remedies that by first
checking when more than a single index is selected.
This commit is contained in:
Glenford Williams 2022-01-10 17:03:20 -05:00 committed by Linus Groh
parent 2f50d8f4d3
commit 6c10e9e121

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2022, Glenford Williams <gw_dev@outlook.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -178,12 +179,20 @@ void TableView::keydown_event(KeyEvent& event)
if (is_editable() && edit_triggers() & EditTrigger::AnyKeyPressed && (event.code_point() != 0 || is_clear)) {
begin_editing(cursor_index());
if (m_editing_delegate) {
if (is_delete)
m_editing_delegate->set_value(String {});
else if (is_backspace)
if (is_delete) {
if (selection().size() > 1) {
selection().for_each_index([&](GUI::ModelIndex& index) {
begin_editing(index);
m_editing_delegate->set_value(String {});
});
} else {
m_editing_delegate->set_value(String {});
}
} else if (is_backspace) {
m_editing_delegate->set_value(String::empty());
else
} else {
m_editing_delegate->set_value(event.text(), ModelEditingDelegate::SelectionBehavior::DoNotSelect);
}
}
}
}