diff --git a/src/cataloglistview/cataloglistview.cpp b/src/cataloglistview/cataloglistview.cpp --- a/src/cataloglistview/cataloglistview.cpp +++ b/src/cataloglistview/cataloglistview.cpp @@ -41,8 +41,6 @@ #include #include #include -#include -#include #include #include diff --git a/src/lokalizemainwindow.h b/src/lokalizemainwindow.h --- a/src/lokalizemainwindow.h +++ b/src/lokalizemainwindow.h @@ -32,12 +32,14 @@ #include #include #include +#include #include class QLabel; class QMdiSubWindow; class QMdiArea; class QActionGroup; +class LokalizeMdiArea; class KRecentFilesAction; class EditorTab; class MultiEditorAdaptor; @@ -155,7 +157,7 @@ Q_SCRIPTABLE void editorActivated(); private: - QMdiArea* m_mdiArea; + LokalizeMdiArea* m_mdiArea; QPointer m_prevSubWindow; QPointer m_projectSubWindow; QPointer m_translationMemorySubWindow; @@ -181,6 +183,13 @@ FileToEditor m_fileToEditor; }; +class LokalizeMdiArea: public QMdiArea +{ + Q_OBJECT +public slots: + void activateNextSubWindow(); + void activatePreviousSubWindow(); +}; #include diff --git a/src/lokalizemainwindow.cpp b/src/lokalizemainwindow.cpp --- a/src/lokalizemainwindow.cpp +++ b/src/lokalizemainwindow.cpp @@ -58,8 +58,8 @@ #include #include -#include #include +#include #include #include #include @@ -69,7 +69,7 @@ LokalizeMainWindow::LokalizeMainWindow() : KXmlGuiWindow() - , m_mdiArea(new QMdiArea) + , m_mdiArea(new LokalizeMdiArea) , m_prevSubWindow(0) , m_projectSubWindow(0) , m_translationMemorySubWindow(0) @@ -117,6 +117,7 @@ QTimer::singleShot(0, this, &LokalizeMainWindow::initLater); } + void LokalizeMainWindow::initLater() { if (!m_prevSubWindow && m_projectSubWindow) @@ -496,10 +497,13 @@ //KStandardAction::close(m_mdiArea, SLOT(closeActiveSubWindow()), ac); actionCategory = file; - ADD_ACTION_SHORTCUT("next-tab", i18n("Next tab"), Qt::CTRL + Qt::Key_BracketRight) - connect(action, &QAction::triggered, m_mdiArea, &QMdiArea::activateNextSubWindow); + ADD_ACTION_SHORTCUT("next-tab", i18n("Next tab"), Qt::CTRL + Qt::Key_Tab) + connect(action, &QAction::triggered, m_mdiArea, &LokalizeMdiArea::activateNextSubWindow); - ADD_ACTION_SHORTCUT("prev-tab", i18n("Previous tab"), Qt::CTRL + Qt::Key_BracketLeft) + ADD_ACTION_SHORTCUT("prev-tab", i18n("Previous tab"), Qt::CTRL + Qt::SHIFT + Qt::Key_Tab) + connect(action, &QAction::triggered, m_mdiArea, &LokalizeMdiArea::activatePreviousSubWindow); + + ADD_ACTION_SHORTCUT("prev-active-tab", i18n("Previously active tab"), Qt::CTRL + Qt::Key_BracketLeft) connect(action, &QAction::triggered, m_mdiArea, &QMdiArea::activatePreviousSubWindow); //Tools @@ -991,9 +995,22 @@ { busy ? QApplication::setOverrideCursor(Qt::WaitCursor) : QApplication::restoreOverrideCursor(); } -// void LokalizeMainWindow::processEvents(){QCoreApplication::processEvents();} +void LokalizeMdiArea::activateNextSubWindow() +{ + this->setActivationOrder((QMdiArea::WindowOrder)Settings::tabSwitch()); + this->QMdiArea::activateNextSubWindow(); + this->setActivationOrder(QMdiArea::ActivationHistoryOrder); +} + +void LokalizeMdiArea::activatePreviousSubWindow() +{ + this->setActivationOrder((QMdiArea::WindowOrder)Settings::tabSwitch()); + this->QMdiArea::activatePreviousSubWindow(); + this->setActivationOrder(QMdiArea::ActivationHistoryOrder); +} + MultiEditorAdaptor::MultiEditorAdaptor(EditorTab *parent) : EditorAdaptor(parent) { @@ -1015,7 +1032,6 @@ void MultiEditorAdaptor::handleParentDestroy(QObject* p) { Q_UNUSED(p); - qCWarning(LOKALIZE_LOG) << "avoiding destroying m_multiEditorAdaptor"; setParent(0); } diff --git a/src/nokde-stubs/prefs.cpp b/src/nokde-stubs/prefs.cpp --- a/src/nokde-stubs/prefs.cpp +++ b/src/nokde-stubs/prefs.cpp @@ -61,6 +61,7 @@ , mDeleteFromTMOnMissing(false) , mWordCompletionLength(3) + , mTabSwitch(0) , mSuggCount(10) , mSuggScore(0) { diff --git a/src/nokde-stubs/prefs_lokalize.h b/src/nokde-stubs/prefs_lokalize.h --- a/src/nokde-stubs/prefs_lokalize.h +++ b/src/nokde-stubs/prefs_lokalize.h @@ -135,6 +135,12 @@ return self()->mWordCompletionLength; } + static + int tabSwitch() + { + return self()->mTabSwitch; + } + static bool prefetchTM() { @@ -203,6 +209,7 @@ bool mDeleteFromTMOnMissing; int mWordCompletionLength; + int mTabSwitch; int mSuggCount; int mSuggScore; }; diff --git a/src/noteeditor.cpp b/src/noteeditor.cpp --- a/src/noteeditor.cpp +++ b/src/noteeditor.cpp @@ -1,4 +1,3 @@ - /* **************************************************************************** This file is part of Lokalize diff --git a/src/prefs/lokalize.kcfg b/src/prefs/lokalize.kcfg --- a/src/prefs/lokalize.kcfg +++ b/src/prefs/lokalize.kcfg @@ -97,6 +97,9 @@ 4 + + 0 + false diff --git a/src/prefs/prefs_editor.ui b/src/prefs/prefs_editor.ui --- a/src/prefs/prefs_editor.ui +++ b/src/prefs/prefs_editor.ui @@ -17,7 +17,7 @@ 6 - + Qt::Vertical @@ -80,6 +80,40 @@ + + + + + + Defines the behavior of the next/previous tab shortcuts + + + Next/previous tab shortcut behavior + + + + + + + + According to tab position + + + 0 + + + + + According to tab activation order + + + 2 + + + + + +