diff --git a/src/resources/vnote.ini b/src/resources/vnote.ini index 002dba68..a4aff38e 100644 --- a/src/resources/vnote.ini +++ b/src/resources/vnote.ini @@ -193,6 +193,10 @@ FindNext=F3 FindPrevious=Shift+F3 ; Recover last closed file LastClosedFile=Ctrl+Shift+T +; Activate next tab +ActivateNextTab=Ctrl+Tab +; Activate previous tab +ActivatePreviousTab=Ctrl+Shift+Tab [captain_mode_shortcuts] ; Define shortcuts in Captain mode here. diff --git a/src/utils/vvim.cpp b/src/utils/vvim.cpp index 2ed52705..7a0bd933 100644 --- a/src/utils/vvim.cpp +++ b/src/utils/vvim.cpp @@ -521,13 +521,6 @@ bool VVim::handleKeyPressEvent(int key, int modifiers, int *p_autoIndentPos) goto accept; } - // Ctrl+Tab and Ctrl+Shift+BackTab to alternate tabs. - if ((key == Qt::Key_Tab && modifiers == Qt::ControlModifier) - || (key == Qt::Key_Backtab && modifiers == (Qt::ShiftModifier | Qt::ControlModifier))) { - // Let it be handled outside VVim. - goto exit; - } - if (m_replayLeaderSequence) { qDebug() << "replaying sequence" << keyToChar(key, modifiers); } diff --git a/src/veditarea.cpp b/src/veditarea.cpp index 3a4a8dee..90784622 100644 --- a/src/veditarea.cpp +++ b/src/veditarea.cpp @@ -28,6 +28,31 @@ VEditArea::VEditArea(QWidget *parent) setCurrentWindow(0, false); registerCaptainTargets(); + + + QString keySeq = g_config->getShortcutKeySequence("ActivateNextTab"); + qDebug() << "set ActivateNextTab shortcut to" << keySeq; + QShortcut *activateNextTab = new QShortcut(QKeySequence(keySeq), this); + activateNextTab->setContext(Qt::ApplicationShortcut); + connect(activateNextTab, &QShortcut::activated, + this, [this]() { + VEditWindow *win = getCurrentWindow(); + if (win) { + win->focusNextTab(true); + } + }); + + keySeq = g_config->getShortcutKeySequence("ActivatePreviousTab"); + qDebug() << "set ActivatePreviousTab shortcut to" << keySeq; + QShortcut *activatePreviousTab = new QShortcut(QKeySequence(keySeq), this); + activatePreviousTab->setContext(Qt::ApplicationShortcut); + connect(activatePreviousTab, &QShortcut::activated, + this, [this]() { + VEditWindow *win = getCurrentWindow(); + if (win) { + win->focusNextTab(false); + } + }); } void VEditArea::setupUI()