aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/nativestyle
diff options
context:
space:
mode:
Diffstat (limited to 'src/imports/nativestyle')
-rw-r--r--src/imports/nativestyle/items/qquickstyleitemprogressbar.cpp14
-rw-r--r--src/imports/nativestyle/qstyle/qquickcommonstyle.cpp5
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);
}
}