From 4f1cc1ff310caf6296b7a4fc671157ffaaf7be1c Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 24 Jun 2024 14:24:02 +0200 Subject: [PATCH] Core: fix direction of Ctrl+N/P/Up/Down Additionally accept the shortcut override events in order to block other potential shortcuts from interfering with the selection of the open document. amends e6299f510d44b5b57913026da3625ded316d848b amends 03e35aac14c8ee2d9531297b658b4106b11c303b Task-number: QTCREATORBUG-31072 Change-Id: Idfd65b92a84f5be39f9a01da68e8046ae5304733 Reviewed-by: Eike Ziller --- .../editormanager/openeditorswindow.cpp | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 0967fb16e6e..172b54570e1 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -165,34 +165,35 @@ bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e) auto ke = static_cast(e); switch (ke->key()) { case Qt::Key_Up: - selectPreviousEditor(); + case Qt::Key_P: + e->accept(); return true; case Qt::Key_Down: - selectNextEditor(); - return true; - case Qt::Key_P: case Qt::Key_N: - if (ke->modifiers() == Qt::KeyboardModifiers(HostOsInfo::controlModifier())) { - if (ke->key() == Qt::Key_P) - selectPreviousEditor(); - else - selectNextEditor(); - return true; - } - break; + e->accept(); + return true; } } if (e->type() == QEvent::KeyPress) { auto ke = static_cast(e); - if (ke->key() == Qt::Key_Escape) { + switch (ke->key()) { + case Qt::Key_Up: + case Qt::Key_P: + selectNextEditor(); + return true; + case Qt::Key_Down: + case Qt::Key_N: + selectPreviousEditor(); + return true; + case Qt::Key_Escape: setVisible(false); return true; - } - if (ke->key() == Qt::Key_Return - || ke->key() == Qt::Key_Enter) { + case Qt::Key_Return: + case Qt::Key_Enter: selectEditor(m_editorView->currentItem()); return true; } + } else if (e->type() == QEvent::KeyRelease) { auto ke = static_cast(e); if (ke->modifiers() == 0