diff options
author | Richard Moe Gustavsen <richard.gustavsen@digia.com> | 2013-06-19 11:21:14 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-25 15:11:02 +0200 |
commit | 438211ec627073817fcaf6d3a07b76f2aa5d90e0 (patch) | |
tree | 9eb64a4d4a6a21d1c87db038724ab823df1b6d10 /src/gui | |
parent | a3b5947d3623ac3da4ee21056214835f1e5c06da (diff) |
QPlatformIntegration: add new style hint: SetFocusOnTouchRelease
On desktop platforms, widgets have traditionally received
focus on mouse press. On touch platforms (iOS, Android) this
is different, there you need to delay setting the focus
until a touch release (probably to check if the press starts
a flick or tap'n'hold etc).
This patch will add a new style hint SetFocusOnRelease that
can be set by the plugin to control this behavior in Qt.
Change-Id: I2e4d714894e327822c855eb48a3b28e354726e95
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qstylehints.cpp | 11 | ||||
-rw-r--r-- | src/gui/kernel/qstylehints.h | 1 |
4 files changed, 16 insertions, 1 deletions
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index e4f45ebb6e..2910bb9280 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -328,6 +328,8 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const return QVariant(false); case SynthesizeMouseFromTouchEvents: return true; + case SetFocusOnTouchRelease: + return QVariant(false); } return 0; diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index b7a44b13de..fcac211f72 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -141,7 +141,8 @@ public: StartDragVelocity, UseRtlExtensions, SynthesizeMouseFromTouchEvents, - PasswordMaskCharacter + PasswordMaskCharacter, + SetFocusOnTouchRelease }; virtual QVariant styleHint(StyleHint hint) const; diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp index 30b12835f7..a302f2186c 100644 --- a/src/gui/kernel/qstylehints.cpp +++ b/src/gui/kernel/qstylehints.cpp @@ -218,4 +218,15 @@ bool QStyleHints::useRtlExtensions() const return hint(QPlatformIntegration::UseRtlExtensions).toBool(); } +/*! + Returns \c true if focus objects (line edits etc) should receive + input focus after a touch/mouse release. This is normal behavior on + touch platforms. On desktop platforms, the standard is to set + focus already on touch/mouse press. +*/ +bool QStyleHints::setFocusOnTouchRelease() const +{ + return hint(QPlatformIntegration::SetFocusOnTouchRelease).toBool(); +} + QT_END_NAMESPACE diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h index 64ef182aab..a0facd5f94 100644 --- a/src/gui/kernel/qstylehints.h +++ b/src/gui/kernel/qstylehints.h @@ -65,6 +65,7 @@ public: QChar passwordMaskCharacter() const; qreal fontSmoothingGamma() const; bool useRtlExtensions() const; + bool setFocusOnTouchRelease() const; private: friend class QGuiApplication; |