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:
parent
2f50d8f4d3
commit
6c10e9e121
1 changed files with 13 additions and 4 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue