- 
    
Bug
 - 
    Resolution: Done
 - 
    
P1: Critical
 - 
    4.7.2
 - 
    None
 - 
    Mac OS X 10.7, intel i5, Qt 4.7.2
 
Endless recursion runs on Mac OS X (tested on 10.7) when setting QScrollArea::widgetResizable to true, adding widget and setting its minimum size hint greater than corresponding maximum size hint.
Code to reproduce:
QScrollArea* scrollArea = new QScrollArea();
scrollArea->setWidgetResizable (true); //true, not false;
QWidget* widget = new QWidget();
widget->setMinimumHeight(100);
widget->setMaximumHeight(120);
scrollArea->setWidget(widget);
someParentLayout->addWidget(scrollArea);
...
widget->setMinimumHeight(125); //BOOM
QScrollArea calls updateScrollBars, updateScrollBars tries to adjust widget's size, it causes repaint, repaint causes updateScrollBars call etc etc.
Here just a small part of call stack, bug is too easy to reproduce, so I believe dump is not needed:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   Test                          	0x00000001007f8d94 QStyleSheetStyle::renderRule(QWidget const*, QStyleOption const*, int) const + 92
1   Test                          	0x00000001007e1cac QStyleSheetStyle::pixelMetric(QStyle::PixelMetric, QStyleOption const*, QWidget const*) const + 260
2   Test                          	0x0000000100a37ca0 QScrollBar::sizeHint() const + 190
3   Test                          	0x0000000100a973b4 QAbstractScrollArea::maximumViewportSize() const + 76
4   Test                          	0x0000000100aa544d QScrollAreaPrivate::updateScrollBars() + 153
5   Test                          	0x0000000100aa5bbc QScrollArea::eventFilter(QObject*, QEvent*) + 124
6   Test                          	0x0000000100f10e4f QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 247
7   Test                          	0x0000000100108d81 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 397
8   Test                          	0x000000010010d308 QApplication::notify(QObject*, QEvent*) + 17702
9   Test                          	0x0000000100f149ac QCoreApplication::notifyInternal(QObject*, QEvent*) + 208
10  Test                          	0x0000000100f1e0f1 QCoreApplication::sendEvent(QObject*, QEvent*) + 81
11  Test                          	0x000000010004ce71 QWidgetPrivate::setGeometry_sys_helper(int, int, int, int, bool) + 2267
12  Test                          	0x0000000100052bba QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) + 2704
13  Test                          	0x00000001001c8b65 QWidget::resize(QSize const&) + 239
14  Test                          	0x0000000100aa596b QScrollAreaPrivate::updateScrollBars() + 1463
15  Test                          	0x0000000100aa5bbc QScrollArea::eventFilter(QObject*, QEvent*) + 124
16  Test                          	0x0000000100f10e4f QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 247
17  Test                          	0x0000000100108d81 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 397
18  Test                          	0x000000010010d308 QApplication::notify(QObject*, QEvent*) + 17702
19  Test                          	0x0000000100f149ac QCoreApplication::notifyInternal(QObject*, QEvent*) + 208
20  Test                          	0x0000000100f1e0f1 QCoreApplication::sendEvent(QObject*, QEvent*) + 81
21  Test                          	0x000000010004ce71 QWidgetPrivate::setGeometry_sys_helper(int, int, int, int, bool) + 2267
22  Test                          	0x0000000100052bba QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) + 2704
23  Test                          	0x00000001001c8b65 QWidget::resize(QSize const&) + 239
24  Test                          	0x0000000100aa596b QScrollAreaPrivate::updateScrollBars() + 1463
25  Test                          	0x0000000100aa5bbc QScrollArea::eventFilter(QObject*, QEvent*) + 124
26  Test                          	0x0000000100f10e4f QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) + 247
27  Test                          	0x0000000100108d81 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 397
28  Test                          	0x000000010010d308 QApplication::notify(QObject*, QEvent*) + 17702
29  Test                          	0x0000000100f149ac QCoreApplication::notifyInternal(QObject*, QEvent*) + 208
30  Test                          	0x0000000100f1e0f1 QCoreApplication::sendEvent(QObject*, QEvent*) + 81
31  Test                          	0x000000010004ce71 QWidgetPrivate::setGeometry_sys_helper(int, int, int, int, bool) + 2267
32  Test                          	0x0000000100052bba QWidgetPrivate::setGeometry_sys(int, int, int, int, bool) + 2704
33  Test                          	0x00000001001c8b65 QWidget::resize(QSize const&) + 239
34  Test                          	0x0000000100aa596b QScrollAreaPrivate::updateScrollBars() + 1463
...
- relates to
 - 
                    
QTBUG-56280 Resizing widget that has QScrollArea with FixedSize layout, causes infinite resize loop due to scrollbars
-         
 - Closed
 
 -