From 0fd9602bcc2bcbaa184488c0550309c877f3182c Mon Sep 17 00:00:00 2001 From: Lukas Holecek Date: Mon, 21 Oct 2024 09:57:19 +0200 Subject: [PATCH] Fix toggling current item selection Fixes #2850 --- src/gui/clipboardbrowser.cpp | 10 ++++++++++ src/tests/tests.cpp | 11 +++++++++++ 2 files changed, 21 insertions(+) diff --git a/src/gui/clipboardbrowser.cpp b/src/gui/clipboardbrowser.cpp index ca661d852..b0057d794 100644 --- a/src/gui/clipboardbrowser.cpp +++ b/src/gui/clipboardbrowser.cpp @@ -1390,6 +1390,16 @@ void ClipboardBrowser::keyPressEvent(QKeyEvent *event) const int key = event->key(); + // WORKAROUND: Avoid triggering search with Ctrl+Space toggle selection action. + if (mods.testFlag(Qt::ControlModifier) && key == Qt::Key_Space) { + const QModelIndex current = currentIndex(); + if (!edit(current, AnyKeyPressed, event)) { + selectionModel()->select(current, selectionCommand(current, event)); + event->accept(); + return; + } + } + // This fixes few issues with default navigation and item selections. switch (key) { case Qt::Key_Up: diff --git a/src/tests/tests.cpp b/src/tests/tests.cpp index 83130598b..23c8643d3 100644 --- a/src/tests/tests.cpp +++ b/src/tests/tests.cpp @@ -2606,6 +2606,17 @@ void Tests::selectItems() RUN("keys" << "CTRL+A", ""); RUN("testSelected", tab + " 1 0 1 2\n"); + + // CTRL+SPACE toggles current item selection + RUN("add" << "D", ""); + RUN("keys" << "PGUP" << "CTRL+SHIFT+DOWN" << "CTRL+SHIFT+DOWN", ""); + RUN("testSelected", tab + " 2 0\n"); + RUN("keys" << "CTRL+SPACE", ""); + RUN("testSelected", tab + " 2 0 2\n"); + RUN("keys" << "SHIFT+DOWN", ""); + RUN("testSelected", tab + " 3 0 2 3\n"); + RUN("keys" << "CTRL+SPACE", ""); + RUN("testSelected", tab + " 3 0 2\n"); } void Tests::moveItems()