diff options
author | Gabriel de Dietrich <gabriel.dietrich-de@nokia.com> | 2011-05-26 15:12:48 +0200 |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-05-26 20:39:30 +0200 |
commit | d49973f834fb73c534275f5b1d508329638e2823 (patch) | |
tree | c11baf84bd5ac034ab0dfed90c47d2b9fa2e7e06 /tests/auto/qwidget/tst_qwidget.cpp | |
parent | bbbea1fa966525ae8417297ce5579c5f2011ad2c (diff) |
Fix infinite recursion when changing geometry on Mac
Some complex widgets might get a negatively sized rectangle when
calling QWidgetPrivate:setGeometry_sys_helper(), triggering a infinite
recursion. Normalizing the rectangle size before checking for size
change is enough to break this infinite recursion.
Task-number: QTBUG-17333
Change-Id: I4682c3088ea53fb9f28f746c8264f573b5284825
Reviewed-on: http://codereview.qt.nokia.com/156
Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com>
Diffstat (limited to 'tests/auto/qwidget/tst_qwidget.cpp')
-rw-r--r-- | tests/auto/qwidget/tst_qwidget.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/auto/qwidget/tst_qwidget.cpp b/tests/auto/qwidget/tst_qwidget.cpp index f070d24ec3..eb110a246e 100644 --- a/tests/auto/qwidget/tst_qwidget.cpp +++ b/tests/auto/qwidget/tst_qwidget.cpp @@ -67,6 +67,7 @@ #include <QtGui/qpaintengine.h> #include <private/qbackingstore_p.h> #include <qmenubar.h> +#include <qtableview.h> #include <QtGui/QGraphicsView> #include <QtGui/QGraphicsProxyWidget> @@ -403,6 +404,7 @@ private slots: void taskQTBUG_11373(); #endif // QT_MAC_USE_COCOA #endif + void taskQTBUG_17333_ResizeInfiniteRecursion(); void nativeChildFocus(); @@ -10464,6 +10466,18 @@ void tst_QWidget::taskQTBUG_11373() #endif // QT_MAC_USE_COCOA #endif +void tst_QWidget::taskQTBUG_17333_ResizeInfiniteRecursion() +{ + QTableView tb; + const char *s = "border: 1px solid;"; + tb.setStyleSheet(s); + tb.show(); + + QTest::qWaitForWindowShown(&tb); + tb.setGeometry(QRect(100, 100, 0, 100)); + // No crash, it works. +} + void tst_QWidget::nativeChildFocus() { QWidget w; |