diff options
Diffstat (limited to 'src/widgets/styles/qcommonstyle.cpp')
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index 0ad508afd2..4a83cdd4a6 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -889,6 +889,13 @@ QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItem *option, int break; } + if (wrapText) { + if (option->features & QStyleOptionViewItem::HasCheckIndicator) + bounds.setWidth(bounds.width() - proxyStyle->pixelMetric(QStyle::PM_IndicatorWidth) - 2 * textMargin); + if (option->features & QStyleOptionViewItem::HasDecoration) + bounds.setWidth(bounds.width() - option->decorationSize.width() - 2 * textMargin); + } + const int lineWidth = bounds.width(); const QSizeF size = viewItemTextLayout(textLayout, lineWidth); return QSize(qCeil(size.width()) + 2 * textMargin, qCeil(size.height())); @@ -994,11 +1001,14 @@ void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItem *opt, QRect const bool hasCheck = checkRect->isValid(); const bool hasPixmap = pixmapRect->isValid(); const bool hasText = textRect->isValid(); - const int textMargin = hasText ? proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0; - const int pixmapMargin = hasPixmap ? proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0; - const int checkMargin = hasCheck ? proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0; - int x = opt->rect.left(); - int y = opt->rect.top(); + const bool hasMargin = (hasText | hasPixmap | hasCheck); + const int frameHMargin = hasMargin ? + proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0; + const int textMargin = hasText ? frameHMargin : 0; + const int pixmapMargin = hasPixmap ? frameHMargin : 0; + const int checkMargin = hasCheck ? frameHMargin : 0; + const int x = opt->rect.left(); + const int y = opt->rect.top(); int w, h; if (textRect->height() == 0 && (!hasPixmap || !sizehint)) { @@ -2499,7 +2509,7 @@ QRect QCommonStyle::subElementRect(SubElement sr, const QStyleOption *opt, const bool vertical = pb->orientation == Qt::Vertical; if (!vertical) { if (pb->textVisible) - textw = qMax(pb->fontMetrics.width(pb->text), pb->fontMetrics.width(QLatin1String("100%"))) + 6; + textw = qMax(pb->fontMetrics.horizontalAdvance(pb->text), pb->fontMetrics.horizontalAdvance(QLatin1String("100%"))) + 6; } if ((pb->textAlignment & Qt::AlignCenter) == 0) { @@ -3411,6 +3421,7 @@ void QCommonStyle::drawComplexControl(ComplexControl cc, const QStyleOptionCompl QRect ir = toolbutton->rect; QStyleOptionToolButton newBtn = *toolbutton; newBtn.rect = QRect(ir.right() + 5 - mbi, ir.y() + ir.height() - mbi + 4, mbi - 6, mbi - 6); + newBtn.rect = visualRect(toolbutton->direction, button, newBtn.rect); proxy()->drawPrimitive(PE_IndicatorArrowDown, &newBtn, p, widget); } } @@ -5289,6 +5300,9 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget case SH_Widget_Animation_Duration: ret = styleHint(SH_Widget_Animate, opt, widget, hret) ? 200 : 0; break; + case SH_ComboBox_AllowWheelScrolling: + ret = true; + break; default: ret = 0; break; |