diff options
author | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-03-27 16:06:11 +0000 |
---|---|---|
committer | Shawn Rutledge <shawn.rutledge@qt.io> | 2020-07-10 14:32:56 +0200 |
commit | 4e400369c08db251cd489fec1229398c224d02b4 (patch) | |
tree | 6279489dce7b0469d590461798deccf5d1193e29 /src/plugins/generic/tuiotouch/qtuiohandler.cpp | |
parent | 773a6bffd78b363577d27604e17f4ee08ff07e77 (diff) |
Refactor pointer event hierarchy
Some goals that have hopefully been achieved are:
- make QPointerEvent and QEventPoint resemble their Qt Quick
counterparts to such an extent that we can remove those wrappers
and go back to delivering the original events in Qt Quick
- make QEventPoint much smaller than QTouchEvent::TouchPoint, with no pimpl
- remove most public setters
- reduce the usage of complex constructors that take many arguments
- don't repeat ourselves: move accessors and storage upwards
rather than having redundant ones in subclasses
- standardize the set of accessors in QPointerEvent
- maintain source compatibility as much as possible: do not require
modifying event-handling code in any QWidget subclass
To avoid public setters we now introduce a few QMutable* subclasses.
This is a bit like the Builder pattern except that it doesn't involve
constructing a separate disposable object: the main event type can be
cast to the mutable type at any time to enable modifications, iff the
code is linked with gui-private. Therefore event classes can have
less-"complete" constructors, because internal Qt code can use setters
the same way it could use the ones in QTouchEvent before; and the event
classes don't need many friends. Even some read-accessors can be kept
private unless we are sure we want to expose them.
Task-number: QTBUG-46266
Fixes: QTBUG-72173
Change-Id: I740e4e40165b7bc41223d38b200bbc2b403e07b6
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/plugins/generic/tuiotouch/qtuiohandler.cpp')
-rw-r--r-- | src/plugins/generic/tuiotouch/qtuiohandler.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/plugins/generic/tuiotouch/qtuiohandler.cpp b/src/plugins/generic/tuiotouch/qtuiohandler.cpp index 260dc883af..f61bd906bf 100644 --- a/src/plugins/generic/tuiotouch/qtuiohandler.cpp +++ b/src/plugins/generic/tuiotouch/qtuiohandler.cpp @@ -260,12 +260,12 @@ void QTuioHandler::process2DCurAlive(const QOscMessage &message) if (!oldActiveCursors.contains(cursorId)) { // newly active QTuioCursor cursor(cursorId); - cursor.setState(Qt::TouchPointPressed); + cursor.setState(QEventPoint::State::Pressed); newActiveCursors.insert(cursorId, cursor); } else { // we already know about it, remove it so it isn't marked as released QTuioCursor cursor = oldActiveCursors.value(cursorId); - cursor.setState(Qt::TouchPointStationary); // position change in SET will update if needed + cursor.setState(QEventPoint::State::Stationary); // position change in SET will update if needed newActiveCursors.insert(cursorId, cursor); oldActiveCursors.remove(cursorId); } @@ -378,7 +378,7 @@ void QTuioHandler::process2DCurFseq(const QOscMessage &message) for (const QTuioCursor &tc : qAsConst(m_deadCursors)) { QWindowSystemInterface::TouchPoint tp = cursorToTouchPoint(tc, win); - tp.state = Qt::TouchPointReleased; + tp.state = QEventPoint::State::Released; tpl.append(tp); } QWindowSystemInterface::handleTouchEvent(win, m_device, tpl); @@ -425,12 +425,12 @@ void QTuioHandler::process2DObjAlive(const QOscMessage &message) if (!oldActiveTokens.contains(sessionId)) { // newly active QTuioToken token(sessionId); - token.setState(Qt::TouchPointPressed); + token.setState(QEventPoint::State::Pressed); newActiveTokens.insert(sessionId, token); } else { // we already know about it, remove it so it isn't marked as released QTuioToken token = oldActiveTokens.value(sessionId); - token.setState(Qt::TouchPointStationary); // position change in SET will update if needed + token.setState(QEventPoint::State::Stationary); // position change in SET will update if needed newActiveTokens.insert(sessionId, token); oldActiveTokens.remove(sessionId); } @@ -511,7 +511,6 @@ QWindowSystemInterface::TouchPoint QTuioHandler::tokenToTouchPoint(const QTuioTo QWindowSystemInterface::TouchPoint tp; tp.id = tc.id(); tp.uniqueId = tc.classId(); // TODO TUIO 2.0: populate a QVariant, and register the mapping from int to arbitrary UID data - tp.flags = QTouchEvent::TouchPoint::Token; tp.pressure = 1.0f; tp.normalPosition = QPointF(tc.x(), tc.y()); @@ -552,7 +551,7 @@ void QTuioHandler::process2DObjFseq(const QOscMessage &message) for (const QTuioToken & t : qAsConst(m_deadTokens)) { QWindowSystemInterface::TouchPoint tp = tokenToTouchPoint(t, win); - tp.state = Qt::TouchPointReleased; + tp.state = QEventPoint::State::Released; tp.velocity = QVector2D(); tpl.append(tp); } |