40 #include <qpa/qplatformwindow.h>
42 #include "private/qguiapplication_p.h"
43 #include "private/qevent_p.h"
44 #include "private/qeventpoint_p.h"
45 #include "private/qpointingdevice_p.h"
46 #include "private/qscreen_p.h"
47 #include <QAbstractEventDispatcher>
48 #include <qpa/qplatformintegration.h>
52 #include <QtCore/qscopedvaluerollback.h>
53 #include <QtCore/private/qlocking_p.h>
55 #if QT_CONFIG(draganddrop)
56 #include <qpa/qplatformdrag.h>
87 template<typename Delivery>
90 template<
typename EventType,
typename ...Args>
110 template<
typename EventType,
typename ...Args>
129 template<
typename EventType,
typename ...Args>
136 return event.eventAccepted;
155 template<
typename EventType,
typename ...Args>
160 dispatcher->wakeUp();
165 static bool handleWindowSystemEvent(
Args ...
args)
228 #define QT_DEFINE_QPA_EVENT_HANDLER(ReturnType, HandlerName, ...) \
229 template Q_GUI_EXPORT ReturnType QWindowSystemInterface::HandlerName<QWindowSystemInterface::DefaultDelivery>(__VA_ARGS__); \
230 template Q_GUI_EXPORT ReturnType QWindowSystemInterface::HandlerName<QWindowSystemInterface::SynchronousDelivery>(__VA_ARGS__); \
231 template Q_GUI_EXPORT ReturnType QWindowSystemInterface::HandlerName<QWindowSystemInterface::AsynchronousDelivery>(__VA_ARGS__); \
232 template<typename Delivery> ReturnType QWindowSystemInterface::HandlerName(__VA_ARGS__)
249 handleWindowSystemEvent<QWindowSystemInterfacePrivate::EnterEvent, Delivery>(
window,
256 handleWindowSystemEvent<QWindowSystemInterfacePrivate::LeaveEvent, Delivery>(
window);
268 handleLeaveEvent<AsynchronousDelivery>(
leave);
274 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ActivatedWindowEvent, Delivery>(
window,
r);
281 oldState =
window->windowStates();
283 handleWindowSystemEvent<QWindowSystemInterfacePrivate::WindowStateChangedEvent, Delivery>(
window,
newState, Qt::WindowStates(oldState));
288 handleWindowSystemEvent<QWindowSystemInterfacePrivate::WindowScreenChangedEvent, Delivery>(
window,
screen);
293 handleWindowSystemEvent<QWindowSystemInterfacePrivate::SafeAreaMarginsChangedEvent, Delivery>(
window);
299 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ApplicationStateChangedEvent, Delivery>(
newState, forcePropagate);
304 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::WindowSystemEvent, Delivery>(
311 , newGeometry(newGeometry)
314 const auto nativeGeometry = pw->QPlatformWindow::geometry();
325 window->handle()->QPlatformWindow::setGeometry(newRect);
330 handleWindowSystemEvent<QWindowSystemInterfacePrivate::GeometryChangeEvent, Delivery>(
window, newRectDi);
360 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::ExposeEvent, Delivery>(
window,
366 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::PaintEvent, Delivery>(
window,
374 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::CloseEvent, Delivery>(
window);
416 "QWindowSystemInterface::handleMouseEvent",
417 "QTBUG-71263: Native double clicks are not implemented.");
421 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::MouseEvent, Delivery>(
window,
427 Qt::MouseButtons
state,
429 Qt::KeyboardModifiers mods,
438 Qt::MouseButtons
state,
440 Qt::KeyboardModifiers mods,
449 Qt::MouseButtons
state,
451 Qt::KeyboardModifiers mods,
460 Qt::MouseButtons
state,
462 Qt::KeyboardModifiers mods,
468 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::MouseEvent>(
window,
475 #if QT_CONFIG(shortcut)
486 bool overridden = handleWindowSystemEvent<QWindowSystemInterfacePrivate::KeyEvent, SynchronousDelivery>
488 nativeVirtualKey, nativeModifiers,
text, autorepeat,
count);
497 nativeVirtualKey, nativeModifiers,
text, autorepeat,
count);
522 #if defined(Q_OS_MACOS)
527 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::KeyEvent, Delivery>(
window,
538 return handleExtendedKeyEvent(
window,
time,
type,
key, modifiers, nativeScanCode, nativeVirtualKey, nativeModifiers,
539 text, autorep,
count, tryShortcutOverride);
543 Qt::KeyboardModifiers modifiers,
549 #if defined(Q_OS_MACOS)
551 timestamp,
key, modifiers, nativeScanCode, nativeVirtualKey, nativeModifiers,
text, autorep,
count)) {
558 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::KeyEvent>(
window,
559 timestamp,
type,
key, modifiers, nativeScanCode, nativeVirtualKey, nativeModifiers,
text, autorep,
count);
572 pixelDelta, angleDelta, mods, phase,
source, invertedScrolling);
594 if (angleDelta.
y() != 0 && angleDelta.
x() == 0) {
595 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::WheelEvent>(
window,
601 if (angleDelta.
y() == 0 && angleDelta.
x() != 0) {
602 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::WheelEvent>(
window,
612 acceptVert = handleWindowSystemEvent<QWindowSystemInterfacePrivate::WheelEvent>(
window,
618 acceptHorz = handleWindowSystemEvent<QWindowSystemInterfacePrivate::WheelEvent>(
window,
622 return acceptVert || acceptHorz;
684 while (point !=
end) {
686 QEventPoint p(point->id, point->state, globalPos, globalPos);
688 if (point->uniqueId >= 0)
690 QMutableEventPoint::setPressure(
p, point->pressure);
691 QMutableEventPoint::setRotation(
p, point->rotation);
705 if (
states == QEventPoint::State::Pressed)
707 else if (
states == QEventPoint::State::Released)
723 p.pressure = pt.pressure();
724 p.state = pt.state();
749 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::TouchEvent, Delivery>(
window,
754 Qt::KeyboardModifiers mods)
761 Qt::KeyboardModifiers mods)
763 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::TouchEvent, Delivery>(
window,
789 screen->d_func()->updateHighDpi();
809 delete platformScreen->
screen();
810 delete platformScreen;
824 if (indexOfScreen == 0)
828 emit qGuiApp->primaryScreenChanged(newPrimaryScreen);
833 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ScreenOrientationEvent>(
screen, orientation);
838 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ScreenGeometryEvent>(
screen,
846 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ScreenLogicalDotsPerInchEvent>(
screen,
847 effectiveDpi.first, effectiveDpi.second);
852 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ScreenRefreshRateEvent>(
screen, newRefreshRate);
857 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ThemeChangeEvent, Delivery>(
window);
860 #if QT_CONFIG(draganddrop)
869 const QPoint &
p, Qt::DropActions supportedActions,
870 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
873 return QGuiApplicationPrivate::processDrag(
window, dropData,
pos, supportedActions, buttons, modifiers);
877 const QPoint &
p, Qt::DropActions supportedActions,
878 Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
881 return QGuiApplicationPrivate::processDrop(
window, dropData,
pos, supportedActions, buttons, modifiers);
911 platformSynthesizesMouse =
v;
916 Qt::MouseButtons buttons,
qreal pressure,
int xTilt,
int yTilt,
918 Qt::KeyboardModifiers modifiers)
920 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletEvent>(
window,
924 device, buttons, pressure,
925 xTilt, yTilt, tangentialPressure,
rotation,
z, modifiers);
930 Qt::MouseButtons buttons,
qreal pressure,
int xTilt,
int yTilt,
932 Qt::KeyboardModifiers modifiers)
936 buttons, pressure, xTilt, yTilt, tangentialPressure,
941 int device,
int pointerType, Qt::MouseButtons buttons,
qreal pressure,
int xTilt,
int yTilt,
943 Qt::KeyboardModifiers modifiers)
947 return handleTabletEvent(
window, timestamp, dev,
local,
global, buttons, pressure,
948 xTilt, yTilt, tangentialPressure,
rotation,
z, modifiers);
952 int device,
int pointerType, Qt::MouseButtons buttons,
qreal pressure,
int xTilt,
int yTilt,
954 Qt::KeyboardModifiers modifiers)
958 xTilt, yTilt, tangentialPressure,
rotation,
z, uid, modifiers);
963 Qt::MouseButtons buttons,
int xTilt,
int yTilt,
965 Qt::KeyboardModifiers modifiers)
978 ? handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletEnterProximityEvent>(timestamp,
device)
979 : handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletLeaveProximityEvent>(timestamp,
device);
984 Qt::MouseButtons buttons,
int xTilt,
int yTilt,
986 Qt::KeyboardModifiers modifiers)
989 return handleTabletEnterLeaveProximityEvent(
window,
time,
device, inProximity,
991 tangentialPressure,
rotation,
z, modifiers);
1000 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletEnterProximityEvent>(timestamp,
device);
1006 handleTabletEnterProximityEvent(
time, deviceType, pointerType, uid);
1014 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::TabletLeaveProximityEvent>(timestamp,
device);
1020 handleTabletLeaveProximityEvent(
time, deviceType, pointerType, uid);
1023 #ifndef QT_NO_GESTURES
1043 return handleWindowSystemEvent<QWindowSystemInterfacePrivate::GestureEvent>(
window,
1044 timestamp,
type,
device, fingerCount, localPos, globalPos,
value, delta);
1050 handleWindowSystemEvent<QWindowSystemInterfacePrivate::PlatformPanelEvent>(
w);
1053 #ifndef QT_NO_CONTEXTMENU
1056 Qt::KeyboardModifiers modifiers)
1058 handleWindowSystemEvent<QWindowSystemInterfacePrivate::ContextMenuEvent>(
window,
1059 mouseTriggered,
pos, globalPos, modifiers);
1063 #if QT_CONFIG(whatsthis)
1064 void QWindowSystemInterface::handleEnterWhatsThisEvent()
1066 handleWindowSystemEvent<QWindowSystemInterfacePrivate::WindowSystemEvent>(
1071 #ifndef QT_NO_DEBUG_STREAM
1075 dbg.
nospace() <<
"TouchPoint(" <<
p.id <<
" @" <<
p.area <<
" normalized " <<
p.normalPosition
1076 <<
" press " <<
p.pressure <<
" vel " <<
p.velocity <<
" state " << (int)
p.state;
1094 <<
"QWindowSystemInterface::flushWindowSystemEvents() invoked after "
1095 "QGuiApplication destruction, discarding " <<
count <<
" events.";
1103 handleWindowSystemEvent<QWindowSystemInterfacePrivate::FlushEventsEvent, AsynchronousDelivery>(
flags);
1106 sendWindowSystemEvents(
flags);
1116 sendWindowSystemEvents(
flags);
1149 return (nevents > 0);
1180 QWindowSystemInterface::handleMouseEvent<QWindowSystemInterface::SynchronousDelivery>(
window,
1186 QWindowSystemInterface::handleKeyEvent<QWindowSystemInterface::SynchronousDelivery>(
window,
t, k, mods,
text, autorep,
count);
1191 #if QT_CONFIG(shortcut)
1231 static qint64 nextId = 0x100000000;
1244 QWindowSystemInterface::handleTouchEvent<QWindowSystemInterface::SynchronousDelivery>(
window,
device,
The QAbstractEventDispatcher class provides an interface to manage Qt's event queue.
The QAtomicInt class provides platform-independent atomic operations on int.
void storeRelaxed(T newValue) noexcept
T loadRelaxed() const noexcept
The QByteArray class provides an array of bytes.
static QCoreApplication * instance()
static bool sendEvent(QObject *receiver, QEvent *event)
The QDebug class provides an output stream for debugging information.
Convenience class for custom QDebug operators.
The QElapsedTimer class provides a fast way to calculate elapsed times.
qint64 elapsed() const noexcept
@ NonClientAreaMouseButtonDblClick
The QEventPoint class provides information about a point in a QPointerEvent.
static QWindow * focusWindow()
static QPlatformIntegration * platformIntegration()
static QAbstractEventDispatcher * qt_qpa_core_dispatcher()
static bool processNativeEvent(QWindow *window, const QByteArray &eventType, void *message, qintptr *result)
static QGuiApplicationPrivate * instance()
static QList< QScreen * > screen_list
static Qt::KeyboardModifiers modifier_buttons
static void resetCachedDevicePixelRatio()
static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e)
static void updateHighDpiScaling()
The QKeyEvent class describes a key event.
The QLatin1String class provides a thin wrapper around an US-ASCII/Latin-1 encoded string literal.
qsizetype size() const noexcept
void swapItemsAt(qsizetype i, qsizetype j)
const_iterator constBegin() const noexcept
void prepend(rvalue_ref t)
void reserve(qsizetype size)
void append(parameter_type t)
const_iterator constEnd() const noexcept
The QMimeData class provides a container for data that records information about its MIME type.
The QMutex class provides access serialization between threads.
The QMutexLocker class is a convenience class that simplifies locking and unlocking mutexes.
The QObject class is the base class of all Qt objects.
The QPointF class defines a point in the plane using floating point precision.
The QPoint class defines a point in the plane using integer precision.
constexpr bool isNull() const noexcept
constexpr int x() const noexcept
constexpr int y() const noexcept
The QPointer class is a template class that provides guarded pointers to QObject.
The QPointingDevice class describes a device from which mouse, touch or tablet events originate.
static const QPointingDevice * primaryPointingDevice(const QString &seatName=QString())
static const QPointingDevice * tabletDevice(QInputDevice::DeviceType deviceType, QPointingDevice::PointerType pointerType, QPointingDeviceUniqueId uniqueId)
static QPointingDeviceUniqueId fromNumericId(qint64 id)
The QRectF class defines a finite rectangle in the plane using floating point precision.
constexpr void moveCenter(const QPointF &p) noexcept
The QRect class defines a rectangle in the plane using integer precision.
constexpr QPoint topLeft() const noexcept
The QRegion class specifies a clip region for a painter.
The QScreen class is used to query screen properties. \inmodule QtGui.
bool tryShortcut(QKeyEvent *e)
QKeySequence::SequenceMatch state()
The QString class provides a Unicode character string.
static QThread * currentThread()
The QUrl class provides a convenient interface for working with URLs.
bool wait(QMutex *, QDeadlineTimer=QDeadlineTimer(QDeadlineTimer::Forever))
The QWindow class represents a window in the underlying windowing system.
virtual ~QWindowSystemEventHandler()
virtual bool sendEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *event)
static bool flushWindowSystemEvents(QEventLoop::ProcessEventsFlags flags=QEventLoop::AllEvents)
static bool handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, qintptr *result)
Passes a native event identified by eventType to the window.
static bool handleGestureEventWithValueAndDelta(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, qreal value, const QPointF &delta, const QPointF &local, const QPointF &global, int fingerCount=2)
static bool handleTabletEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, const QPointF &local, const QPointF &global, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
static void handleScreenGeometryChange(QScreen *screen, const QRect &newGeometry, const QRect &newAvailableGeometry)
static bool handleGestureEventWithRealValue(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, qreal value, const QPointF &local, const QPointF &global, int fingerCount=2)
static bool sendWindowSystemEvents(QEventLoop::ProcessEventsFlags flags)
static bool nonUserInputEventsQueued()
static bool handleExtendedKeyEvent(QWindow *window, QEvent::Type type, int key, Qt::KeyboardModifiers modifiers, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text=QString(), bool autorep=false, ushort count=1, bool tryShortcutOverride=true)
static void handleFileOpenEvent(const QString &fileName)
static void handleContextMenuEvent(QWindow *window, bool mouseTriggered, const QPoint &pos, const QPoint &globalPos, Qt::KeyboardModifiers modifiers)
static void handlePrimaryScreenChanged(QPlatformScreen *newPrimary)
static void deferredFlushWindowSystemEvents(QEventLoop::ProcessEventsFlags flags)
static void setSynchronousWindowSystemEvents(bool enable)
static void registerInputDevice(const QInputDevice *device)
static bool handleTabletLeaveProximityEvent(ulong timestamp, int deviceType, int pointerType, qint64 uid)
static void handleScreenAdded(QPlatformScreen *screen, bool isPrimary=false)
static void handlePlatformPanelEvent(QWindow *window)
static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local=QPointF(), const QPointF &global=QPointF())
static int windowSystemEventsQueued()
static void handleScreenRemoved(QPlatformScreen *screen)
static bool handleFrameStrutMouseEvent(QWindow *window, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods=Qt::NoModifier, Qt::MouseEventSource source=Qt::MouseEventNotSynthesized)
static bool handleTabletEnterProximityEvent(ulong timestamp, int deviceType, int pointerType, qint64 uid)
static void handleScreenOrientationChange(QScreen *screen, Qt::ScreenOrientation newOrientation)
static bool handleShortcutEvent(QWindow *window, ulong timestamp, int k, Qt::KeyboardModifiers mods, quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString &text=QString(), bool autorep=false, ushort count=1)
static bool handleGestureEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, const QPointF &local, const QPointF &global, int fingerCount=0)
static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate)
static bool handleTabletEnterLeaveProximityEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, bool inProximity, const QPointF &local=QPointF(), const QPointF &global=QPointF(), Qt::MouseButtons buttons={}, int xTilt=0, int yTilt=0, qreal tangentialPressure=0, qreal rotation=0, int z=0, Qt::KeyboardModifiers modifiers=Qt::NoModifier)
static void handleEnterEvent(QWindow *window, const QPointF &local=QPointF(), const QPointF &global=QPointF())
static void handleScreenLogicalDotsPerInchChange(QScreen *screen, qreal newDpiX, qreal newDpiY)
static bool handleWheelEvent(QWindow *window, const QPointF &local, const QPointF &global, QPoint pixelDelta, QPoint angleDelta, Qt::KeyboardModifiers mods=Qt::NoModifier, Qt::ScrollPhase phase=Qt::NoScrollPhase, Qt::MouseEventSource source=Qt::MouseEventNotSynthesized)
ExposeEvent(QWindow *window, const QRegion ®ion)
GeometryChangeEvent(QWindow *window, const QRect &newGeometry)
QPointer< QWindow > window
static void setPlatformSynthesizesMouse(bool v)
void append(WindowSystemEvent *e)
void remove(const WindowSystemEvent *e)
WindowSystemEvent * peekAtFirstOfType(EventType t) const
WindowSystemEvent * takeFirstNonUserInputOrReturnNull()
WindowSystemEvent * takeFirstOrReturnNull()
bool nonUserInputEventsQueued()
static bool nonUserInputEventsQueued()
static QWindowSystemEventHandler * eventHandler
static int windowSystemEventsQueued()
static void installWindowSystemEventHandler(QWindowSystemEventHandler *handler)
static WindowSystemEvent * getWindowSystemEvent()
static void removeWindowSystemEvent(WindowSystemEvent *event)
static QMutex flushEventMutex
static QWindowSystemInterface::TouchPoint toNativeTouchPoint(const QEventPoint &point, const QWindow *window)
static void removeWindowSystemEventhandler(QWindowSystemEventHandler *handler)
static WindowSystemEventList windowSystemEventQueue
static WindowSystemEvent * getNonUserInputWindowSystemEvent()
static QElapsedTimer eventTime
static QAtomicInt eventAccepted
static WindowSystemEvent * peekWindowSystemEvent(EventType t)
static QList< QEventPoint > fromNativeTouchPoints(const QList< QWindowSystemInterface::TouchPoint > &points, const QWindow *window, QEvent::Type *type=nullptr)
static bool synchronousWindowSystemEvents
static QWaitCondition eventsFlushed
static QList< QWindowSystemInterface::TouchPoint > toNativeTouchPoints(const EventPointList &pointList, const QWindow *window)
QRhiGraphicsPipeline * ps
void newState(QList< State > &states, const char *token, const char *lexem, bool pre)
T toNativePixels(const T &value, const C *context)
T toNativeLocalPosition(const T &value, const C *context)
T toNativeGlobalPosition(const T &value, const C *context)
T fromNativeLocalPosition(const T &value, const C *context)
T fromNativeGlobalPosition(const T &value, const C *context)
QRect fromNativeScreenGeometry(const QRect &nativeScreenGeometry, const QScreen *screen)
QRegion fromNativeLocalExposedRegion(const QRegion &pixelRegion, const QWindow *window)
T fromNativePixels(const T &value, const C *context)
T fromNative(const T &value, qreal scaleFactor, QPoint origin=QPoint(0, 0))
T fromNativeWindowGeometry(const T &value, const C *context)
Q_GUI_EXPORT QPointingDevice * createTouchDevice(QInputDevice::DeviceType devType=QInputDevice::DeviceType::TouchScreen, QInputDevice::Capabilities caps=QInputDevice::Capability::Position)
EGLOutputLayerEXT EGLint EGLAttrib value
QT_END_INCLUDE_NAMESPACE typedef double qreal
QPair< qreal, qreal > QDpi
#define Q_LOGGING_CATEGORY(name,...)
#define qCDebug(category,...)
GLenum GLuint GLenum GLsizei const GLchar * message
GLsizei const GLfloat * v
[13]
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat z
GLuint64 GLenum void * handle
GLfloat GLfloat GLfloat w
[0]
GLenum GLenum GLsizei count
GLsizei GLsizei GLchar * source
GLfixed GLfixed GLint GLint GLfixed points
#define Q_ASSERT_X(cond, x, msg)
Q_GUI_EXPORT void qt_handleTouchEvent(QWindow *window, const QPointingDevice *device, const QList< QEventPoint > &points, Qt::KeyboardModifiers mods=Qt::NoModifier)
Q_GUI_EXPORT void qt_handleKeyEvent(QWindow *window, QEvent::Type t, int k, Qt::KeyboardModifiers mods, const QString &text=QString(), bool autorep=false, ushort count=1)
QPointer< QWindow > qt_last_mouse_receiver
Q_GUI_EXPORT QDebug operator<<(QDebug dbg, const QWindowSystemInterface::TouchPoint &p)
#define QT_DEFINE_QPA_EVENT_HANDLER(ReturnType, HandlerName,...)
Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *window, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, Qt::KeyboardModifiers mods, int timestamp)
Q_GUI_EXPORT bool qt_sendShortcutOverrideEvent(QObject *o, ulong timestamp, int k, Qt::KeyboardModifiers mods, const QString &text=QString(), bool autorep=false, ushort count=1)
QUrl url("http://www.example.com/List of holidays.xml")
[0]
qsizetype indexOf(const AT &t, qsizetype from=0) const noexcept
static bool handleEvent(Args ...)