From fac71528cce279282d66b0a96ddd8570d567955f Mon Sep 17 00:00:00 2001 From: Allan Sandfeld Jensen Date: Mon, 8 Sep 2014 15:10:52 +0200 Subject: [PATCH] Read and use WheelScrollLines configuration on KDE Qt supports changing the default lines a scroll wheel click scroll, but wasn't trying to read the system settings. The patch adds support for platform themes to set the default. Change-Id: I53fdcec7984941d1d1285d927d70460356613f81 Reviewed-by: Kevin Ottens Reviewed-by: David Faure --- src/gui/kernel/qplatformtheme.cpp | 2 ++ src/gui/kernel/qplatformtheme.h | 3 ++- .../themes/genericunix/qgenericunixthemes.cpp | 8 ++++++++ src/widgets/kernel/qapplication.cpp | 6 +++++- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index d1b1106b28..6017ffb06c 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -513,6 +513,8 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint) int dist = qgetenv("QT_DBL_CLICK_DIST").toInt(&ok); return QVariant(ok ? dist : 5); } + case WheelScrollLines: + return QVariant(3); } return QVariant(); } diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index ad2b4a2164..619cfb59d5 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -109,7 +109,8 @@ public: DialogSnapToDefaultButton, ContextMenuOnMouseRelease, MousePressAndHoldInterval, - MouseDoubleClickDistance + MouseDoubleClickDistance, + WheelScrollLines }; enum DialogType { diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp index dac417ad80..5f2e541bdc 100644 --- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp +++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp @@ -178,6 +178,7 @@ public: , toolButtonStyle(Qt::ToolButtonTextBesideIcon) , toolBarIconSize(0) , singleClick(true) + , wheelScrollLines(3) { } static QString kdeGlobals(const QString &kdeDir) @@ -201,6 +202,7 @@ public: int toolButtonStyle; int toolBarIconSize; bool singleClick; + int wheelScrollLines; }; void QKdeThemePrivate::refresh() @@ -250,6 +252,10 @@ void QKdeThemePrivate::refresh() toolButtonStyle = Qt::ToolButtonTextUnderIcon; } + const QVariant wheelScrollLinesValue = readKdeSetting(QStringLiteral("KDE/WheelScrollLines"), kdeDirs, kdeSettings); + if (wheelScrollLinesValue.isValid()) + wheelScrollLines = wheelScrollLinesValue.toInt(); + // Read system font, ignore 'smallestReadableFont' if (QFont *systemFont = kdeFont(readKdeSetting(QStringLiteral("font"), kdeDirs, kdeSettings))) resources.fonts[QPlatformTheme::SystemFont] = systemFont; @@ -436,6 +442,8 @@ QVariant QKdeTheme::themeHint(QPlatformTheme::ThemeHint hint) const return QVariant(int(KdeKeyboardScheme)); case QPlatformTheme::ItemViewActivateItemOnSingleClick: return QVariant(d->singleClick); + case QPlatformTheme::WheelScrollLines: + return QVariant(d->wheelScrollLines); default: break; } diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp index 3486396f54..2e04c872ae 100644 --- a/src/widgets/kernel/qapplication.cpp +++ b/src/widgets/kernel/qapplication.cpp @@ -666,8 +666,12 @@ void QApplicationPrivate::initialize() initializeMultitouch(); if (QApplication::desktopSettingsAware()) - if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) + if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme()) { QApplicationPrivate::enabledAnimations = theme->themeHint(QPlatformTheme::UiEffects).toInt(); +#ifndef QT_NO_WHEELEVENT + QApplicationPrivate::wheel_scroll_lines = theme->themeHint(QPlatformTheme::WheelScrollLines).toInt(); +#endif + } is_app_running = true; // no longer starting up }