diff options
author | Samuel Rødal <samuel.rodal@nokia.com> | 2012-01-12 08:53:13 +0100 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-01-13 09:38:05 +0100 |
commit | e50416066cab4be7df8382bd224d9e4ddd7a903a (patch) | |
tree | 8961d3ce0221a3cd51bd84c9606e91ba4534d8f5 /src/gui/kernel/qevent.cpp | |
parent | b54cfb3124a19c6f897d6b18e3285f0474fe5dc6 (diff) |
Added application flags to translate between touch and mouse events.
The current way we do it of having the platform or touch plugin send
both mouse and touch events is not ideal. There's no good way to write
an application that works sanely both on a touch-only device and on a
desktop except by restricting yourself to only handling mouse events. If
you try to handle touch events you don't get any events at all on
desktop, and if you try to handle both, you end up getting duplicate
events on touch devices.
Instead, we should get rid of the code in the plugins that automatically
sends mouse events translated from touch events. This change enables
that by making the behaviour fully configurable in QtGui.
Two new application attributes are added to explicitly say whether
unhandled touch events should be sent as synthesized mouse events and
vice versa, and no duplicates are automatically sent as the current
situation. Synthesized mouse events are enabled by default.
We also get rid of the QTouchEvent::TouchPoint::Primary flag, which
was only used to signal that the windowing system automatically
generated mouse events for that touch point. Now we only generate mouse
events from the first touch point in the list.
Change-Id: I8e20f3480407ca8c31b42de0a4d2b319e1346b65
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com>
Diffstat (limited to 'src/gui/kernel/qevent.cpp')
-rw-r--r-- | src/gui/kernel/qevent.cpp | 26 |
1 files changed, 6 insertions, 20 deletions
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp index e0ce334321..61ccaa5cfd 100644 --- a/src/gui/kernel/qevent.cpp +++ b/src/gui/kernel/qevent.cpp @@ -3323,7 +3323,7 @@ QWindowStateChangeEvent::~QWindowStateChangeEvent() \section1 Event Delivery and Propagation - By default, QWidget::event() translates the first non-primary touch point in a QTouchEvent into + By default, QGuiApplication translates the first touch point in a QTouchEvent into a QMouseEvent. This makes it possible to enable touch events on existing widgets that do not normally handle QTouchEvent. See below for information on some special considerations needed when doing this. @@ -3361,17 +3361,12 @@ QWindowStateChangeEvent::~QWindowStateChangeEvent() This makes it possible for sibling widgets to handle touch events independently while making sure that the sequence of QTouchEvents is always correct. - \section1 Mouse Events and the Primary Touch Point + \section1 Mouse Events and Touch Event synthesizing - QTouchEvent delivery is independent from that of QMouseEvent. On some windowing systems, mouse - events are also sent for the \l{QTouchEvent::TouchPoint::isPrimary()}{primary touch point}. - This means it is possible for your widget to receive both QTouchEvent and QMouseEvent for the - same user interaction point. You can use the QTouchEvent::TouchPoint::isPrimary() function to - identify the primary touch point. - - Note that on some systems, it is possible to receive touch events without a primary touch - point. All this means is that there will be no mouse event generated for the touch points in - the QTouchEvent. + QTouchEvent delivery is independent from that of QMouseEvent. The application flags + Qt::AA_SynthesizeTouchForUnhandledMouseEvents and Qt::AA_SynthesizeMouseForUnhandledTouchEvents + can be used to enable or disable automatic synthesizing of touch events to mouse events and + mouse events to touch events. \section1 Caveats @@ -3593,15 +3588,6 @@ Qt::TouchPointState QTouchEvent::TouchPoint::state() const } /*! - Returns true if this touch point is the primary touch point. The primary touch point is the - point for which the windowing system generates mouse events. -*/ -bool QTouchEvent::TouchPoint::isPrimary() const -{ - return (d->flags & Primary) != 0; -} - -/*! Returns the position of this touch point, relative to the widget or QGraphicsItem that received the event. |