summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNorwegian Rock Cat <qt-info@nokia.com>2009-07-03 13:29:33 +0200
committerNorwegian Rock Cat <qt-info@nokia.com>2009-07-03 13:29:33 +0200
commitbf4ff76ad2036603a702cee9ecdb57172d520e4b (patch)
tree55eaf7006eee3e14d0ed097297619f67da90fd4f
parent6336831866eabf3347ba6b1ba953967ee414f87f (diff)
Fix disabled text rendering
Seems I need to set the color group myself since the widget itself has a separate enabled state.
-rw-r--r--src/qtsegmentcontrol.cpp11
1 files 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<const QtStyleOptionSegmentControlSegment *>(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);
}
}