diff options
author | Norwegian Rock Cat <qt-info@nokia.com> | 2009-07-03 16:31:08 +0200 |
---|---|---|
committer | Norwegian Rock Cat <qt-info@nokia.com> | 2009-07-03 16:31:08 +0200 |
commit | 0efa8595dd385e238baa12a6e90efdcc0e0b8f7f (patch) | |
tree | b0060f884adff1e1463a088806b7cc9b8af45def /src | |
parent | f857a75152eb50de760bdcc24a61fe5c74be7b8b (diff) |
Try to be consistent when using the macstyle and have protections for it
Allows me to test other styles on the same machine.
Diffstat (limited to 'src')
-rw-r--r-- | src/qtsegmentcontrol.cpp | 82 |
1 files changed, 42 insertions, 40 deletions
diff --git a/src/qtsegmentcontrol.cpp b/src/qtsegmentcontrol.cpp index 61fc756..3eb385b 100644 --- a/src/qtsegmentcontrol.cpp +++ b/src/qtsegmentcontrol.cpp @@ -57,54 +57,56 @@ protected: QtStyleOptionSegmentControlSegment(int version); }; -static void drawSegmentControlSegmentSegment(const QStyleOption *option, QPainter *painter, QWidget *) +static void drawSegmentControlSegmentSegment(const QStyleOption *option, QPainter *painter, QWidget *widget) { -#ifdef Q_WS_MAC // ### Change to qstyleoption_cast! if (const QtStyleOptionSegmentControlSegment *segment = static_cast<const QtStyleOptionSegmentControlSegment *>(option)) { - CGContextRef cg = qt_mac_cg_context(painter->device()); - HIThemeSegmentDrawInfo sgi; - bool selected = (segment->state & QStyle::State_Selected); - sgi.version = 0; - // 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; - sgi.adornment = kHIThemeSegmentAdornmentNone; - switch (segment->position) { - case QtStyleOptionSegmentControlSegment::Beginning: - sgi.position = kHIThemeSegmentPositionFirst; - if (segment->selectedPositions == QtStyleOptionSegmentControlSegment::NotAdjacent - || selected) - sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; - break; - case QtStyleOptionSegmentControlSegment::Middle: - sgi.position = kHIThemeSegmentPositionMiddle; - if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) - sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; - if (selected || !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::NextIsSelected)) // Also when we're selected. - sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; - break; - case QStyleOptionTab::End: - sgi.position = kHIThemeSegmentPositionLast; - if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) - sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; - break; - case QStyleOptionTab::OnlyOneTab: - sgi.position = kHIThemeSegmentPositionOnly; - break; - } +#ifdef Q_WS_MAC + if (qobject_cast<QMacStyle *>(widget->style())) { + CGContextRef cg = qt_mac_cg_context(painter->device()); + HIThemeSegmentDrawInfo sgi; + bool selected = (segment->state & QStyle::State_Selected); + sgi.version = 0; + // 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; + sgi.adornment = kHIThemeSegmentAdornmentNone; + switch (segment->position) { + case QtStyleOptionSegmentControlSegment::Beginning: + sgi.position = kHIThemeSegmentPositionFirst; + if (segment->selectedPositions == QtStyleOptionSegmentControlSegment::NotAdjacent + || selected) + sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; + break; + case QtStyleOptionSegmentControlSegment::Middle: + sgi.position = kHIThemeSegmentPositionMiddle; + if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) + sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; + if (selected || !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::NextIsSelected)) // Also when we're selected. + sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; + break; + case QStyleOptionTab::End: + sgi.position = kHIThemeSegmentPositionLast; + if (selected && !(segment->selectedPositions & QtStyleOptionSegmentControlSegment::PreviousIsSelected)) + sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; + break; + case QStyleOptionTab::OnlyOneTab: + sgi.position = kHIThemeSegmentPositionOnly; + break; + } - HIRect hirect = CGRectMake(segment->rect.x(), segment->rect.y(), - segment->rect.width(), segment->rect.height()); - HIThemeDrawSegment(&hirect, &sgi, cg, kHIThemeOrientationNormal); - CFRelease(cg); - } + HIRect hirect = CGRectMake(segment->rect.x(), segment->rect.y(), + segment->rect.width(), segment->rect.height()); + HIThemeDrawSegment(&hirect, &sgi, cg, kHIThemeOrientationNormal); + CFRelease(cg); + } #else painter->drawRect(option->rect, QColor(0, 255, 0, 135)); #endif + } } static QSize segmentSizeFromContents(const QStyleOption *option, const QSize &contentSize, const QWidget *widget) |