diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qguiapplication.cpp | 4 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.h | 3 | ||||
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformtheme.cpp | 26 |
4 files changed, 32 insertions, 3 deletions
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 1347f309e57..b2d774b40da 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -145,7 +145,7 @@ ulong QGuiApplicationPrivate::mousePressTime = 0; Qt::MouseButton QGuiApplicationPrivate::mousePressButton = Qt::NoButton; int QGuiApplicationPrivate::mousePressX = 0; int QGuiApplicationPrivate::mousePressY = 0; -int QGuiApplicationPrivate::mouse_double_click_distance = 5; +int QGuiApplicationPrivate::mouse_double_click_distance = -1; static Qt::LayoutDirection layout_direction = Qt::LeftToRight; static bool force_reverse = false; @@ -1255,6 +1255,8 @@ void QGuiApplicationPrivate::init() initPalette(); QFont::initialize(); + mouse_double_click_distance = platformTheme()->themeHint(QPlatformTheme::MouseDoubleClickDistance).toInt(); + #ifndef QT_NO_CURSOR QCursorData::initialize(); #endif diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index e12eb318dcf..05ab2f15ba6 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -499,6 +499,8 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint) return QVariant(false); case MousePressAndHoldInterval: return QVariant(800); + case MouseDoubleClickDistance: + return QVariant(5); } return QVariant(); } diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 205a5bab690..073eda8d07a 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -108,7 +108,8 @@ public: PasswordMaskCharacter, DialogSnapToDefaultButton, ContextMenuOnMouseRelease, - MousePressAndHoldInterval + MousePressAndHoldInterval, + MouseDoubleClickDistance }; enum DialogType { diff --git a/src/plugins/platforms/android/qandroidplatformtheme.cpp b/src/plugins/platforms/android/qandroidplatformtheme.cpp index 039b19f8614..94e58eaeb67 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); } |