diff options
Diffstat (limited to 'filter.cpp')
| -rw-r--r-- | filter.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
@@ -34,13 +34,20 @@ filter::filter(QObject *parent) : QObject(parent) { m_tabPressed = false; + m_backtabPressed = false; } bool filter::eventFilter(QObject *obj, QEvent *ev) { switch(ev->type()) { case QEvent::KeyPress: { QKeyEvent *ke = static_cast<QKeyEvent*>(ev); - if(ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Backtab) { + if(ke->key() == Qt::Key_Backtab) { + if(m_backtabPressed) + break; + else m_backtabPressed = true; + } + + if(ke->key() == Qt::Key_Tab) { if(m_tabPressed) break; else m_tabPressed = true; @@ -58,7 +65,7 @@ bool filter::eventFilter(QObject *obj, QEvent *ev) { sks = ks.toString(); } #ifndef Q_OS_MAC - if(sks.contains("Alt+Tab") || sks.contains("Alt+Shift+Backtab")) + if(sks.contains("Alt+Tab") || sks.contains("Alt+Backtab")) break; #else sks.replace("Meta", "Ctrl"); @@ -67,7 +74,11 @@ bool filter::eventFilter(QObject *obj, QEvent *ev) { } break; case QEvent::KeyRelease: { QKeyEvent *ke = static_cast<QKeyEvent*>(ev); - if(ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Backtab) + + if(ke->key() == Qt::Key_Backtab) + m_backtabPressed = false; + + if(ke->key() == Qt::Key_Tab) m_tabPressed = false; QString sks; @@ -88,7 +99,7 @@ bool filter::eventFilter(QObject *obj, QEvent *ev) { sks = ks.toString(); } #ifndef Q_OS_MAC - if(sks.contains("Alt+Tab") || sks.contains("Alt+Shift+Backtab")) + if(sks.contains("Alt+Tab") || sks.contains("Alt+Backtab")) break; #else sks.replace("Meta", "Ctrl"); |
