summaryrefslogtreecommitdiffstats
path: root/tests/auto/widgets
diff options
context:
space:
mode:
authorShawn Rutledge <shawn.rutledge@theqtcompany.com>2016-09-15 14:07:07 +0200
committerShawn Rutledge <shawn.rutledge@qt.io>2016-09-26 14:13:20 +0000
commit8cd28ea8850c5365c47dd65de16f528e2e223835 (patch)
treeb0156559fe7e6740a94dcd040d6bd7119aa8f4c3 /tests/auto/widgets
parent680dd3313cd15ab4d9d6b8b3bde77aabbd8de0b0 (diff)
QGuiApplication, platform plugins: don't modify AA_DontUseNativeMenuBar
The default should be false, meaning the application will prefer to use a native menubar if the platform supports it. The application author can set it to true if he wants to always use a Qt-rendered menubar instead; or, he can call QMenuBar::setNativeMenuBar(). Qt and its plugins should not override the author's wishes. Instead, if the platform plugin cannot create a native menubar for whatever reason, createPlatformMenuBar() will return null, and QMenuBar will fall back to using a Qt menubar instead. The application can check the result via QMenuBar::isNativeMenuBar(). QMdiArea when maximized inside a QMainWindow with an empty title does not replace the main window's title if we are using native menus. This behavior turned out to be the same on Unity as it is on macOS, so the autotest needed adjustment to expect that behavior whenever the menubar is native, not only on certain platforms. tst_QMenuBar::allowActiveAndDisabled() tests a standalone QMenuBar. In f92f78094 it was disabled on macOS, but on Ubuntu it passes as long as we force it to be a non-native menubar, so it should pass that way on macOS too. Removed unused variable RESET to fix warning. Task-number: QTBUG-54793 Change-Id: I716e40da709f96331cbbf25213bd7bc153e4dbe2 Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'tests/auto/widgets')
-rw-r--r--tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp76
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp9
2 files changed, 41 insertions, 44 deletions
diff --git a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
index fe5c3a14a0..3fbb9a3f3f 100644
--- a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
+++ b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
@@ -359,25 +359,25 @@ void tst_QMdiSubWindow::mainWindowSupport()
mainWindow.show();
mainWindow.menuBar()->setVisible(true);
qApp->setActiveWindow(&mainWindow);
-
- // QMainWindow's window title is empty
-#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
- {
- QCOMPARE(mainWindow.windowTitle(), QString());
- QMdiSubWindow *window = workspace->addSubWindow(new QPushButton(QLatin1String("Test")));
- QString expectedTitle = QLatin1String("MainWindow's title is empty");
- window->setWindowTitle(expectedTitle);
- QCOMPARE(window->windowTitle(), expectedTitle);
- window->showMaximized();
- QVERIFY(window->isMaximized());
- QCOMPARE(window->windowTitle(), expectedTitle);
- QCOMPARE(mainWindow.windowTitle(), expectedTitle);
- window->showNormal();
- QCOMPARE(window->windowTitle(), expectedTitle);
- QCOMPARE(mainWindow.windowTitle(), QString());
- window->close();
+ bool nativeMenuBar = mainWindow.menuBar()->isNativeMenuBar();
+
+ // QMainWindow's window title is empty, so on a platform which does NOT have a native menubar,
+ // the maximized subwindow's title is imposed onto the main window's titlebar.
+ if (!nativeMenuBar) {
+ QCOMPARE(mainWindow.windowTitle(), QString());
+ QMdiSubWindow *window = workspace->addSubWindow(new QPushButton(QLatin1String("Test")));
+ QString expectedTitle = QLatin1String("MainWindow's title is empty");
+ window->setWindowTitle(expectedTitle);
+ QCOMPARE(window->windowTitle(), expectedTitle);
+ window->showMaximized();
+ QVERIFY(window->isMaximized());
+ QCOMPARE(window->windowTitle(), expectedTitle);
+ QCOMPARE(mainWindow.windowTitle(), expectedTitle);
+ window->showNormal();
+ QCOMPARE(window->windowTitle(), expectedTitle);
+ QCOMPARE(mainWindow.windowTitle(), QString());
+ window->close();
}
-#endif
QString originalWindowTitle = QString::fromLatin1("MainWindow");
mainWindow.setWindowTitle(originalWindowTitle);
@@ -413,16 +413,16 @@ void tst_QMdiSubWindow::mainWindowSupport()
window->showMaximized();
qApp->processEvents();
QVERIFY(window->isMaximized());
-#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
- QVERIFY(window->maximizedButtonsWidget());
- QCOMPARE(window->maximizedButtonsWidget(), mainWindow.menuBar()->cornerWidget(Qt::TopRightCorner));
- QVERIFY(window->maximizedSystemMenuIconWidget());
- QCOMPARE(window->maximizedSystemMenuIconWidget(), qobject_cast<QWidget *>(mainWindow.menuBar()
- ->cornerWidget(Qt::TopLeftCorner)));
- const QString expectedTitle = originalWindowTitle + QLatin1String(" - [")
- + window->widget()->windowTitle() + QLatin1Char(']');
- QCOMPARE(mainWindow.windowTitle(), expectedTitle);
-#endif
+ if (!nativeMenuBar) {
+ QVERIFY(window->maximizedButtonsWidget());
+ QCOMPARE(window->maximizedButtonsWidget(), mainWindow.menuBar()->cornerWidget(Qt::TopRightCorner));
+ QVERIFY(window->maximizedSystemMenuIconWidget());
+ QCOMPARE(window->maximizedSystemMenuIconWidget(),
+ qobject_cast<QWidget *>(mainWindow.menuBar()->cornerWidget(Qt::TopLeftCorner)));
+ const QString expectedTitle = originalWindowTitle + QLatin1String(" - [")
+ + window->widget()->windowTitle() + QLatin1Char(']');
+ QCOMPARE(mainWindow.windowTitle(), expectedTitle);
+ }
// Check that nested child windows don't set window title
nestedWorkspace->show();
@@ -436,15 +436,14 @@ void tst_QMdiSubWindow::mainWindowSupport()
QVERIFY(!nestedWindow->maximizedButtonsWidget());
QVERIFY(!nestedWindow->maximizedSystemMenuIconWidget());
-#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE) && !defined(Q_OS_QNX)
- QCOMPARE(mainWindow.windowTitle(), QString::fromLatin1("%1 - [%2]")
- .arg(originalWindowTitle, window->widget()->windowTitle()));
-#endif
+ if (!nativeMenuBar) {
+ QCOMPARE(mainWindow.windowTitle(), QString::fromLatin1("%1 - [%2]")
+ .arg(originalWindowTitle, window->widget()->windowTitle()));
+ }
}
-#if defined(Q_OS_MAC) || defined(Q_OS_WINCE)
- return;
-#endif
+ if (nativeMenuBar)
+ return;
workspace->activateNextSubWindow();
qApp->processEvents();
@@ -1911,14 +1910,14 @@ void tst_QMdiSubWindow::mdiArea()
void tst_QMdiSubWindow::task_182852()
{
-#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
-
QMdiArea *workspace = new QMdiArea;
QMainWindow mainWindow;
mainWindow.setCentralWidget(workspace);
mainWindow.show();
mainWindow.menuBar()->setVisible(true);
qApp->setActiveWindow(&mainWindow);
+ if (mainWindow.menuBar()->isNativeMenuBar())
+ return; // The main window's title is not overwritten if we have a native menubar (macOS, Unity etc.)
QString originalWindowTitle = QString::fromLatin1("MainWindow - [foo]");
mainWindow.setWindowTitle(originalWindowTitle);
@@ -1954,9 +1953,6 @@ void tst_QMdiSubWindow::task_182852()
QCOMPARE(mainWindow.windowTitle(), QString::fromLatin1("%1 - [%2]")
.arg(originalWindowTitle, window->widget()->windowTitle()));
-
-
-#endif
}
void tst_QMdiSubWindow::task_233197()
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 4b4bec9920..185bfc02a0 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -93,7 +93,6 @@ private slots:
#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
void accel();
void activatedCount();
- void allowActiveAndDisabled();
void check_accelKeys();
void check_cursorKeys1();
@@ -102,6 +101,9 @@ private slots:
void check_escKey();
#endif
+#ifndef Q_OS_WINCE
+ void allowActiveAndDisabled();
+#endif
void check_endKey();
void check_homeKey();
@@ -164,8 +166,6 @@ void tst_QMenuBar::getSetCheck()
#include <qcursor.h>
-const int RESET = 0;
-
/*!
Test plan:
insertItem (all flavors and combinations)
@@ -920,10 +920,11 @@ void tst_QMenuBar::check_escKey()
// QCOMPARE(m_complexActionTriggerCount['h'], (uint)itemH_count);
// }
-#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
+#ifndef Q_OS_WINCE
void tst_QMenuBar::allowActiveAndDisabled()
{
QMenuBar menuBar;
+ menuBar.setNativeMenuBar(false);
// Task 241043 : check that second menu is activated if only
// disabled menu items are added