266 QWidget leftChild; |
266 QWidget leftChild; |
267 leftChild.setPalette(QPalette(Qt::red)); |
267 leftChild.setPalette(QPalette(Qt::red)); |
268 leftChild.setMinimumSize(100, 100); |
268 leftChild.setMinimumSize(100, 100); |
269 leftChild.setMaximumSize(200, 200); |
269 leftChild.setMaximumSize(200, 200); |
270 layout.addWidget(&leftChild, 0, 0); |
270 layout.addWidget(&leftChild, 0, 0); |
271 QApplication::processEvents(); |
271 QApplication::sendPostedEvents(0, 0); |
272 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
272 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
273 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
273 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
274 |
274 |
275 QWidget rightChild; |
275 QWidget rightChild; |
276 rightChild.setPalette(QPalette(Qt::green)); |
276 rightChild.setPalette(QPalette(Qt::green)); |
277 rightChild.setMinimumSize(100, 100); |
277 rightChild.setMinimumSize(100, 100); |
278 rightChild.setMaximumSize(200, 200); |
278 rightChild.setMaximumSize(200, 200); |
279 layout.addWidget(&rightChild, 0, 2); |
279 layout.addWidget(&rightChild, 0, 2); |
280 QApplication::processEvents(); |
280 QApplication::sendPostedEvents(0, 0); |
281 |
281 |
282 QCOMPARE(widget.minimumWidth(), |
282 QCOMPARE(widget.minimumWidth(), |
283 leftChild.minimumWidth() + rightChild.minimumWidth()); |
283 leftChild.minimumWidth() + rightChild.minimumWidth()); |
284 QCOMPARE(widget.minimumHeight(), |
284 QCOMPARE(widget.minimumHeight(), |
285 qMax(leftChild.minimumHeight(), rightChild.minimumHeight())); |
285 qMax(leftChild.minimumHeight(), rightChild.minimumHeight())); |
291 |
291 |
292 static const int colMin = 100; |
292 static const int colMin = 100; |
293 layout.setColumnMinimumWidth(1, colMin); |
293 layout.setColumnMinimumWidth(1, colMin); |
294 QCOMPARE(layout.columnMinimumWidth(1), colMin); |
294 QCOMPARE(layout.columnMinimumWidth(1), colMin); |
295 |
295 |
296 QApplication::processEvents(); |
296 QApplication::sendPostedEvents(0, 0); |
297 QCOMPARE(widget.minimumWidth(), |
297 QCOMPARE(widget.minimumWidth(), |
298 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
298 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
299 QCOMPARE(widget.maximumWidth(), |
299 QCOMPARE(widget.maximumWidth(), |
300 leftChild.maximumWidth() + rightChild.maximumWidth() + colMin); |
300 leftChild.maximumWidth() + rightChild.maximumWidth() + colMin); |
301 QCOMPARE(widget.minimumHeight(), |
301 QCOMPARE(widget.minimumHeight(), |
304 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
304 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
305 |
305 |
306 |
306 |
307 |
307 |
308 layout.setColumnStretch(1,1); |
308 layout.setColumnStretch(1,1); |
309 QApplication::processEvents(); |
309 QApplication::sendPostedEvents(0, 0); |
310 QCOMPARE(widget.minimumWidth(), |
310 QCOMPARE(widget.minimumWidth(), |
311 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
311 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
312 QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX); |
312 QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX); |
313 QCOMPARE(widget.minimumHeight(), |
313 QCOMPARE(widget.minimumHeight(), |
314 qMax(leftChild.minimumHeight(), rightChild.minimumHeight())); |
314 qMax(leftChild.minimumHeight(), rightChild.minimumHeight())); |
316 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
316 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
317 |
317 |
318 |
318 |
319 |
319 |
320 layout.setColumnStretch(1,0); |
320 layout.setColumnStretch(1,0); |
321 QApplication::processEvents(); |
321 QApplication::sendPostedEvents(0, 0); |
322 QCOMPARE(widget.minimumWidth(), |
322 QCOMPARE(widget.minimumWidth(), |
323 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
323 leftChild.minimumWidth() + rightChild.minimumWidth() + colMin); |
324 QCOMPARE(widget.maximumWidth(), |
324 QCOMPARE(widget.maximumWidth(), |
325 leftChild.maximumWidth() + rightChild.maximumWidth() + colMin); |
325 leftChild.maximumWidth() + rightChild.maximumWidth() + colMin); |
326 QCOMPARE(widget.minimumHeight(), |
326 QCOMPARE(widget.minimumHeight(), |
333 layout.setColumnMinimumWidth(1, 0); |
333 layout.setColumnMinimumWidth(1, 0); |
334 |
334 |
335 static const int spacerS = 250; |
335 static const int spacerS = 250; |
336 QSpacerItem *spacer = new QSpacerItem(spacerS, spacerS); |
336 QSpacerItem *spacer = new QSpacerItem(spacerS, spacerS); |
337 layout.addItem(spacer, 0, 1); |
337 layout.addItem(spacer, 0, 1); |
338 QApplication::processEvents(); |
338 QApplication::sendPostedEvents(0, 0); |
339 |
339 |
340 QCOMPARE(widget.minimumWidth(), |
340 QCOMPARE(widget.minimumWidth(), |
341 leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS); |
341 leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS); |
342 QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX); |
342 QCOMPARE(widget.maximumWidth(), QLAYOUTSIZE_MAX); |
343 QCOMPARE(widget.minimumHeight(), |
343 QCOMPARE(widget.minimumHeight(), |
346 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
346 qMax(leftChild.maximumHeight(), rightChild.maximumHeight())); |
347 |
347 |
348 |
348 |
349 spacer->changeSize(spacerS, spacerS, QSizePolicy::Fixed, QSizePolicy::Minimum); |
349 spacer->changeSize(spacerS, spacerS, QSizePolicy::Fixed, QSizePolicy::Minimum); |
350 layout.invalidate(); |
350 layout.invalidate(); |
351 QApplication::processEvents(); |
351 QApplication::sendPostedEvents(0, 0); |
352 QCOMPARE(widget.minimumWidth(), |
352 QCOMPARE(widget.minimumWidth(), |
353 leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS); |
353 leftChild.minimumWidth() + rightChild.minimumWidth() + spacerS); |
354 QCOMPARE(widget.maximumWidth(), |
354 QCOMPARE(widget.maximumWidth(), |
355 leftChild.maximumWidth() + rightChild.maximumWidth() + spacerS); |
355 leftChild.maximumWidth() + rightChild.maximumWidth() + spacerS); |
356 |
356 |
357 |
357 |
358 layout.removeItem(spacer); |
358 layout.removeItem(spacer); |
359 |
359 |
360 rightChild.hide(); |
360 rightChild.hide(); |
361 QApplication::processEvents(); |
361 QApplication::sendPostedEvents(0, 0); |
362 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
362 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
363 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
363 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
364 |
364 |
365 rightChild.show(); |
365 rightChild.show(); |
366 layout.removeWidget(&rightChild); |
366 layout.removeWidget(&rightChild); |
367 QApplication::processEvents(); |
367 QApplication::sendPostedEvents(0, 0); |
368 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
368 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
369 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
369 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
370 |
370 |
371 QWidget bottomChild(&widget); |
371 QWidget bottomChild(&widget); |
372 bottomChild.setPalette(QPalette(Qt::green)); |
372 bottomChild.setPalette(QPalette(Qt::green)); |
373 bottomChild.setMinimumSize(100, 100); |
373 bottomChild.setMinimumSize(100, 100); |
374 bottomChild.setMaximumSize(200, 200); |
374 bottomChild.setMaximumSize(200, 200); |
375 layout.addWidget(&bottomChild, 1, 0); |
375 layout.addWidget(&bottomChild, 1, 0); |
376 QApplication::processEvents(); |
376 QApplication::sendPostedEvents(0, 0); |
377 |
377 |
378 QCOMPARE(widget.minimumHeight(), |
378 QCOMPARE(widget.minimumHeight(), |
379 leftChild.minimumHeight() + bottomChild.minimumHeight()); |
379 leftChild.minimumHeight() + bottomChild.minimumHeight()); |
380 QCOMPARE(widget.minimumWidth(), |
380 QCOMPARE(widget.minimumWidth(), |
381 qMax(leftChild.minimumWidth(), bottomChild.minimumWidth())); |
381 qMax(leftChild.minimumWidth(), bottomChild.minimumWidth())); |
383 leftChild.maximumHeight() + bottomChild.maximumHeight()); |
383 leftChild.maximumHeight() + bottomChild.maximumHeight()); |
384 QCOMPARE(widget.maximumWidth(), |
384 QCOMPARE(widget.maximumWidth(), |
385 qMax(leftChild.maximumWidth(), bottomChild.maximumWidth())); |
385 qMax(leftChild.maximumWidth(), bottomChild.maximumWidth())); |
386 |
386 |
387 bottomChild.hide(); |
387 bottomChild.hide(); |
388 QApplication::processEvents(); |
388 QApplication::sendPostedEvents(0, 0); |
389 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
389 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
390 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
390 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
391 |
391 |
392 bottomChild.show(); |
392 bottomChild.show(); |
393 layout.removeWidget(&bottomChild); |
393 layout.removeWidget(&bottomChild); |
394 QApplication::processEvents(); |
394 QApplication::sendPostedEvents(0, 0); |
395 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
395 QCOMPARE(widget.minimumSize(), leftChild.minimumSize()); |
396 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
396 QCOMPARE(widget.maximumSize(), leftChild.maximumSize()); |
397 } |
397 } |
398 |
398 |
399 |
399 |
421 QSize expectedSizeHint; |
421 QSize expectedSizeHint; |
422 |
422 |
423 SizeHinter leftChild(100,100); |
423 SizeHinter leftChild(100,100); |
424 leftChild.setPalette(QPalette(Qt::red)); |
424 leftChild.setPalette(QPalette(Qt::red)); |
425 layout.addWidget(&leftChild, 0, 0); |
425 layout.addWidget(&leftChild, 0, 0); |
426 QApplication::processEvents(); |
426 QApplication::sendPostedEvents(0, 0); |
427 expectedSizeHint = leftChild.sizeHint(); |
427 expectedSizeHint = leftChild.sizeHint(); |
428 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
428 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
429 |
429 |
430 |
430 |
431 SizeHinter rightChild(200,100); |
431 SizeHinter rightChild(200,100); |
432 rightChild.setPalette(QPalette(Qt::green)); |
432 rightChild.setPalette(QPalette(Qt::green)); |
433 layout.addWidget(&rightChild, 0, 2); |
433 layout.addWidget(&rightChild, 0, 2); |
434 QApplication::processEvents(); |
434 QApplication::sendPostedEvents(0, 0); |
435 QCOMPARE(rightChild.sizeHint(), QSize(200,100)); |
435 QCOMPARE(rightChild.sizeHint(), QSize(200,100)); |
436 |
436 |
437 expectedSizeHint += QSize(rightChild.sizeHint().width(), 0); |
437 expectedSizeHint += QSize(rightChild.sizeHint().width(), 0); |
438 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
438 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
439 |
439 |
440 layout.setColumnMinimumWidth(1, 100); |
440 layout.setColumnMinimumWidth(1, 100); |
441 widget.adjustSize(); |
441 widget.adjustSize(); |
442 expectedSizeHint += QSize(100,0); |
442 expectedSizeHint += QSize(100,0); |
443 QApplication::processEvents(); |
443 QApplication::sendPostedEvents(0, 0); |
444 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
444 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
445 |
445 |
446 rightChild.hide(); |
446 rightChild.hide(); |
447 QApplication::processEvents(); |
447 QApplication::sendPostedEvents(0, 0); |
448 expectedSizeHint -= QSize(rightChild.sizeHint().width(), 0); |
448 expectedSizeHint -= QSize(rightChild.sizeHint().width(), 0); |
449 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
449 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
450 |
450 |
451 |
451 |
452 layout.setColumnMinimumWidth(1, 0); |
452 layout.setColumnMinimumWidth(1, 0); |
457 |
457 |
458 #if 0 |
458 #if 0 |
459 leftChild.setMaximumWidth(200); |
459 leftChild.setMaximumWidth(200); |
460 rightChild.setMaximumWidth(200); |
460 rightChild.setMaximumWidth(200); |
461 |
461 |
462 QApplication::processEvents(); |
462 QApplication::sendPostedEvents(0, 0); |
463 QCOMPARE(widget.maximumWidth(), leftChild.maximumWidth() + rightChild.maximumWidth()); |
463 QCOMPARE(widget.maximumWidth(), leftChild.maximumWidth() + rightChild.maximumWidth()); |
464 #endif |
464 #endif |
465 |
465 |
466 layout.removeWidget(&rightChild); |
466 layout.removeWidget(&rightChild); |
467 QApplication::processEvents(); |
467 QApplication::sendPostedEvents(0, 0); |
468 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
468 QCOMPARE(widget.sizeHint(), expectedSizeHint); |
469 |
469 |
470 |
470 |
471 } |
471 } |
472 |
472 |
918 |
918 |
919 m_toplevel->show(); |
919 m_toplevel->show(); |
920 #if defined(Q_WS_X11) |
920 #if defined(Q_WS_X11) |
921 qt_x11_wait_for_window_manager(m_toplevel); // wait for the show |
921 qt_x11_wait_for_window_manager(m_toplevel); // wait for the show |
922 #endif |
922 #endif |
923 QTest::qWait(20); |
923 QTest::qWait(40); |
924 m_toplevel->adjustSize(); |
924 m_toplevel->adjustSize(); |
925 QTest::qWait(120); // wait for the implicit adjustSize |
925 QTest::qWait(240); // wait for the implicit adjustSize |
926 // If the following fails we might have to wait longer. |
926 // If the following fails we might have to wait longer. |
927 // If that does not help there is likely a problem with the implicit adjustSize in show() |
927 // If that does not help there is likely a problem with the implicit adjustSize in show() |
928 if (!fixedSize.isValid()) { |
928 if (!fixedSize.isValid()) { |
929 // Note that this can fail if the desktop has large fonts on windows. |
929 // Note that this can fail if the desktop has large fonts on windows. |
930 QTRY_COMPARE(m_toplevel->size(), m_toplevel->sizeHint()); |
930 QTRY_COMPARE(m_toplevel->size(), m_toplevel->sizeHint()); |