summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/widgets/widgets')
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp36
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp80
2 files changed, 116 insertions, 0 deletions
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index 751a16c59d..15f2f88a8d 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,41 @@ 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.menuBar()->geometry().left(), contentsMargin);
+ QCOMPARE(mw.menuBar()->geometry().top(), contentsMargin);
+
+ QCOMPARE(mw.statusBar()->geometry().left(), contentsMargin);
+ QCOMPARE(mw.statusBar()->geometry().bottom() + 1, mw.height() - contentsMargin);
+}
+
void tst_QMainWindow::centralWidget()
{
{
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index f4e2cc174e..7588950b76 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -42,6 +42,8 @@
#include <qdesktopwidget.h>
#include <qaction.h>
#include <qstyleoption.h>
+#include <QVBoxLayout>
+#include <QLabel>
#include <qscreen.h>
#include <qobject.h>
@@ -83,6 +85,7 @@ public:
private slots:
void getSetCheck();
+ void cleanup();
void clear();
void removeItemAt();
@@ -126,6 +129,8 @@ private slots:
#endif
void taskQTBUG11823_crashwithInvisibleActions();
void closeOnSecondClick();
+ void cornerWidgets_data();
+ void cornerWidgets();
protected slots:
void onSimpleActivated( QAction*);
@@ -195,6 +200,11 @@ void tst_QMenuBar::onSimpleActivated( QAction* action )
m_simpleActivatedCount++;
}
+void tst_QMenuBar::cleanup()
+{
+ QVERIFY(QApplication::topLevelWidgets().isEmpty());
+}
+
// Create a simple menu bar and connect its actions to onSimpleActivated().
TestMenu tst_QMenuBar::initSimpleMenuBar(QMenuBar *mb)
@@ -1325,5 +1335,75 @@ void tst_QMenuBar::closeOnSecondClick() // QTBUG-32807, menu should close on 2nd
QTRY_VERIFY(!fileMenu->isVisible());
}
+Q_DECLARE_METATYPE(Qt::Corner)
+
+void tst_QMenuBar::cornerWidgets_data()
+{
+ QTest::addColumn<Qt::Corner>("corner");
+ QTest::newRow("left") << Qt::TopLeftCorner;
+ QTest::newRow("right") << Qt::TopRightCorner;
+}
+
+static QByteArray msgComparison(int v1, const char *op, int v2)
+{
+ QString result;
+ QDebug(&result) << v1 << op << v2 << "failed";
+ return result.toLocal8Bit();
+}
+
+void tst_QMenuBar::cornerWidgets()
+{
+ enum { cornerWidgetWidth = 100 };
+
+ QFETCH(Qt::Corner, corner);
+
+#if defined(Q_OS_OSX) || defined(Q_OS_WINCE)
+ QSKIP("Test interferes with native menu bars on this platform");
+#endif
+
+ QWidget widget;
+ const QString dataTag = QLatin1String(QTest::currentDataTag());
+ widget.setWindowTitle(QLatin1String(QTest::currentTestFunction()) + dataTag);
+ QVBoxLayout *layout = new QVBoxLayout(&widget);
+ QMenuBar *menuBar = new QMenuBar(&widget);
+ layout->addWidget(menuBar);
+ QMenu *fileMenu = menuBar->addMenu("File");
+ fileMenu->addAction("Quit");
+ QMenu *editMenu =menuBar->addMenu("Edit");
+ editMenu->addAction("Copy");
+ centerOnScreen(&widget);
+
+ QLabel *cornerLabel = new QLabel(dataTag);
+ cornerLabel->setFixedWidth(cornerWidgetWidth);
+ menuBar->setCornerWidget(cornerLabel, corner);
+ QCOMPARE(menuBar->cornerWidget(corner), cornerLabel);
+ widget.show();
+ QVERIFY(QTest::qWaitForWindowExposed(&widget));
+
+ const QRect fileMenuGeometry = menuBar->actionGeometry(fileMenu->menuAction());
+ const QRect editMenuGeometry = menuBar->actionGeometry(editMenu->menuAction());
+ const int menuBarWidth = menuBar->width();
+ switch (corner) { // QTBUG-36010 , verify corner widget geometry is correct
+ case Qt::TopLeftCorner:
+ QVERIFY2(fileMenuGeometry.left() >= cornerWidgetWidth,
+ msgComparison(fileMenuGeometry.left(), ">=", cornerWidgetWidth));
+ QVERIFY2(menuBarWidth - editMenuGeometry.right() < cornerWidgetWidth,
+ msgComparison(menuBarWidth - editMenuGeometry.right(), "<", cornerWidgetWidth));
+ break;
+ case Qt::TopRightCorner:
+ QVERIFY2(fileMenuGeometry.left() < cornerWidgetWidth,
+ msgComparison(fileMenuGeometry.left(), "<", cornerWidgetWidth));
+ QVERIFY2(menuBarWidth - editMenuGeometry.right() >= cornerWidgetWidth,
+ msgComparison(menuBarWidth - editMenuGeometry.right(), ">=", cornerWidgetWidth));
+ break;
+ default:
+ break;
+ }
+
+ menuBar->setCornerWidget(0, corner); // Don't crash.
+ QVERIFY(!menuBar->cornerWidget(corner));
+ delete cornerLabel;
+}
+
QTEST_MAIN(tst_QMenuBar)
#include "tst_qmenubar.moc"