Ensure that the proxystyle is used over the style's own functions
When calling a style function such as pixelMetric() then this should be done via the proxy style and not on the style directly. This is so that the proxy style always has a chance to override the original style's implementation and still preserve the fallback to the base style. Task-number: QTBUG-20849 Merge-request: 2645 Reviewed-by: olivier (cherry picked from commit 270c20490813fa943b4fbf0feb1aecb98f0b19ba) Change-Id: Id43ec17fd1eae0136d6e1f050f23bca6d7d6d6cf Reviewed-on: http://codereview.qt-project.org/4591 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
This commit is contained in:
parent
acb28484b0
commit
6daaa1bcad
@ -837,14 +837,12 @@ static void drawArrow(const QStyle *style, const QStyleOptionToolButton *toolbut
|
|||||||
|
|
||||||
QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItemV4 *option, int role) const
|
QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItemV4 *option, int role) const
|
||||||
{
|
{
|
||||||
Q_Q(const QCommonStyle);
|
|
||||||
|
|
||||||
const QWidget *widget = option->widget;
|
const QWidget *widget = option->widget;
|
||||||
switch (role) {
|
switch (role) {
|
||||||
case Qt::CheckStateRole:
|
case Qt::CheckStateRole:
|
||||||
if (option->features & QStyleOptionViewItemV2::HasCheckIndicator)
|
if (option->features & QStyleOptionViewItemV2::HasCheckIndicator)
|
||||||
return QSize(q->pixelMetric(QStyle::PM_IndicatorWidth, option, widget),
|
return QSize(proxyStyle->pixelMetric(QStyle::PM_IndicatorWidth, option, widget),
|
||||||
q->pixelMetric(QStyle::PM_IndicatorHeight, option, widget));
|
proxyStyle->pixelMetric(QStyle::PM_IndicatorHeight, option, widget));
|
||||||
break;
|
break;
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
if (option->features & QStyleOptionViewItemV2::HasDisplay) {
|
if (option->features & QStyleOptionViewItemV2::HasDisplay) {
|
||||||
@ -855,7 +853,7 @@ QSize QCommonStylePrivate::viewItemSize(const QStyleOptionViewItemV4 *option, in
|
|||||||
textLayout.setFont(option->font);
|
textLayout.setFont(option->font);
|
||||||
textLayout.setText(option->text);
|
textLayout.setText(option->text);
|
||||||
const bool wrapText = option->features & QStyleOptionViewItemV2::WrapText;
|
const bool wrapText = option->features & QStyleOptionViewItemV2::WrapText;
|
||||||
const int textMargin = q->pixelMetric(QStyle::PM_FocusFrameHMargin, option, widget) + 1;
|
const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, option, widget) + 1;
|
||||||
QRect bounds = option->rect;
|
QRect bounds = option->rect;
|
||||||
switch (option->decorationPosition) {
|
switch (option->decorationPosition) {
|
||||||
case QStyleOptionViewItem::Left:
|
case QStyleOptionViewItem::Left:
|
||||||
@ -919,9 +917,8 @@ static QSizeF viewItemTextLayout(QTextLayout &textLayout, int lineWidth)
|
|||||||
|
|
||||||
void QCommonStylePrivate::viewItemDrawText(QPainter *p, const QStyleOptionViewItemV4 *option, const QRect &rect) const
|
void QCommonStylePrivate::viewItemDrawText(QPainter *p, const QStyleOptionViewItemV4 *option, const QRect &rect) const
|
||||||
{
|
{
|
||||||
Q_Q(const QCommonStyle);
|
|
||||||
const QWidget *widget = option->widget;
|
const QWidget *widget = option->widget;
|
||||||
const int textMargin = q->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
|
const int textMargin = proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, widget) + 1;
|
||||||
|
|
||||||
QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding
|
QRect textRect = rect.adjusted(textMargin, 0, -textMargin, 0); // remove width padding
|
||||||
const bool wrapText = option->features & QStyleOptionViewItemV2::WrapText;
|
const bool wrapText = option->features & QStyleOptionViewItemV2::WrapText;
|
||||||
@ -999,7 +996,6 @@ void QCommonStylePrivate::viewItemDrawText(QPainter *p, const QStyleOptionViewIt
|
|||||||
void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItemV4 *opt, QRect *checkRect,
|
void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItemV4 *opt, QRect *checkRect,
|
||||||
QRect *pixmapRect, QRect *textRect, bool sizehint) const
|
QRect *pixmapRect, QRect *textRect, bool sizehint) const
|
||||||
{
|
{
|
||||||
Q_Q(const QCommonStyle);
|
|
||||||
Q_ASSERT(checkRect && pixmapRect && textRect);
|
Q_ASSERT(checkRect && pixmapRect && textRect);
|
||||||
*pixmapRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DecorationRole));
|
*pixmapRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DecorationRole));
|
||||||
*textRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DisplayRole));
|
*textRect = QRect(QPoint(0, 0), viewItemSize(opt, Qt::DisplayRole));
|
||||||
@ -1009,9 +1005,9 @@ void QCommonStylePrivate::viewItemLayout(const QStyleOptionViewItemV4 *opt, QRe
|
|||||||
const bool hasCheck = checkRect->isValid();
|
const bool hasCheck = checkRect->isValid();
|
||||||
const bool hasPixmap = pixmapRect->isValid();
|
const bool hasPixmap = pixmapRect->isValid();
|
||||||
const bool hasText = textRect->isValid();
|
const bool hasText = textRect->isValid();
|
||||||
const int textMargin = hasText ? q->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0;
|
const int textMargin = hasText ? proxyStyle->pixelMetric(QStyle::PM_FocusFrameHMargin, opt, widget) + 1 : 0;
|
||||||
const int pixmapMargin = hasPixmap ? q->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 ? q->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 x = opt->rect.left();
|
||||||
int y = opt->rect.top();
|
int y = opt->rect.top();
|
||||||
int w, h;
|
int w, h;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user