Let styles indicate that they support dark mode

Add a style hint that allows styles to indicate that they support
dark mode. The macOS and Fusion styles support dark mode, the other
styles, in particular the Windows Vista style, do not.

Task-number: QTBUG-72028
Change-Id: I02cac2e19a21898663f50f09a4ef419a613a73ec
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
bb10
Santhosh Kumar 2022-11-18 18:24:10 +01:00 committed by Volker Hilsheimer
parent e75c1a00e3
commit 3ee7a9f85c
6 changed files with 17 additions and 0 deletions

View File

@ -2892,6 +2892,9 @@ int QMacStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget *w
case SH_TabBar_AllowWheelScrolling:
ret = false;
break;
case SH_SupportsDarkAppearance:
ret = true;
break;
default:
ret = QCommonStyle::styleHint(sh, opt, w, hret);
break;

View File

@ -2316,6 +2316,10 @@ int QWindowsVistaStyle::styleHint(StyleHint hint, const QStyleOption *option, co
ret = 1;
break;
case SH_SupportsDarkAppearance:
ret = 0;
break;
default:
ret = QWindowsStyle::styleHint(hint, option, widget, returnData);
break;

View File

@ -5407,6 +5407,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
case SH_ItemView_PaintAlternatingRowColorsForEmptyArea:
case SH_ComboBox_UseNativePopup:
case SH_Table_AlwaysDrawLeftTopGridLines:
case SH_SupportsDarkAppearance:
ret = false;
break;
case SH_MenuBar_AltKeyNavigation:

View File

@ -3630,6 +3630,7 @@ int QFusionStyle::styleHint(StyleHint hint, const QStyleOption *option, const QW
case SH_MenuBar_MouseTracking:
case SH_Menu_MouseTracking:
case SH_Menu_SupportsSections:
case SH_SupportsDarkAppearance:
return 1;
#if defined(QT_PLATFORM_UIKIT)

View File

@ -1987,6 +1987,13 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
not when the header is hidden. Defaults to false.
This enum value has been introduced in Qt 6.3.
\value SH_SupportsDarkAppearance
Determines whether the style is able to render a UI correctly with
a dark palette. Defaults to false. Style implementors should return true
if they have tested the style with a palette where the background colors
are darker than the foreground colors.
This enum value has been introduced in Qt 6.5.
\sa styleHint()
*/

View File

@ -702,6 +702,7 @@ public:
SH_TabBar_AllowWheelScrolling,
SH_Table_AlwaysDrawLeftTopGridLines,
SH_SpinBox_SelectOnStep,
SH_SupportsDarkAppearance,
// Add new style hint values here
SH_CustomBase = 0xf0000000