From 8a5bc81356d5a4e39a97db515db2b847ae70c4b1 Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 12 May 2013 08:28:11 +0000 Subject: [PATCH] Qt: workaround for Qt lib bug (QStyle) where disabled button doesn't have activated disabled colors palette. issue #24413 git-svn-id: trunk@41144 - --- lcl/interfaces/qt/qtthemes.pas | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/lcl/interfaces/qt/qtthemes.pas b/lcl/interfaces/qt/qtthemes.pas index b3f2b46e10..14924d94b3 100644 --- a/lcl/interfaces/qt/qtthemes.pas +++ b/lcl/interfaces/qt/qtthemes.pas @@ -134,6 +134,7 @@ var ClipR: TRect; // fix branch indicators (treeviews) {$ENDIF} dx, dy: integer; + APalette: QPaletteH; begin if (Context <> nil) then begin @@ -178,6 +179,21 @@ begin if Details.Element = teToolBar then Features := Features or QStyleOptionButtonFlat; QStyleOptionButton_setFeatures(QStyleOptionButtonH(opt), Features); + + // workaround for qt QStyle bug. QStyle does not set disable flag (palette). + // see issue #24413 + if Details.State in [TS_DISABLED] then + begin + APalette := QPalette_create(); + try + QStyleOption_palette(opt, APalette); + QPalette_setCurrentColorGroup(APalette, QPaletteDisabled); + QStyleOption_setPalette(opt, APalette); + finally + QPalette_destroy(APalette); + end; + end; + end else if (Element.ControlElement = QStyleCE_HeaderSection) then