From 856284d525f7c7958e76843cac46d718f5325275 Mon Sep 17 00:00:00 2001 From: Sergio Martins Date: Wed, 11 Jul 2018 14:01:10 +0100 Subject: [PATCH] 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 Reviewed-by: Olivier Goffart (Woboq GmbH) --- src/widgets/styles/qstylesheetstyle.cpp | 5 +---- .../styles/qstylesheetstyle/tst_qstylesheetstyle.cpp | 12 ++++++++++++ 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"