From bf4ff76ad2036603a702cee9ecdb57172d520e4b Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Fri, 3 Jul 2009 13:29:33 +0200 Subject: Fix disabled text rendering Seems I need to set the color group myself since the widget itself has a separate enabled state. --- src/qtsegmentcontrol.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/qtsegmentcontrol.cpp b/src/qtsegmentcontrol.cpp index 762b40f..00e21c3 100644 --- a/src/qtsegmentcontrol.cpp +++ b/src/qtsegmentcontrol.cpp @@ -66,7 +66,8 @@ static void drawSegmentControlSegmentSegment(const QStyleOption *option, QPainte HIThemeSegmentDrawInfo sgi; bool selected = (segment->state & QStyle::State_Selected); sgi.version = 0; - sgi.state = getDrawState(segment->state); + // Things look the same regardless of enabled. + sgi.state = getDrawState(segment->state | QStyle::State_Enabled); sgi.value = selected ? kThemeButtonOn : kThemeButtonOff; sgi.size = kHIThemeSegmentSizeNormal; sgi.kind = kHIThemeSegmentKindNormal; @@ -122,8 +123,12 @@ static void drawSegmentControlSegmentLabel(const QStyleOption *option, QPainter { if (const QtStyleOptionSegmentControlSegment *segment = static_cast(option)) { - qApp->style()->drawItemText(painter, segment->rect, Qt::AlignCenter, segment->palette, - segment->state & QStyle::State_Enabled, segment->text); + QPalette palette = segment->palette; + bool enabled = segment->state & QStyle::State_Enabled; + if (!enabled) + palette.setCurrentColorGroup(QPalette::Disabled); + qApp->style()->drawItemText(painter, segment->rect, Qt::AlignCenter, palette, + enabled, segment->text, QPalette::WindowText); } } -- cgit v1.2.3