From b0fb74793aaeef85bad378c628c22eae10abdc44 Mon Sep 17 00:00:00 2001 From: Norwegian Rock Cat Date: Fri, 8 May 2009 21:56:13 +0200 Subject: Better drawing. qstyleoption_cast is not working well, but it could easily be something wrong with my style option. Now for size hinting to work. --- src/qtsegmentcontrol.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/qtsegmentcontrol.cpp b/src/qtsegmentcontrol.cpp index ce04969..57716bc 100644 --- a/src/qtsegmentcontrol.cpp +++ b/src/qtsegmentcontrol.cpp @@ -8,7 +8,7 @@ #ifdef Q_WS_MAC #include -ThemeDrawState getDrawState(QStyle::State flags) +static ThemeDrawState getDrawState(QStyle::State flags) { ThemeDrawState tds = kThemeStateActive; if (flags & QStyle::State_Sunken) { @@ -82,8 +82,10 @@ static void drawSegmentControlSegment(const QStyleOption *option, #ifndef Q_WS_MAC painter->fillRect(option->rect, Qt::blue); #else + // ### Change to qstyleoption_cast! if (const QtStyleOptionSegmentControlSegment *segment - = qstyleoption_cast(option)) { + = static_cast(option)) { + qDebug("Segment pos %d", segment->position); CGContextRef cg = qt_mac_cg_context(painter->device()); HIThemeSegmentDrawInfo sgi; sgi.version = 0; @@ -91,10 +93,10 @@ static void drawSegmentControlSegment(const QStyleOption *option, sgi.value = (segment->state & QStyle::State_Selected) ? kThemeButtonOn : kThemeButtonOff; sgi.size = kHIThemeSegmentSizeNormal; sgi.kind = kHIThemeSegmentKindNormal; - sgi.position = sgi.position; + sgi.position = segment->position; sgi.adornment = kHIThemeSegmentAdornmentNone; HIRect hirect = CGRectMake(segment->rect.x(), segment->rect.y(), - segment->rect.width(), segment->rect.height()); + segment->rect.width(), segment->rect.height()); HIThemeDrawSegment(&hirect, &sgi, cg, kHIThemeOrientationNormal); CFRelease(cg); } @@ -319,7 +321,8 @@ void QtSegmentControl::initStyleOption(int segment, QStyleOption *option) if (!option || !d->indexOK(segment)) return; option->initFrom(this); - if (QtStyleOptionSegmentControlSegment *sgi = qstyleoption_cast(option)) { + // ## Change to qstyleoption_cast + if (QtStyleOptionSegmentControlSegment *sgi = static_cast(option)) { sgi->iconSize = d->iconSize; const SegmentInfo &segmentInfo = d->segments[segment]; if (d->segments.count() == 1) { -- cgit v1.2.3