From f06b240ce0265ba121a5e41b4319cad1a666e53d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Tue, 29 Dec 2020 00:43:50 +0100 Subject: [PATCH] LibGUI: Enforce the SelectionMode in AbstractView::set_cursor() --- Libraries/LibGUI/AbstractView.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Libraries/LibGUI/AbstractView.cpp b/Libraries/LibGUI/AbstractView.cpp index 4bceeb3028..8a4f0618fd 100644 --- a/Libraries/LibGUI/AbstractView.cpp +++ b/Libraries/LibGUI/AbstractView.cpp @@ -433,7 +433,7 @@ void AbstractView::set_key_column_and_sort_order(int column, SortOrder sort_orde void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update, bool scroll_cursor_into_view) { - if (!model() || !index.is_valid()) { + if (!model() || !index.is_valid() || selection_mode() == SelectionMode::NoSelection) { m_cursor_index = {}; cancel_searching(); return; @@ -442,6 +442,9 @@ void AbstractView::set_cursor(ModelIndex index, SelectionUpdate selection_update if (!m_cursor_index.is_valid() || model()->parent_index(m_cursor_index) != model()->parent_index(index)) cancel_searching(); + if (selection_mode() == SelectionMode::SingleSelection && (selection_update == SelectionUpdate::Ctrl || selection_update == SelectionUpdate::Shift)) + selection_update = SelectionUpdate::Set; + if (model()->is_valid(index)) { if (selection_update == SelectionUpdate::Set) set_selection(index);