diff options
author | Paul Olav Tvete <paul.tvete@digia.com> | 2014-10-22 13:47:55 +0200 |
---|---|---|
committer | Paul Olav Tvete <paul.tvete@digia.com> | 2014-10-24 07:54:36 +0200 |
commit | 2bfee10f3ab8e8e33b2169d735baedcdd9f2b584 (patch) | |
tree | f96e8b67235991d01539be1822d6992aa0b6f912 /tests/auto/widgets | |
parent | 77339e6bbf8baec5c15b604adbc03ab41cb37595 (diff) |
QMainWindow: respect the maximum size of the central widget
Make sure the dock widgets get the available space when the
central widget cannot expand any more.
[ChangeLog][QtWidgets][QMainWindow] Dock widgets will now be resized
properly when the central widget has a fixed size.
Task-number: QTBUG-40410
Change-Id: Id06c07b79aa3102aa41212fa2c621f5fa426fe02
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Reviewed-by: Jan Arve Sæther <jan-arve.saether@theqtcompany.com>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r-- | tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index ebda07ee0c..27c803b43d 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -137,6 +137,7 @@ private slots: #endif void addToolbarAfterShow(); void centralWidgetSize(); + void fixedSizeCentralWidget(); void dockWidgetSize(); void QTBUG2774_stylechange(); void QTBUG15080_restoreState(); @@ -1737,6 +1738,50 @@ void tst_QMainWindow::centralWidgetSize() QTRY_COMPARE(widget.size(), widget.sizeHint()); } +void tst_QMainWindow::fixedSizeCentralWidget() +{ + // QTBUG-40410: dock widgets does not get all the available space when + // central widget is fixed size + QMainWindow mainWindow; + mainWindow.setCorner(Qt::TopLeftCorner, Qt::LeftDockWidgetArea); + + MyWidget widget; + widget.setFixedSize(100,100); + mainWindow.setCentralWidget(&widget); + + QDockWidget dock("D1"); + QWidget *child = new MyWidget; + dock.setWidget(child); + mainWindow.addDockWidget(Qt::TopDockWidgetArea, &dock); + + QDockWidget dock2("D2"); + dock2.setWidget(new MyWidget); + mainWindow.addDockWidget(Qt::LeftDockWidgetArea, &dock2); + + QSize sizeH = mainWindow.sizeHint(); + QSize mwSize = QSize(sizeH.width(), sizeH.height() * 2); + mainWindow.resize(mwSize); + mainWindow.show(); + QVERIFY(QTest::qWaitForWindowExposed(&mainWindow)); + if (mainWindow.height() < mwSize.height()) + QSKIP("The screen is too small for this test"); + + // first, check that we get more than the size hint when we have more space + QTRY_VERIFY(child->height() > child->sizeHint().height()); + int childHeight = child->height(); + + if (qGuiApp->styleHints()->showIsFullScreen()) + QSKIP("The platform is auto maximizing, so we cannot resize the window"); + + // then, check that we get nothing when there is no space + mainWindow.resize(100,100); + QTRY_COMPARE(child->height(), 0); + + // finally verify that we get the space back when we resize to the old size + mainWindow.resize(mwSize); + QTRY_COMPARE(child->height(), childHeight); +} + void tst_QMainWindow::dockWidgetSize() { QMainWindow mainWindow; |