diff options
Diffstat (limited to 'src/imports/nativestyle')
-rw-r--r-- | src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp | 14 | ||||
-rw-r--r-- | src/imports/nativestyle/qstyle/qquickcommonstyle.cpp | 5 |
2 files changed, 14 insertions, 5 deletions
diff --git a/src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp b/src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp index 3429b5ac..8042d35a 100644 --- a/src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp +++ b/src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp @@ -57,7 +57,15 @@ StyleItemGeometry QQuickStyleItemProgressBar::calculateGeometry() StyleItemGeometry geometry; geometry.minimumSize = style()->sizeFromContents(QStyle::CT_ProgressBar, &styleOption, QSize(0, 0)); - geometry.implicitSize = geometry.minimumSize; + + // From qprogressbar.cpp in qtbase: + const int cw = style()->pixelMetric(QStyle::PM_ProgressBarChunkWidth, &styleOption); + QFontMetrics fm(control<QQuickProgressBar>()->font()); + QSize size = QSize(qMax(9, cw) * 7 + fm.horizontalAdvance(QLatin1Char('0')) * 4, fm.height() + 8); + if (!(styleOption.state & QStyle::State_Horizontal)) + size = size.transposed(); + + geometry.implicitSize = style()->sizeFromContents(QStyle::CT_ProgressBar, &styleOption, size); styleOption.rect = QRect(QPoint(0, 0), geometry.implicitSize); geometry.contentRect = style()->subElementRect(QStyle::SE_ProgressBarContents, &styleOption); geometry.layoutRect = style()->subElementRect(QStyle::SE_ProgressBarLayoutItem, &styleOption); @@ -74,6 +82,10 @@ void QQuickStyleItemProgressBar::paintEvent(QPainter *painter) styleOption.rect = style()->subElementRect(QStyle::SE_ProgressBarGroove, &styleOption); style()->drawControl(QStyle::CE_ProgressBarGroove, &styleOption, painter); } else { + const QRect r = styleOption.rect; + styleOption.rect = style()->subElementRect(QStyle::SE_ProgressBarGroove, &styleOption); + style()->drawControl(QStyle::CE_ProgressBarGroove, &styleOption, painter); + styleOption.rect = r; styleOption.rect = style()->subElementRect(QStyle::SE_ProgressBarContents, &styleOption); style()->drawControl(QStyle::CE_ProgressBarContents, &styleOption, painter); } diff --git a/src/imports/nativestyle/qstyle/qquickcommonstyle.cpp b/src/imports/nativestyle/qstyle/qquickcommonstyle.cpp index fad47783..d7b97f21 100644 --- a/src/imports/nativestyle/qstyle/qquickcommonstyle.cpp +++ b/src/imports/nativestyle/qstyle/qquickcommonstyle.cpp @@ -1446,11 +1446,9 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, pbBits.palette = pal2; int myY = pbBits.rect.y(); int myHeight = pbBits.rect.height(); - pbBits.state = State_None; - QMatrix4x4 m; + pbBits.state = State_Horizontal; for (int i = 0; i < nu; ++i) { pbBits.rect.setRect(x0 + x, myY, unit_width, myHeight); - pbBits.rect = m.mapRect(QRectF(pbBits.rect)).toRect(); proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); x += reverse ? -unit_width : unit_width; } @@ -1461,7 +1459,6 @@ void QCommonStyle::drawControl(ControlElement element, const QStyleOption *opt, int pixels_left = w - (nu * unit_width); int offset = reverse ? x0 + x + unit_width-pixels_left : x0 + x; pbBits.rect.setRect(offset, myY, pixels_left, myHeight); - pbBits.rect = m.mapRect(QRectF(pbBits.rect)).toRect(); proxy()->drawPrimitive(PE_IndicatorProgressChunk, &pbBits, p); } } |