diff options
Diffstat (limited to 'filter.cpp')
| -rw-r--r-- | filter.cpp | 33 |
1 files changed, 22 insertions, 11 deletions
@@ -5,38 +5,49 @@ filter::filter(QObject *parent) : QObject(parent) { - m_altPressed = true; + m_tabPressed = 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_Alt) { - emit altPressed(); - m_altPressed = true; + if(ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Backtab) { + if(m_tabPressed) + break; + else m_tabPressed = true; + } + + QString sks; + if(ke->key() == Qt::Key_Control) { + sks = "Ctrl"; } else { QKeySequence ks(ke->modifiers() + ke->key()); - QString sks = ks.toString(); - emit sequencePressed(sks); + sks = ks.toString(); } + emit sequencePressed(QVariant::fromValue<QObject*>(obj), sks); } break; case QEvent::KeyRelease: { QKeyEvent *ke = static_cast<QKeyEvent*>(ev); - if(ke->key() == Qt::Key_Alt) { - emit altReleased(); - m_altPressed = false; + if(ke->key() == Qt::Key_Tab || ke->key() == Qt::Key_Backtab) + m_tabPressed = false; + + QString sks; + if(ke->key() == Qt::Key_Control) { + sks = "Ctrl"; + } else { + QKeySequence ks(ke->modifiers() + ke->key()); + sks = ks.toString(); } + emit sequenceReleased(QVariant::fromValue<QObject*>(obj), sks); } break; case QEvent::MouseButtonPress: { QMouseEvent *me = static_cast<QMouseEvent*>(ev); emit mousePressed(QVariant::fromValue<QObject*>(obj), me->x(), me->y()); - m_mousePressed = true; } break; case QEvent::MouseButtonRelease: { QMouseEvent *me = static_cast<QMouseEvent*>(ev); emit mouseReleased(QVariant::fromValue<QObject*>(obj), me->x(), me->y()); - m_mousePressed = false; } break; default: break; } |
