static PyObject *meth_QInputMethodQueryEvent_setValue(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; { Qt::InputMethodQuery a0; const QVariant* a1; int a1State = 0; QInputMethodQueryEvent *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "BEJ1", &sipSelf, sipType_QInputMethodQueryEvent, &sipCpp, sipType_Qt_InputMethodQuery, &a0, sipType_QVariant, &a1, &a1State)) { sipCpp->setValue(a0,*a1); sipReleaseType(const_cast<QVariant *>(a1),sipType_QVariant,a1State); Py_INCREF(Py_None); return Py_None; } } /* Raise an exception if the arguments couldn't be parsed. */ sipNoMethod(sipParseErr, sipName_QInputMethodQueryEvent, sipName_setValue, doc_QInputMethodQueryEvent_setValue); return NULL; }
bool QOpenGLWebPage::event(QEvent *event) { switch (event->type()) { case QEvent::InputMethodQuery: { QInputMethodQueryEvent *query = static_cast<QInputMethodQueryEvent*>(event); Qt::InputMethodQueries queries = query->queries(); for (int bit = 0; bit < 32; bit++) { Qt::InputMethodQuery q = (Qt::InputMethodQuery)(1<<bit); if (queries & q) query->setValue(q, inputMethodQuery(q)); } query->accept(); break; } case QEvent::InputMethod: inputMethodEvent(static_cast<QInputMethodEvent*>(event)); break; case QEvent::FocusIn: focusInEvent(static_cast<QFocusEvent*>(event)); break; case QEvent::FocusOut: focusOutEvent(static_cast<QFocusEvent*>(event)); break; case QEvent::KeyPress: keyPressEvent(static_cast<QKeyEvent*>(event)); break; case QEvent::KeyRelease: keyReleaseEvent(static_cast<QKeyEvent*>(event)); break; default: return QObject::event(event); } return true; }
bool OffscreenSurface::eventFilter(QObject* originalDestination, QEvent* event) { if (!filterEnabled(originalDestination, event)) { return false; } #ifdef DEBUG // Don't intercept our own events, or we enter an infinite recursion { auto rootItem = _sharedObject->getRootItem(); auto quickWindow = _sharedObject->getWindow(); QObject* recurseTest = originalDestination; while (recurseTest) { Q_ASSERT(recurseTest != rootItem && recurseTest != quickWindow); recurseTest = recurseTest->parent(); } } #endif switch (event->type()) { case QEvent::KeyPress: case QEvent::KeyRelease: { event->ignore(); if (QCoreApplication::sendEvent(_sharedObject->getWindow(), event)) { return event->isAccepted(); } break; } case QEvent::Wheel: { QWheelEvent* wheelEvent = static_cast<QWheelEvent*>(event); QPointF transformedPos = mapToVirtualScreen(wheelEvent->pos()); QWheelEvent mappedEvent(transformedPos, wheelEvent->delta(), wheelEvent->buttons(), wheelEvent->modifiers(), wheelEvent->orientation()); mappedEvent.ignore(); if (QCoreApplication::sendEvent(_sharedObject->getWindow(), &mappedEvent)) { return mappedEvent.isAccepted(); } break; } case QEvent::MouseMove: { QMouseEvent* mouseEvent = static_cast<QMouseEvent*>(event); QPointF transformedPos = mapToVirtualScreen(mouseEvent->localPos()); QMouseEvent mappedEvent(mouseEvent->type(), transformedPos, mouseEvent->screenPos(), mouseEvent->button(), mouseEvent->buttons(), mouseEvent->modifiers()); mappedEvent.ignore(); if (QCoreApplication::sendEvent(_sharedObject->getWindow(), &mappedEvent)) { return mappedEvent.isAccepted(); } break; } #if defined(Q_OS_ANDROID) case QEvent::TouchBegin: case QEvent::TouchUpdate: case QEvent::TouchEnd: { QTouchEvent *originalEvent = static_cast<QTouchEvent *>(event); QEvent::Type fakeMouseEventType = QEvent::None; Qt::MouseButton fakeMouseButton = Qt::LeftButton; Qt::MouseButtons fakeMouseButtons = Qt::NoButton; switch (event->type()) { case QEvent::TouchBegin: fakeMouseEventType = QEvent::MouseButtonPress; fakeMouseButtons = Qt::LeftButton; break; case QEvent::TouchUpdate: fakeMouseEventType = QEvent::MouseMove; fakeMouseButtons = Qt::LeftButton; break; case QEvent::TouchEnd: fakeMouseEventType = QEvent::MouseButtonRelease; fakeMouseButtons = Qt::NoButton; break; } // Same case as OffscreenUi.cpp::eventFilter: touch events are always being accepted so we now use mouse events and consider one touch, touchPoints()[0]. QMouseEvent fakeMouseEvent(fakeMouseEventType, originalEvent->touchPoints()[0].pos(), fakeMouseButton, fakeMouseButtons, Qt::NoModifier); fakeMouseEvent.ignore(); if (QCoreApplication::sendEvent(_sharedObject->getWindow(), &fakeMouseEvent)) { /*qInfo() << __FUNCTION__ << "sent fake touch event:" << fakeMouseEvent.type() << "_quickWindow handled it... accepted:" << fakeMouseEvent.isAccepted();*/ return fakeMouseEvent.isAccepted(); } break; } case QEvent::InputMethod: case QEvent::InputMethodQuery: { auto window = getWindow(); if (window && window->activeFocusItem()) { event->ignore(); if (QCoreApplication::sendEvent(window->activeFocusItem(), event)) { bool eventAccepted = event->isAccepted(); if (event->type() == QEvent::InputMethodQuery) { QInputMethodQueryEvent *imqEvent = static_cast<QInputMethodQueryEvent *>(event); // this block disables the selection cursor in android which appears in // the top-left corner of the screen if (imqEvent->queries() & Qt::ImEnabled) { imqEvent->setValue(Qt::ImEnabled, QVariant(false)); } } return eventAccepted; } return false; } break; } #endif default: break; } return false; }