summaryrefslogtreecommitdiffstats
path: root/src/plugins/platforms
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>2014-02-27 16:48:16 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-10 09:56:13 +0100
commitca280bfe3bc551f814d59d25079e098798fbdad7 (patch)
tree3e7a9b357a1218343d456834ae2c17e612532e02 /src/plugins/platforms
parentd87ddcf56ff3bc46f468d8da276f1afc28b6ac26 (diff)
Android: Support double click event
It's impossible to get the distance between two touch events down to 5 pixels on e.g. my Nexus 5. This patch makes it possible to tweak the distance through the platform theme, and sets the distance to 15% of an inch on Android. Also provides a way to override the default minimum of 5 pixels by using an environment variable. [ChangeLog][Android] Fixed double click events Task-number: QTBUG-36974 Change-Id: I23d94020c531747d6638b645133611614a2a0703 Reviewed-by: BogDan Vatra <bogdan@kde.org>
Diffstat (limited to 'src/plugins/platforms')
-rw-r--r--src/plugins/platforms/android/qandroidplatformtheme.cpp26
1 files changed, 25 insertions, 1 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp
index 039b19f861..94e58eaeb6 100644
--- a/src/plugins/platforms/android/qandroidplatformtheme.cpp
+++ b/src/plugins/platforms/android/qandroidplatformtheme.cpp
@@ -47,6 +47,7 @@
#include <QVariant>
#include <QFileInfo>
#include <QCoreApplication>
+#include <private/qguiapplication_p.h>
#include <qandroidplatformintegration.h>
QAndroidPlatformTheme::QAndroidPlatformTheme(QAndroidPlatformNativeInterface *androidPlatformNativeInterface)
@@ -179,7 +180,30 @@ QVariant QAndroidPlatformTheme::themeHint(ThemeHint hint) const
return QStringList("android");
}
return QStringList("fusion");
- break;
+
+ case MouseDoubleClickDistance:
+ {
+ int minimumDistance = qgetenv("QT_ANDROID_MINIMUM_MOUSE_DOUBLE_CLICK_DISTANCE").toInt();
+ int ret = minimumDistance;
+
+ QAndroidPlatformIntegration *platformIntegration
+ = static_cast<QAndroidPlatformIntegration *>(QGuiApplicationPrivate::platformIntegration());
+ QAndroidPlatformScreen *platformScreen = platformIntegration->screen();
+ if (platformScreen != 0) {
+ QScreen *screen = platformScreen->screen();
+ qreal dotsPerInch = screen->physicalDotsPerInch();
+
+ // Allow 15% of an inch between clicks when double clicking
+ int distance = qRound(dotsPerInch * 0.15);
+ if (distance > minimumDistance)
+ ret = distance;
+ }
+
+ if (ret > 0)
+ return ret;
+
+ // fall through
+ }
default:
return QPlatformTheme::themeHint(hint);
}