summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2012-01-09 13:11:14 +0100
committerQt by Nokia <qt-info@nokia.com>2012-01-10 09:13:11 +0100
commit7024ddba4b91d66341e1e076aca90b55aaf6641d (patch)
tree11abb8da9c502a5d3cb792f255076561c77160e5
parent1f6f1de1636f2e1568bba70e2aab4a34d413609a (diff)
Platform style hints: Introduce keyboard repeat rate.
Change-Id: I556c2ecec7d5368122875a659af3ae7db88aa481 Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.cpp2
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.h3
-rw-r--r--src/gui/kernel/qstylehints.cpp5
-rw-r--r--src/gui/kernel/qstylehints.h1
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp11
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp12
6 files changed, 22 insertions, 12 deletions
diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp
index 39664f61c8..35cb9a160d 100644
--- a/src/gui/kernel/qplatformintegration_qpa.cpp
+++ b/src/gui/kernel/qplatformintegration_qpa.cpp
@@ -227,6 +227,8 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const
return 1000;
case KeyboardInputInterval:
return 400;
+ case KeyboardAutoRepeatRate:
+ return 30;
case MouseDoubleClickInterval:
return 400;
case StartDragDistance:
diff --git a/src/gui/kernel/qplatformintegration_qpa.h b/src/gui/kernel/qplatformintegration_qpa.h
index d6e3be85e1..f9a8a206a8 100644
--- a/src/gui/kernel/qplatformintegration_qpa.h
+++ b/src/gui/kernel/qplatformintegration_qpa.h
@@ -106,7 +106,8 @@ public:
KeyboardInputInterval,
MouseDoubleClickInterval,
StartDragDistance,
- StartDragTime
+ StartDragTime,
+ KeyboardAutoRepeatRate
};
virtual QVariant styleHint(StyleHint hint) const;
diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp
index 1fa395c285..4218477aac 100644
--- a/src/gui/kernel/qstylehints.cpp
+++ b/src/gui/kernel/qstylehints.cpp
@@ -76,6 +76,11 @@ int QStyleHints::keyboardInputInterval() const
return hint(QPlatformIntegration::KeyboardInputInterval).toInt();
}
+int QStyleHints::keyboardAutoRepeatRate() const
+{
+ return hint(QPlatformIntegration::KeyboardAutoRepeatRate).toInt();
+}
+
int QStyleHints::cursorFlashTime() const
{
return hint(QPlatformIntegration::CursorFlashTime).toInt();
diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h
index c61ae9aca2..d4e0415ba4 100644
--- a/src/gui/kernel/qstylehints.h
+++ b/src/gui/kernel/qstylehints.h
@@ -60,6 +60,7 @@ public:
int startDragDistance() const;
int startDragTime() const;
int keyboardInputInterval() const;
+ int keyboardAutoRepeatRate() const;
int cursorFlashTime() const;
private:
friend class QGuiApplication;
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index 4633173e7e..8bb8bafe74 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -271,6 +271,14 @@ QPlatformFontDatabase *QWindowsIntegration::fontDatabase() const
return d->m_fontDatabase;
}
+static inline int keyBoardAutoRepeatRateMS()
+{
+ DWORD time = 0;
+ if (SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &time, 0))
+ return time ? 1000 / static_cast<int>(time) : 500;
+ return 30;
+}
+
QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) const
{
switch (hint) {
@@ -278,7 +286,8 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co
if (const unsigned timeMS = GetCaretBlinkTime())
return QVariant(int(timeMS));
break;
-
+ case KeyboardAutoRepeatRate:
+ return QVariant(keyBoardAutoRepeatRateMS());
case QPlatformIntegration::StartDragTime:
case QPlatformIntegration::StartDragDistance:
case QPlatformIntegration::MouseDoubleClickInterval:
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index 105dd3cde8..4f5a135842 100644
--- a/src/widgets/widgets/qabstractspinbox.cpp
+++ b/src/widgets/widgets/qabstractspinbox.cpp
@@ -48,6 +48,7 @@
#ifndef QT_NO_SPINBOX
#include <qapplication.h>
+#include <qstylehints.h>
#include <qclipboard.h>
#include <qdatetime.h>
#include <qdatetimeedit.h>
@@ -1169,15 +1170,6 @@ void QAbstractSpinBox::hideEvent(QHideEvent *event)
Remember that time value should be given in msecs.
*/
-static int getKeyboardAutoRepeatRate() {
- int ret = 30;
-#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
- DWORD time;
- if (SystemParametersInfo(SPI_GETKEYBOARDSPEED, 0, &time, 0) != FALSE)
- ret = static_cast<int>(1000 / static_cast<int>(time)); // msecs
-#endif
- return ret; // msecs
-}
/*!
\reimp
@@ -1192,7 +1184,7 @@ void QAbstractSpinBox::timerEvent(QTimerEvent *event)
killTimer(d->spinClickThresholdTimerId);
d->spinClickThresholdTimerId = -1;
d->effectiveSpinRepeatRate = d->buttonState & Keyboard
- ? getKeyboardAutoRepeatRate()
+ ? qApp->styleHints()->keyboardAutoRepeatRate()
: d->spinClickTimerInterval;
d->spinClickTimerId = startTimer(d->effectiveSpinRepeatRate);
doStep = true;