summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan-Arve Sæther <jan-arve.saether@nokia.com>2009-08-06 13:18:24 +0200
committerJan-Arve Sæther <jan-arve.saether@nokia.com>2009-08-06 13:34:07 +0200
commit620e7d82b34624f6765daf32917b12ab0e2249b0 (patch)
tree1efc12b1077d5646fbfed5490fdd41e9dabea3d8
parentfbef83bc1adb03acd9dcb8dc6619ff77add8bd93 (diff)
downloadqt4-tools-620e7d82b34624f6765daf32917b12ab0e2249b0.tar.gz
Make sure QWidget::setStyle() relayouts its children.
Changing a style on a widget should invalidate the widget's layout, since the layouts spacings and margins may depend on the style. One optimization could be to check to see if the spacing and margins have changed due to the style change, but the old style is not available in changeEvent, so we'll keep it simple for now. RevBy: paul Task: 256986
-rw-r--r--src/gui/kernel/qwidget.cpp4
-rw-r--r--tests/auto/qboxlayout/tst_qboxlayout.cpp1
2 files changed, 3 insertions, 2 deletions
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index 60a6b7ac92..f7057616f1 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -7990,10 +7990,12 @@ void QWidget::changeEvent(QEvent * event)
case QEvent::FontChange:
case QEvent::StyleChange: {
+ Q_D(QWidget);
update();
updateGeometry();
+ if (d->layout)
+ d->layout->invalidate();
#ifdef Q_WS_QWS
- Q_D(QWidget);
if (isWindow())
d->data.fstrut_dirty = true;
#endif
diff --git a/tests/auto/qboxlayout/tst_qboxlayout.cpp b/tests/auto/qboxlayout/tst_qboxlayout.cpp
index 642bc77331..5803985cbe 100644
--- a/tests/auto/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/qboxlayout/tst_qboxlayout.cpp
@@ -240,7 +240,6 @@ void tst_QBoxLayout::setStyleShouldChangeSpacing()
window->setStyle(style2);
QTest::qWait(100);
spacing = pb2->geometry().left() - pb1->geometry().right() - 1;
- QEXPECT_FAIL("", "Fix for next minor release", Continue);
QCOMPARE(spacing, 10);
delete window;