diff options
Diffstat (limited to 'src/gui/kernel/qwindowsysteminterface.h')
-rw-r--r-- | src/gui/kernel/qwindowsysteminterface.h | 114 |
1 files changed, 40 insertions, 74 deletions
diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index 5116c72120..4fc61a475d 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2020 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2020 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QWINDOWSYSTEMINTERFACE_H #define QWINDOWSYSTEMINTERFACE_H @@ -82,6 +46,12 @@ public: Qt::KeyboardModifiers mods = Qt::NoModifier, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handleMouseEvent(QWindow *window, const QPointingDevice *device, + 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); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static bool handleMouseEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, Qt::MouseButtons state, Qt::MouseButton button, QEvent::Type type, @@ -94,24 +64,6 @@ public: Qt::KeyboardModifiers mods = Qt::NoModifier, Qt::MouseEventSource source = Qt::MouseEventNotSynthesized); - 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 handleFrameStrutMouseEvent(QWindow *window, ulong timestamp, 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 handleFrameStrutMouseEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, - 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 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); @@ -124,18 +76,18 @@ public: quint32 nativeScanCode, quint32 nativeVirtualKey, quint32 nativeModifiers, const QString& text = QString(), bool autorep = false, - ushort count = 1, bool tryShortcutOverride = true); + ushort count = 1); static bool handleExtendedKeyEvent(QWindow *window, ulong timestamp, 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); + ushort count = 1); static bool handleExtendedKeyEvent(QWindow *window, ulong timestamp, const QInputDevice *device, 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); + ushort count = 1); static bool handleWheelEvent(QWindow *window, const QPointF &local, const QPointF &global, QPoint pixelDelta, QPoint angleDelta, Qt::KeyboardModifiers mods = Qt::NoModifier, @@ -155,8 +107,10 @@ public: Qt::MouseEventSource source = Qt::MouseEventNotSynthesized, bool inverted = false); + // A very-temporary QPA touchpoint which gets converted to a QEventPoint as early as possible + // in QWindowSystemInterfacePrivate::fromNativeTouchPoints() struct TouchPoint { - TouchPoint() : id(0), uniqueId(-1), pressure(0), rotation(0), state(Qt::TouchPointStationary) { } + TouchPoint() : id(0), uniqueId(-1), pressure(0), rotation(0), state(QEventPoint::State::Stationary) { } int id; // for application use qint64 uniqueId; // for TUIO: object/token ID; otherwise empty // TODO for TUIO 2.0: add registerPointerUniqueID(QPointingDeviceUniqueId) @@ -166,9 +120,8 @@ public: qreal pressure; // 0 to 1 qreal rotation; // rotation applied to the elliptical contact patch // 0 means pointing straight up; 0 if unknown (like QTabletEvent::rotation) - Qt::TouchPointState state; //Qt::TouchPoint{Pressed|Moved|Stationary|Released} + QEventPoint::State state; // Pressed|Updated|Stationary|Released QVector2D velocity; // in screen coordinate system, pixels / seconds - QTouchEvent::TouchPoint::InfoFlags flags; QList<QPointF> rawPositions; // in screen coordinates }; @@ -191,7 +144,10 @@ public: // region is in local coordinates, do not confuse with geometry which is parent-relative template<typename Delivery = QWindowSystemInterface::DefaultDelivery> - static void handleExposeEvent(QWindow *window, const QRegion ®ion); + static bool handleExposeEvent(QWindow *window, const QRegion ®ion); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static bool handlePaintEvent(QWindow *window, const QRegion ®ion); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static bool handleCloseEvent(QWindow *window); @@ -201,8 +157,9 @@ public: template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static void handleLeaveEvent(QWindow *window); static void handleEnterLeaveEvent(QWindow *enter, QWindow *leave, const QPointF &local = QPointF(), const QPointF& global = QPointF()); + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> - static void handleWindowActivated(QWindow *window, Qt::FocusReason r = Qt::OtherFocusReason); + static void handleFocusWindowChanged(QWindow *window, Qt::FocusReason r = Qt::OtherFocusReason); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static void handleWindowStateChanged(QWindow *window, Qt::WindowStates newState, int oldState = -1); @@ -210,6 +167,9 @@ public: static void handleWindowScreenChanged(QWindow *window, QScreen *newScreen); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> + static void handleWindowDevicePixelRatioChanged(QWindow *window); + + template<typename Delivery = QWindowSystemInterface::DefaultDelivery> static void handleSafeAreaMarginsChanged(QWindow *window); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> @@ -227,11 +187,7 @@ public: Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers); #endif // QT_CONFIG(draganddrop) -#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) static bool handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, qintptr *result); -#else - static bool handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result); -#endif // Changes to the screen static void handleScreenAdded(QPlatformScreen *screen, bool isPrimary = false); @@ -244,7 +200,7 @@ public: static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate); template<typename Delivery = QWindowSystemInterface::DefaultDelivery> - static void handleThemeChange(QWindow *window); + static void handleThemeChange(QWindow *window = nullptr); static void handleFileOpenEvent(const QString& fileName); static void handleFileOpenEvent(const QUrl &url); @@ -253,6 +209,10 @@ public: 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 bool handleTabletEvent(QWindow *window, 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 bool handleTabletEvent(QWindow *window, ulong timestamp, const QPointF &local, const QPointF &global, int device, int pointerType, Qt::MouseButtons buttons, qreal pressure, int xTilt, int yTilt, qreal tangentialPressure, qreal rotation, int z, qint64 uid, @@ -266,6 +226,13 @@ public: Qt::MouseButtons buttons = {}, int xTilt = 0, int yTilt = 0, qreal tangentialPressure = 0, qreal rotation = 0, int z = 0, Qt::KeyboardModifiers modifiers = Qt::NoModifier); + static bool handleTabletEnterLeaveProximityEvent(QWindow *window, 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); + + // The following 4 functions are deprecated (QTBUG-114560) static bool handleTabletEnterProximityEvent(ulong timestamp, int deviceType, int pointerType, qint64 uid); static void handleTabletEnterProximityEvent(int deviceType, int pointerType, qint64 uid); static bool handleTabletLeaveProximityEvent(ulong timestamp, int deviceType, int pointerType, qint64 uid); @@ -273,11 +240,11 @@ public: #ifndef QT_NO_GESTURES static bool handleGestureEvent(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, - const QPointF &local, const QPointF &global); + const QPointF &local, const QPointF &global, int fingerCount = 0); static bool handleGestureEventWithRealValue(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, - qreal value, const QPointF &local, const QPointF &global); - static bool handleGestureEventWithSequenceIdAndValue(QWindow *window, ulong timestamp, const QPointingDevice *device, Qt::NativeGestureType type, - ulong sequenceId, quint64 value, const QPointF &local, const QPointF &global); + qreal value, const QPointF &local, const QPointF &global, int fingerCount = 2); + 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); #endif // QT_NO_GESTURES static void handlePlatformPanelEvent(QWindow *window); @@ -297,7 +264,6 @@ public: static void deferredFlushWindowSystemEvents(QEventLoop::ProcessEventsFlags flags); static int windowSystemEventsQueued(); static bool nonUserInputEventsQueued(); - static void setPlatformFiltersEvents(bool enable); }; #ifndef QT_NO_DEBUG_STREAM |