diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-03-10 16:55:04 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-03-14 05:29:22 +0000 |
commit | c2c3452ba5b4c32d0c2d5df9193bf89986623ab5 (patch) | |
tree | 66b567681989e166bc429f477ae7f13f9c844f75 /src/gui | |
parent | b6e3fd8ced2ae3629b73b78bf436d1a3ac4bccda (diff) |
Add new API to control whether shortcuts are shown in context menus
Shortcuts are universally not shown on macOS or mobile platforms, making
applications look very obviously out of place.
Windows and GNOME desktop environments almost never use them.
Only KDE appears to do so commonly; default accordingly.
Task-number: QTBUG-49435
Change-Id: Ieac4cee57b15a02be5258f3d07749af6316af62b
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/kernel/qplatformintegration.cpp | 2 | ||||
-rw-r--r-- | src/gui/kernel/qplatformintegration.h | 1 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.cpp | 4 | ||||
-rw-r--r-- | src/gui/kernel/qplatformtheme.h | 3 | ||||
-rw-r--r-- | src/gui/kernel/qstylehints.cpp | 11 | ||||
-rw-r--r-- | src/gui/kernel/qstylehints.h | 1 |
6 files changed, 21 insertions, 1 deletions
diff --git a/src/gui/kernel/qplatformintegration.cpp b/src/gui/kernel/qplatformintegration.cpp index 0af3295430..9673ad673a 100644 --- a/src/gui/kernel/qplatformintegration.cpp +++ b/src/gui/kernel/qplatformintegration.cpp @@ -392,6 +392,8 @@ QVariant QPlatformIntegration::styleHint(StyleHint hint) const return false; case ShowIsMaximized: return false; + case ShowShortcutsInContextMenus: + return QPlatformTheme::defaultThemeHint(QPlatformTheme::ShowShortcutsInContextMenus); case PasswordMaskDelay: return QPlatformTheme::defaultThemeHint(QPlatformTheme::PasswordMaskDelay); case PasswordMaskCharacter: diff --git a/src/gui/kernel/qplatformintegration.h b/src/gui/kernel/qplatformintegration.h index 54904ef60d..49d41dd576 100644 --- a/src/gui/kernel/qplatformintegration.h +++ b/src/gui/kernel/qplatformintegration.h @@ -161,6 +161,7 @@ public: ItemViewActivateItemOnSingleClick, UiEffects, WheelScrollLines, + ShowShortcutsInContextMenus, }; virtual QVariant styleHint(StyleHint hint) const; diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp index 878f656f2e..ebf65eda12 100644 --- a/src/gui/kernel/qplatformtheme.cpp +++ b/src/gui/kernel/qplatformtheme.cpp @@ -161,6 +161,8 @@ QT_BEGIN_NAMESPACE The default value is double the MouseDoubleClickDistance, or 10 logical pixels if that is not specified. + \value ShowShortcutsInContextMenus (bool) Whether to display shortcut key sequences in context menus. + \sa themeHint(), QStyle::pixelMetric() */ @@ -516,6 +518,8 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint) return QVariant(QStringList()); case QPlatformTheme::StyleNames: return QVariant(QStringList()); + case QPlatformTheme::ShowShortcutsInContextMenus: + return QVariant(false); case TextCursorWidth: return QVariant(1); case DropShadow: diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h index 2ba2f8669f..f4ff418db6 100644 --- a/src/gui/kernel/qplatformtheme.h +++ b/src/gui/kernel/qplatformtheme.h @@ -115,7 +115,8 @@ public: MousePressAndHoldInterval, MouseDoubleClickDistance, WheelScrollLines, - TouchDoubleTapDistance + TouchDoubleTapDistance, + ShowShortcutsInContextMenus }; enum DialogType { diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp index 85c0768e35..0850228ee5 100644 --- a/src/gui/kernel/qstylehints.cpp +++ b/src/gui/kernel/qstylehints.cpp @@ -365,6 +365,17 @@ bool QStyleHints::showIsMaximized() const } /*! + \property QStyleHints::showShortcutsInContextMenus + \since 5.10 + \brief \c true if the platform normally shows shortcut key sequences in + context menus, otherwise \c false. +*/ +bool QStyleHints::showShortcutsInContextMenus() const +{ + return themeableHint(QPlatformTheme::ShowShortcutsInContextMenus, QPlatformIntegration::ShowShortcutsInContextMenus).toBool(); +} + +/*! \property QStyleHints::passwordMaskDelay \brief the time, in milliseconds, a typed letter is displayed unshrouded in a text input field in password mode. diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h index b9bf428edd..3230149247 100644 --- a/src/gui/kernel/qstylehints.h +++ b/src/gui/kernel/qstylehints.h @@ -90,6 +90,7 @@ public: int cursorFlashTime() const; bool showIsFullScreen() const; bool showIsMaximized() const; + bool showShortcutsInContextMenus() const; int passwordMaskDelay() const; QChar passwordMaskCharacter() const; qreal fontSmoothingGamma() const; |