Revert "QPushButton: fix support of style sheet rule for text alignment"
This reverts commit 6269438af95bbd988ead08829fa3bc9dc25891e8, and adds a test. This change introduced QTBUG-91735, without fixing QTBUG-86857 correctly. The code already interprets the textAlignment values from the rule, also if no icon is set. Adding the same, or some default textAlignment to the text flags if there is no icon doesn't work. Fixes: QTBUG-91735 Task-number: QTBUG-86857 Change-Id: Iee07e63a40e72909275f32e1caa28b33a595f879 Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io> Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io> (cherry picked from commit 674747bac1c8b57d4940de2ee68b6b562dfcad61) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
cc6f0a6c35
commit
42f364c494
@ -3569,8 +3569,8 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
|
|||||||
const uint horizontalAlignMask = Qt::AlignHCenter | Qt::AlignLeft | Qt::AlignRight;
|
const uint horizontalAlignMask = Qt::AlignHCenter | Qt::AlignLeft | Qt::AlignRight;
|
||||||
const uint verticalAlignMask = Qt::AlignVCenter | Qt::AlignTop | Qt::AlignBottom;
|
const uint verticalAlignMask = Qt::AlignVCenter | Qt::AlignTop | Qt::AlignBottom;
|
||||||
|
|
||||||
const Qt::Alignment textAlignment = rule.position()->textAlignment;
|
if (rule.hasPosition() && rule.position()->textAlignment != 0) {
|
||||||
if (rule.hasPosition() && textAlignment != 0) {
|
Qt::Alignment textAlignment = rule.position()->textAlignment;
|
||||||
tf |= (textAlignment & verticalAlignMask) ? (textAlignment & verticalAlignMask) : Qt::AlignVCenter;
|
tf |= (textAlignment & verticalAlignMask) ? (textAlignment & verticalAlignMask) : Qt::AlignVCenter;
|
||||||
tf |= (textAlignment & horizontalAlignMask) ? (textAlignment & horizontalAlignMask) : Qt::AlignHCenter;
|
tf |= (textAlignment & horizontalAlignMask) ? (textAlignment & horizontalAlignMask) : Qt::AlignHCenter;
|
||||||
if (!styleHint(SH_UnderlineShortcut, button, w))
|
if (!styleHint(SH_UnderlineShortcut, button, w))
|
||||||
@ -3629,8 +3629,6 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
|
|||||||
iconRect.translate(pixelMetric(PM_ButtonShiftHorizontal, opt, w),
|
iconRect.translate(pixelMetric(PM_ButtonShiftHorizontal, opt, w),
|
||||||
pixelMetric(PM_ButtonShiftVertical, opt, w));
|
pixelMetric(PM_ButtonShiftVertical, opt, w));
|
||||||
p->drawPixmap(iconRect, pixmap);
|
p->drawPixmap(iconRect, pixmap);
|
||||||
}else {
|
|
||||||
tf |= textAlignment;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (button->state & (State_On | State_Sunken))
|
if (button->state & (State_On | State_Sunken))
|
||||||
|
@ -73,6 +73,7 @@ private slots:
|
|||||||
#endif
|
#endif
|
||||||
void emitReleasedAfterChange();
|
void emitReleasedAfterChange();
|
||||||
void hitButton();
|
void hitButton();
|
||||||
|
void iconOnlyStyleSheet();
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void resetCounters();
|
void resetCounters();
|
||||||
@ -734,5 +735,22 @@ void tst_QPushButton::hitButton()
|
|||||||
QVERIFY(!button2->hitButton(QPoint(2, 2)));
|
QVERIFY(!button2->hitButton(QPoint(2, 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Test that a style sheet with only icon doesn't crash.
|
||||||
|
QTBUG-91735
|
||||||
|
*/
|
||||||
|
void tst_QPushButton::iconOnlyStyleSheet()
|
||||||
|
{
|
||||||
|
QIcon icon(":/qt-project.org/styles/commonstyle/images/dvd-32.png");
|
||||||
|
QVERIFY(!icon.isNull());
|
||||||
|
QPushButton pb;
|
||||||
|
pb.setStyleSheet("QPushButton {"
|
||||||
|
"icon: url(:/qt-project.org/styles/commonstyle/images/dvd-32.png);"
|
||||||
|
"border: red;"
|
||||||
|
"}");
|
||||||
|
pb.show();
|
||||||
|
QVERIFY(QTest::qWaitForWindowExposed(&pb));
|
||||||
|
}
|
||||||
|
|
||||||
QTEST_MAIN(tst_QPushButton)
|
QTEST_MAIN(tst_QPushButton)
|
||||||
#include "tst_qpushbutton.moc"
|
#include "tst_qpushbutton.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user