diff options
Diffstat (limited to 'src/gui/kernel')
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 17 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.cpp | 45 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.h | 10 | ||||
-rw-r--r-- | src/gui/kernel/qstylehints.cpp | 28 |
4 files changed, 84 insertions, 16 deletions
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index d9e9c75920..b713b713ae 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -48,6 +48,7 @@ #include <QtGui/private/qguiapplication_p.h> #include <QtGui/private/qpixmap_raster_p.h> #include <qpa/qplatformscreen_p.h> +#include <qpa/qplatformtheme.h> #include <private/qdnd_p.h> QT_BEGIN_NAMESPACE @@ -279,25 +280,25 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const { switch (hint) { case CursorFlashTime: - return 1000; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::CursorFlashTime); case KeyboardInputInterval: - return 400; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::KeyboardInputInterval); case KeyboardAutoRepeatRate: - return 30; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::KeyboardAutoRepeatRate); case MouseDoubleClickInterval: - return 400; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::MouseDoubleClickInterval); case StartDragDistance: - return 10; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::StartDragDistance); case StartDragTime: - return 500; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::StartDragTime); case ShowIsFullScreen: return false; case PasswordMaskDelay: - return 0; + return QPlatformTheme::defaultThemeHint(QPlatformTheme::PasswordMaskDelay); case FontSmoothingGamma: return qreal(1.7); case StartDragVelocity: - return 0; // no limit + return QPlatformTheme::defaultThemeHint(QPlatformTheme::StartDragVelocity); case UseRtlExtensions: return QVariant(false); } diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index d1ca8b740f..14336ab42b 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -63,6 +63,30 @@ QT_BEGIN_NAMESPACE This enum describes the available theme hints. + \value CursorFlashTime (int) Cursor flash time in ms, overriding + QPlatformIntegration::styleHint. + + \value KeyboardInputInterval (int) Keyboard input interval in ms, overriding + QPlatformIntegration::styleHint. + + \value MouseDoubleClickInterval (int) Mouse double click interval in ms, + overriding QPlatformIntegration::styleHint. + + \value StartDragDistance (int) Start drag distance, + overriding QPlatformIntegration::styleHint. + + \value StartDragTime (int) Start drag time in ms,, + overriding QPlatformIntegration::styleHint. + + \value KeyboardAutoRepeatRate (int) Keyboard auto repeat rate, + overriding QPlatformIntegration::styleHint. + + \value PasswordMaskDelay (int) Pass word mask delay in ms,, + overriding QPlatformIntegration::styleHint. + + \value StartDragVelocity (int) Velocity of a drag, + overriding QPlatformIntegration::styleHint. + \value TextCursorWidth (int) Determines the width of the text cursor. \value DropShadow (bool) Determines whether the drop shadow effect for @@ -139,7 +163,28 @@ const QFont *QPlatformTheme::font(Font type) const QVariant QPlatformTheme::themeHint(ThemeHint hint) const { + return QPlatformTheme::defaultThemeHint(hint); +} + +QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint) +{ switch (hint) { + case QPlatformTheme::CursorFlashTime: + return QVariant(1000); + case QPlatformTheme::KeyboardInputInterval: + return QVariant(400); + case QPlatformTheme::KeyboardAutoRepeatRate: + return QVariant(30); + case QPlatformTheme::MouseDoubleClickInterval: + return QVariant(400); + case QPlatformTheme::StartDragDistance: + return QVariant(10); + case QPlatformTheme::StartDragTime: + return QVariant(500); + case QPlatformTheme::PasswordMaskDelay: + return QVariant(int(0)); + case QPlatformTheme::StartDragVelocity: + return QVariant(int(0)); // no limit case QPlatformTheme::UseFullScreenForPopupMenu: return QVariant(false); case QPlatformTheme::WindowAutoPlacement: diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 5ead94cd17..107c57b42d 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -72,6 +72,14 @@ class Q_GUI_EXPORT QPlatformTheme { public: enum ThemeHint { + CursorFlashTime, + KeyboardInputInterval, + MouseDoubleClickInterval, + StartDragDistance, + StartDragTime, + KeyboardAutoRepeatRate, + PasswordMaskDelay, + StartDragVelocity, TextCursorWidth, DropShadow, MaximumScrollBarDragDistance, @@ -180,6 +188,8 @@ public: virtual const QFont *font(Font type = SystemFont) const; virtual QVariant themeHint(ThemeHint hint) const; + + static QVariant defaultThemeHint(ThemeHint hint); }; QT_END_NAMESPACE diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp index 99e37e4a41..acb31a2eb5 100644 --- a/src/gui/kernel/qstylehints.cpp +++ b/src/gui/kernel/qstylehints.cpp @@ -41,6 +41,7 @@ #include <qstylehints.h> #include <qpa/qplatformintegration.h> +#include <qpa/qplatformtheme.h> #include <private/qguiapplication_p.h> QT_BEGIN_NAMESPACE @@ -50,6 +51,17 @@ static inline QVariant hint(QPlatformIntegration::StyleHint h) return QGuiApplicationPrivate::platformIntegration()->styleHint(h); } +static inline QVariant themeableHint(QPlatformTheme::ThemeHint th, + QPlatformIntegration::StyleHint ih) +{ + if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { + const QVariant themeHint = theme->themeHint(th); + if (themeHint.isValid()) + return themeHint; + } + return QGuiApplicationPrivate::platformIntegration()->styleHint(ih); +} + /*! \class QStyleHints \since 5.0 @@ -64,37 +76,37 @@ QStyleHints::QStyleHints() int QStyleHints::mouseDoubleClickInterval() const { - return hint(QPlatformIntegration::MouseDoubleClickInterval).toInt(); + return themeableHint(QPlatformTheme::MouseDoubleClickInterval, QPlatformIntegration::MouseDoubleClickInterval).toInt(); } int QStyleHints::startDragDistance() const { - return hint(QPlatformIntegration::StartDragDistance).toInt(); + return themeableHint(QPlatformTheme::StartDragDistance, QPlatformIntegration::StartDragDistance).toInt(); } int QStyleHints::startDragTime() const { - return hint(QPlatformIntegration::StartDragTime).toInt(); + return themeableHint(QPlatformTheme::StartDragTime, QPlatformIntegration::StartDragTime).toInt(); } int QStyleHints::startDragVelocity() const { - return hint(QPlatformIntegration::StartDragVelocity).toInt(); + return themeableHint(QPlatformTheme::StartDragVelocity, QPlatformIntegration::StartDragVelocity).toInt(); } int QStyleHints::keyboardInputInterval() const { - return hint(QPlatformIntegration::KeyboardInputInterval).toInt(); + return themeableHint(QPlatformTheme::KeyboardInputInterval, QPlatformIntegration::KeyboardInputInterval).toInt(); } int QStyleHints::keyboardAutoRepeatRate() const { - return hint(QPlatformIntegration::KeyboardAutoRepeatRate).toInt(); + return themeableHint(QPlatformTheme::KeyboardAutoRepeatRate, QPlatformIntegration::KeyboardAutoRepeatRate).toInt(); } int QStyleHints::cursorFlashTime() const { - return hint(QPlatformIntegration::CursorFlashTime).toInt(); + return themeableHint(QPlatformTheme::CursorFlashTime, QPlatformIntegration::CursorFlashTime).toInt(); } bool QStyleHints::showIsFullScreen() const @@ -104,7 +116,7 @@ bool QStyleHints::showIsFullScreen() const int QStyleHints::passwordMaskDelay() const { - return hint(QPlatformIntegration::PasswordMaskDelay).toInt(); + return themeableHint(QPlatformTheme::PasswordMaskDelay, QPlatformIntegration::PasswordMaskDelay).toInt(); } qreal QStyleHints::fontSmoothingGamma() const |