summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergio Martins <sergio.martins@kdab.com>2018-07-11 14:01:10 +0100
committerSérgio Martins <sergio.martins@kdab.com>2018-07-17 11:24:29 +0000
commit856284d525f7c7958e76843cac46d718f5325275 (patch)
treef2da679dc99077a5a2212356b78f69d9d307f008
parent37bd2400fa0f36c8f7ef7cbb06d0f05e15356b5b (diff)
Reset geometry constraints when removing stylesheet
CSS geometry constraints such as "min-height" or "min-width" will set size constraints on the widget. Removing the stylesheet should remove these constraints. Task-Id: QTBUG-69418 Change-Id: I1008e4390281c90112303d72dd7d59a8acddfcd9 Reviewed-by: David Faure <david.faure@kdab.com> Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp5
-rw-r--r--tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp12
2 files changed, 13 insertions, 4 deletions
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index 94509f621e..c046ac52f9 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -2905,10 +2905,7 @@ void QStyleSheetStyle::unpolish(QWidget *w)
styleSheetCaches->renderRulesCache.remove(w);
styleSheetCaches->styleSheetCache.remove(w);
unsetPalette(w);
- w->setProperty("_q_stylesheet_minw", QVariant());
- w->setProperty("_q_stylesheet_minh", QVariant());
- w->setProperty("_q_stylesheet_maxw", QVariant());
- w->setProperty("_q_stylesheet_maxh", QVariant());
+ setGeometry(w);
w->setAttribute(Qt::WA_StyleSheet, false);
QObject::disconnect(w, 0, this, 0);
#if QT_CONFIG(scrollarea)
diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
index 28a099de83..6d47d5cfb6 100644
--- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -98,6 +98,7 @@ private slots:
void widgetStyle();
void appStyle();
void QTBUG11658_cachecrash();
+ void unpolish();
private:
QColor COLOR(const QWidget& w) {
w.ensurePolished();
@@ -1999,6 +2000,17 @@ void tst_QStyleSheetStyle::widgetStylePropagation()
QCOMPARE(COLOR(childLabel), childExpectedColor);
}
+void tst_QStyleSheetStyle::unpolish()
+{
+ QWidget w;
+ QCOMPARE(w.minimumWidth(), 0);
+ w.setStyleSheet("QWidget { min-width: 100; }");
+ w.ensurePolished();
+ QCOMPARE(w.minimumWidth(), 100);
+ w.setStyleSheet("");
+ QCOMPARE(w.minimumWidth(), 0);
+}
+
QTEST_MAIN(tst_QStyleSheetStyle)
#include "tst_qstylesheetstyle.moc"