aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/handlers/qquickwheelhandler.cpp4
-rw-r--r--src/quick/handlers/qquickwheelhandler_p.h2
-rw-r--r--src/quick/handlers/qquickwheelhandler_p_p.h1
-rw-r--r--src/quick/items/qquickevents_p_p.h33
-rw-r--r--src/quick/items/qquickmousearea.cpp3
5 files changed, 25 insertions, 18 deletions
diff --git a/src/quick/handlers/qquickwheelhandler.cpp b/src/quick/handlers/qquickwheelhandler.cpp
index 563bf16b49..414a41f2cd 100644
--- a/src/quick/handlers/qquickwheelhandler.cpp
+++ b/src/quick/handlers/qquickwheelhandler.cpp
@@ -405,7 +405,9 @@ void QQuickWheelHandler::handleEventPoint(QPointerEvent *ev, QEventPoint &point)
event->angleDelta().y()) / 8;
d->rotation += angleDelta;
emit rotationChanged();
- emit wheel(*event);
+
+ d->wheelEvent.reset(event);
+ emit wheel(&d->wheelEvent);
if (!d->propertyName.isEmpty() && target()) {
QQuickItem *t = target();
// writing target()'s property is done via QMetaProperty::write() so that any registered interceptors can react.
diff --git a/src/quick/handlers/qquickwheelhandler_p.h b/src/quick/handlers/qquickwheelhandler_p.h
index 25390dc4c4..cbc9c4328c 100644
--- a/src/quick/handlers/qquickwheelhandler_p.h
+++ b/src/quick/handlers/qquickwheelhandler_p.h
@@ -103,7 +103,7 @@ public:
void setTargetTransformAroundCursor(bool ttac);
Q_SIGNALS:
- void wheel(const QWheelEvent &event);
+ void wheel(QQuickWheelEvent *event);
void orientationChanged();
void invertibleChanged();
diff --git a/src/quick/handlers/qquickwheelhandler_p_p.h b/src/quick/handlers/qquickwheelhandler_p_p.h
index d35e04c51b..b18f83cb16 100644
--- a/src/quick/handlers/qquickwheelhandler_p_p.h
+++ b/src/quick/handlers/qquickwheelhandler_p_p.h
@@ -80,6 +80,7 @@ public:
mutable bool metaPropertyDirty = true;
bool invertible = true;
bool targetTransformAroundCursor = true;
+ QQuickWheelEvent wheelEvent;
};
QT_END_NAMESPACE
diff --git a/src/quick/items/qquickevents_p_p.h b/src/quick/items/qquickevents_p_p.h
index a9aeae2217..91f6c5de23 100644
--- a/src/quick/items/qquickevents_p_p.h
+++ b/src/quick/items/qquickevents_p_p.h
@@ -211,10 +211,12 @@ private:
class QQuickWheelEvent : public QObject
{
Q_OBJECT
+ Q_PROPERTY(const QPointingDevice *device READ pointingDevice CONSTANT)
Q_PROPERTY(qreal x READ x CONSTANT)
Q_PROPERTY(qreal y READ y CONSTANT)
Q_PROPERTY(QPoint angleDelta READ angleDelta CONSTANT)
Q_PROPERTY(QPoint pixelDelta READ pixelDelta CONSTANT)
+ Q_PROPERTY(Qt::ScrollPhase phase READ phase CONSTANT)
Q_PROPERTY(int buttons READ buttons CONSTANT)
Q_PROPERTY(int modifiers READ modifiers CONSTANT)
Q_PROPERTY(bool inverted READ inverted CONSTANT)
@@ -223,40 +225,43 @@ class QQuickWheelEvent : public QObject
QML_ADDED_IN_VERSION(2, 0)
public:
- QQuickWheelEvent()
- : _buttons(Qt::NoButton), _modifiers(Qt::NoModifier)
- {}
+ QQuickWheelEvent() = default;
- void reset(qreal x, qreal y, const QPoint &angleDelta, const QPoint &pixelDelta,
- Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, bool inverted)
+ void reset(const QWheelEvent *event)
{
- _x = x;
- _y = y;
- _angleDelta = angleDelta;
- _pixelDelta = pixelDelta;
- _buttons = buttons;
- _modifiers = modifiers;
+ _device = event->pointingDevice();
+ _x = event->position().x();
+ _y = event->position().y();
+ _angleDelta = event->angleDelta();
+ _pixelDelta = event->pixelDelta();
+ _buttons = event->buttons();
+ _modifiers = event->modifiers();
_accepted = true;
- _inverted = inverted;
+ _inverted = event->inverted();
+ _phase = event->phase();
}
+ const QPointingDevice *pointingDevice() const { return _device; }
qreal x() const { return _x; }
qreal y() const { return _y; }
QPoint angleDelta() const { return _angleDelta; }
QPoint pixelDelta() const { return _pixelDelta; }
int buttons() const { return _buttons; }
int modifiers() const { return _modifiers; }
+ Qt::ScrollPhase phase() const { return _phase; }
bool inverted() const { return _inverted; }
bool isAccepted() { return _accepted; }
void setAccepted(bool accepted) { _accepted = accepted; }
private:
+ const QPointingDevice *_device = nullptr;
qreal _x = 0;
qreal _y = 0;
QPoint _angleDelta;
QPoint _pixelDelta;
- Qt::MouseButtons _buttons;
- Qt::KeyboardModifiers _modifiers;
+ Qt::MouseButtons _buttons = Qt::NoButton;
+ Qt::KeyboardModifiers _modifiers = Qt::NoModifier;
+ Qt::ScrollPhase _phase = Qt::NoScrollPhase;
bool _inverted = false;
bool _accepted = false;
};
diff --git a/src/quick/items/qquickmousearea.cpp b/src/quick/items/qquickmousearea.cpp
index 6e7688a734..1a406dbbc2 100644
--- a/src/quick/items/qquickmousearea.cpp
+++ b/src/quick/items/qquickmousearea.cpp
@@ -885,8 +885,7 @@ void QQuickMouseArea::wheelEvent(QWheelEvent *event)
}
QQuickWheelEvent &we = d->quickWheelEvent;
- we.reset(event->position().x(), event->position().y(), event->angleDelta(), event->pixelDelta(),
- event->buttons(), event->modifiers(), event->inverted());
+ we.reset(event);
we.setAccepted(d->isWheelConnected());
emit wheel(&we);
if (!we.isAccepted())