bool NativeEnginePrivate::handleGlWidgetEvent(QEvent *event) { switch (event->type()) { case QEvent::KeyPress: { QKeyEvent *ke = static_cast<QKeyEvent*>(event); if (keyPressCallback) { QScopedArrayPointer<wchar_t> text(new wchar_t[ke->text().length()]); ke->text().toWCharArray(text.data()); keyPressCallback(ke->count(), ke->isAutoRepeat(), ke->key(), ke->modifiers(), text.data()); } } return true; case QEvent::KeyRelease: { QKeyEvent *ke = static_cast<QKeyEvent*>(event); if (keyReleaseCallback) { QScopedArrayPointer<wchar_t> text(new wchar_t[ke->text().length()]); ke->text().toWCharArray(text.data()); keyReleaseCallback(ke->count(), ke->isAutoRepeat(), ke->key(), ke->modifiers(), text.data()); } } return true; case QEvent::MouseButtonDblClick: if (mouseDoubleClickCallback) mouseDoubleClickCallback(createMouseEvent(static_cast<QMouseEvent*>(event))); return true; case QEvent::MouseButtonPress: if (mousePressCallback) mousePressCallback(createMouseEvent(static_cast<QMouseEvent*>(event))); return true; case QEvent::MouseButtonRelease: if (mouseReleaseCallback) mouseReleaseCallback(createMouseEvent(static_cast<QMouseEvent*>(event))); return true; case QEvent::MouseMove: if (mouseMoveCallback) mouseMoveCallback(createMouseEvent(static_cast<QMouseEvent*>(event))); return true; case QEvent::Wheel: if (wheelCallback) wheelCallback(createWheelEvent(static_cast<QWheelEvent*>(event))); return true; case QEvent::Paint: // Ignore all paint events, we handle this ourselves return true; default: // By default pass unknown events to the widget return false; } }
bool GlobalShortcutRegistry::eventFilter(QObject *obj, QEvent *event) { Q_ASSERT(m_filteredWindow); Q_ASSERT(obj == static_cast<QObject*>(m_filteredWindow.data())); if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) { QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event); // Make a copy of the event so we don't alter it for passing on. QKeyEvent eCopy(keyEvent->type(), keyEvent->key(), keyEvent->modifiers(), keyEvent->text(), keyEvent->isAutoRepeat(), keyEvent->count()); eCopy.ignore(); int seq = keyEvent->key() + keyEvent->modifiers(); if (m_shortcuts.contains(seq)) { const auto shortcuts = m_shortcuts.value(seq); Q_FOREACH(const auto &shortcut, shortcuts) { if (shortcut) { qApp->sendEvent(shortcut, &eCopy); } } } return eCopy.isAccepted(); }
void Ut_MInputContext::testKeyEvent() { QEvent::Type eventType = QEvent::KeyPress; int eventKey = Qt::Key_A; Qt::KeyboardModifiers eventModifiers = Qt::NoModifier; QString eventText('A'); bool eventRepeat = false; unsigned short eventCount = 1; WidgetStub widget(0); gFocusedWidget = &widget; m_subject->setFocusWidget(&widget); widget.resetCounters(); m_subject->keyEvent(eventType, eventKey, eventModifiers, eventText, eventRepeat, eventCount); QVERIFY(widget.eventCount() > 0); QKeyEvent expected(eventType, eventKey, eventModifiers, eventText, eventRepeat, eventCount); QKeyEvent result = widget.lastKeyEvent(); QCOMPARE(result.type(), expected.type()); QCOMPARE(result.key(), expected.key()); QCOMPARE(result.modifiers(), expected.modifiers()); QCOMPARE(result.text(), expected.text()); QCOMPARE(result.count(), expected.count()); m_subject->setFocusWidget(0); gFocusedWidget = 0; }
void EWAUserAction::execute( QWebView *webViewPtr ) const { if( !webViewPtr ) { return; } //EWAWebView *pEwaWebView = qobject_cast<EWAWebView*>( webViewPtr ); //bool bNeedSetFocus = false; QEvent *pEventCopy = 0; if( isMouseEvent( m_pEvent->type() ) ) { QMouseEvent *pSrcMouseEvent = static_cast<QMouseEvent *>( m_pEvent ); QPoint clickCoords = pSrcMouseEvent->pos(); pEventCopy = new QMouseEvent( pSrcMouseEvent->type(), clickCoords, webViewPtr->mapToGlobal( clickCoords ), pSrcMouseEvent->button(), pSrcMouseEvent->buttons(), pSrcMouseEvent->modifiers() ); } else if( isKeyEvent( m_pEvent->type() ) ) { QKeyEvent *pSrcKeyEvent = static_cast<QKeyEvent*>( m_pEvent ); pEventCopy = new QKeyEvent( pSrcKeyEvent->type(), pSrcKeyEvent->key(), pSrcKeyEvent->modifiers(), pSrcKeyEvent->text(), pSrcKeyEvent->isAutoRepeat(), pSrcKeyEvent->count() ); } if( pEventCopy ) { QSize dstSz = getWebViewSize(); if( webViewPtr->page()->preferredContentsSize() != dstSz ) { webViewPtr->page()->setPreferredContentsSize( dstSz ); } EWAApplication::postEvent( webViewPtr, pEventCopy ); } }
bool WebPage::event(QEvent *ev) { QMouseEvent* mouseEvent = NULL; QWheelEvent* wheelEvent = NULL; QKeyEvent* keyEvent = NULL; QByteArray byteArray; QBuffer buffer(&byteArray); buffer.open(QIODevice::ReadWrite); QDataStream out(&buffer); out << (int) ev->type(); switch (ev->type()) { case QEvent::MouseMove: case QEvent::MouseButtonPress: case QEvent::MouseButtonDblClick: case QEvent::MouseButtonRelease: if (OPNET::OpNetwork::instance()->isReplay() || OPNET::OpNetwork::instance()->isReplica()) return false; mouseEvent = (static_cast<QMouseEvent*>(ev)); out << mouseEvent->pos() << mouseEvent->globalPos() << (int) mouseEvent->button() << (int) mouseEvent->buttons() << (int) mouseEvent->modifiers(); OPNET::OpNetwork::instance()->sendSysCall(MSG_LOG_USER_INPUT, (int) ev->type(), byteArray); break; case QEvent::Wheel: if (OPNET::OpNetwork::instance()->isReplay() || OPNET::OpNetwork::instance()->isReplica()) return false;; wheelEvent = (static_cast<QWheelEvent*>(ev)); out << wheelEvent->pos() << wheelEvent->globalPos() << wheelEvent->delta() << (int) wheelEvent->buttons() << (int) wheelEvent->modifiers() << (int) wheelEvent->orientation(); OPNET::OpNetwork::instance()->sendSysCall(MSG_LOG_USER_INPUT, (int) ev->type(), byteArray); break; case QEvent::KeyPress: case QEvent::KeyRelease: if (OPNET::OpNetwork::instance()->isReplay() || OPNET::OpNetwork::instance()->isReplica()) return false; keyEvent = (static_cast<QKeyEvent*>(ev)); out << keyEvent->key() << (int) keyEvent->modifiers() << keyEvent->text() << keyEvent->isAutoRepeat() << (int) keyEvent->count(); OPNET::OpNetwork::instance()->sendSysCall(MSG_LOG_USER_INPUT, (int) ev->type(), byteArray); break; default: break; } return QWebPage::event(ev); }
void DBusInputContextConnection::sendKeyEvent(const QKeyEvent &keyEvent, Maliit::EventRequestType requestType) { if (activeConnection) { MInputContextConnection::sendKeyEvent(keyEvent, requestType); ComMeegoInputmethodInputcontext1Interface *proxy = mProxys.value(activeConnection); if (proxy) { proxy->keyEvent(keyEvent.type(), keyEvent.key(), keyEvent.modifiers(), keyEvent.text(), keyEvent.isAutoRepeat(), keyEvent.count(), requestType); } } }
bool HistoryField::eventFilter( QObject* obj, QEvent* event ) { if( event->type() == 6 ) { // The following code should be located in keyPressEvent() (like for DigraphLineEdit). // However, there seems to have a bug in the implementation of QComboBox where keyPressEvent() // is always called twice when we hit a key. Placing the code here fixes that. QKeyEvent* keyEvent = (QKeyEvent*)event; if( digraphEnabled ) { // We consider only printable keys. Control keys are processed normally. // I'm not sure if this test covers all the cases though. if( keyEvent->count() > 0 ) { if( keyEvent->key() == Key_Backspace ) { if( lineEdit()->cursorPosition() > 0 ) { if( buffer.isNull() ) { QString charToDelete( lineEdit()->text().mid( lineEdit()->cursorPosition() - 1, 1 ) ); buffer = charToDelete; } else buffer = QString::null; } } else { if( !buffer.isNull() ) { buffer += keyEvent->text(); const QString newChar( Util::getDigraph( buffer ) ); if( newChar == QString::null ) buffer = QString::null; else { QKeyEvent* digraphEvent = new QKeyEvent( QEvent::KeyPress, 0, 0, 0, newChar, keyEvent->isAutoRepeat(), 0 ); qApp->sendEvent( lineEdit(), digraphEvent ); buffer = QString::null; return( true ); } } } } } } return( QComboBox::eventFilter( obj, event ) ); }
//------------------------------------------------------------------------------ bool IgnoreUndoRedo::eventFilter(QObject* watched, QEvent* event) { if (event->type() == QEvent::KeyPress) { QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); if (keyEvent->matches(QKeySequence::Undo) || keyEvent->matches(QKeySequence::Redo)) { QCoreApplication::postEvent(recipient, new QKeyEvent( keyEvent->type(), keyEvent->key(), keyEvent->modifiers(), keyEvent->nativeScanCode(), keyEvent->nativeVirtualKey(), keyEvent->nativeModifiers(), keyEvent->text(), keyEvent->isAutoRepeat(), keyEvent->count() )); return true; } else { return false; } } else return QObject::eventFilter(watched, event); }
bool CryptobullionAmountField::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::FocusIn) { // Clear invalid flag on focus setValid(true); } else if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); if (keyEvent->key() == Qt::Key_Comma) { // Translate a comma into a period QKeyEvent periodKeyEvent(event->type(), Qt::Key_Period, keyEvent->modifiers(), ".", keyEvent->isAutoRepeat(), keyEvent->count()); qApp->sendEvent(object, &periodKeyEvent); return true; } } return QWidget::eventFilter(object, event); }
bool QtEvent::eventFilter(QObject *target, QEvent *event) { int type = event->type(); void *func = m_hash.value(type); if (func != 0) { int accept = event->isAccepted() ? 1 : 0; switch(type) { case QEvent::Create: case QEvent::Close: case QEvent::Show: case QEvent::Hide: case QEvent::Enter: case QEvent::Leave: { base_event ev = {accept}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::FocusIn: case QEvent::FocusOut: { QFocusEvent *e = (QFocusEvent*)event; focus_event ev = {accept,e->reason()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::Timer: { QTimerEvent *e = (QTimerEvent*)event; timer_event ev = {accept,e->timerId()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::HoverEnter: case QEvent::HoverLeave: case QEvent::HoverMove: { QHoverEvent *e = (QHoverEvent*)event; const QPoint &pt = e->pos(); const QPoint &opt = e->oldPos(); hover_event ev = {accept,pt.x(),pt.y(),opt.x(),opt.y()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::KeyPress: case QEvent::KeyRelease: { QKeyEvent *e = (QKeyEvent*)event; string_head sh; drvSetString(&sh,e->text()); key_event ev = {accept,e->modifiers(),e->count(),e->isAutoRepeat()?1:0,e->key(),e->nativeModifiers(),e->nativeScanCode(),e->nativeVirtualKey(),&sh}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::MouseButtonPress: case QEvent::MouseButtonRelease: case QEvent::MouseButtonDblClick: case QEvent::MouseMove: { QMouseEvent *e = (QMouseEvent*)event; const QPoint &gpt = e->globalPos(); const QPoint &pt = e->pos(); mouse_event ev = {accept,e->modifiers(),e->button(),e->buttons(),gpt.x(),gpt.y(),pt.x(),pt.y()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::Move: { QMoveEvent *e = (QMoveEvent*)event; const QPoint &pt = e->pos(); const QPoint &opt = e->oldPos(); move_event ev = {accept,pt.x(),pt.y(),opt.x(),opt.y()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::Resize: { QResizeEvent *e = (QResizeEvent*)event; const QSize &sz = e->size(); const QSize &osz = e->oldSize(); resize_event ev = {accept,sz.width(),sz.height(),osz.width(),osz.height()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } case QEvent::Paint: { QPaintEvent *e = (QPaintEvent*)event; const QRect &rc = e->rect(); paint_event ev = {accept,rc.x(),rc.y(),rc.width(),rc.height()}; drv_callback(func,&ev,0,0,0); event->setAccepted(ev.accept != 0); break; } default: { return QObject::eventFilter(target,event); } } return true; } return QObject::eventFilter(target,event); }
//intercept return key and map it to the tab key so the dialog doesnt exit bool CEditNetDlg::eventFilter(QObject* o, QEvent* e) { if (e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease) { QKeyEvent* ke = (QKeyEvent*)e; if (ke->key() == Qt::Key_Return || ke->key() == Qt::Key_Enter) { QKeyEvent rep(ke->type(), Qt::Key_Tab, Qt::NoModifier, QString::null, ke->isAutoRepeat(), ke->count()); *ke = rep; } } return QDialog::eventFilter(o, e); }
bool BitcoinAmountField::eventFilter(QObject *object, QEvent *event) { if (event->type() == QEvent::FocusIn) { // Clear invalid flag on focus setValid(true); } else if (event->type() == QEvent::KeyPress || event->type() == QEvent::KeyRelease) { QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); if (keyEvent->key() == Qt::Key_Comma) { // Translate a comma into a period QKeyEvent periodKeyEvent(event->type(), Qt::Key_Period, keyEvent->modifiers(), ".", keyEvent->isAutoRepeat(), keyEvent->count()); qApp->sendEvent(object, &periodKeyEvent); return true; } } else if (event->type() == QEvent::Wheel && qobject_cast<QAbstractSpinBox*>(object)) { if(qobject_cast<QAbstractSpinBox*>(object)->focusPolicy() == Qt::WheelFocus) { event->accept(); return false; } else { event->ignore(); return true; } } return QWidget::eventFilter(object, event); }
void DashboardEditor::sendKeyEvent(const QKeyEvent &ev) { QKeyEvent *new_ev = new QKeyEvent(ev.type(), ev.key(), ev.modifiers(), ev.text(), ev.isAutoRepeat(), ev.count()); qApp->postEvent(m_target, new_ev); }