diff options
-rw-r--r-- | src/widgets/widgets/qmainwindowlayout.cpp | 2 | ||||
-rw-r--r-- | tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp | 33 |
2 files changed, 34 insertions, 1 deletions
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp index 8f8642a72a..827e2ed2ba 100644 --- a/src/widgets/widgets/qmainwindowlayout.cpp +++ b/src/widgets/widgets/qmainwindowlayout.cpp @@ -1440,7 +1440,7 @@ void QMainWindowLayout::setGeometry(const QRect &_r) QLayout::setGeometry(r); if (statusbar) { - QRect sbr(QPoint(0, 0), + QRect sbr(QPoint(r.left(), 0), QSize(r.width(), statusbar->heightForWidth(r.width())) .expandedTo(statusbar->minimumSize())); sbr.moveBottom(r.bottom()); diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp index 751a16c59d..f2ce2d1d96 100644 --- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp +++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp @@ -46,6 +46,7 @@ #include <qlabel.h> #include <qtextedit.h> #include <qstylehints.h> +#include <qdesktopwidget.h> #include <private/qmainwindowlayout_p.h> #include <private/qdockarealayout_p.h> @@ -132,6 +133,8 @@ private slots: void saveRestore_data(); void statusBar(); #endif + void contentsMargins_data(); + void contentsMargins(); void isSeparator(); #ifndef QTEST_NO_CURSOR void setCursor(); @@ -749,8 +752,38 @@ void tst_QMainWindow::statusBar() QVERIFY(indexOfSb == -1); } } + #endif +void tst_QMainWindow::contentsMargins_data() +{ + QTest::addColumn<int>("contentsMargin"); + QTest::newRow("0") << 0; + QTest::newRow("10") << 10; +} + +void tst_QMainWindow::contentsMargins() +{ + QFETCH(int, contentsMargin); + + QMainWindow mw; + const QRect availGeometry = QApplication::desktop()->availableGeometry(); + mw.menuBar()->addMenu("File"); + mw.setWindowTitle(QLatin1String(QTest::currentTestFunction()) + + QLatin1Char(' ') + QLatin1String(QTest::currentDataTag())); + mw.resize(availGeometry.size() / 4); + mw.move((availGeometry.width() - mw.width()) / 2, + (availGeometry.height() - mw.height()) / 2); + mw.setContentsMargins(contentsMargin, contentsMargin, contentsMargin, contentsMargin); + mw.statusBar()->showMessage("Hello"); + + mw.show(); + QVERIFY(QTest::qWaitForWindowExposed(&mw)); + + QCOMPARE(mw.statusBar()->geometry().left(), contentsMargin); + QCOMPARE(mw.statusBar()->geometry().bottom() + 1, mw.height() - contentsMargin); +} + void tst_QMainWindow::centralWidget() { { |