diff options
author | Eike Ziller <eike.ziller@qt.io> | 2023-09-08 14:36:32 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2023-09-08 12:39:05 +0000 |
commit | 2adebd0eb4ab3f2e0f662091cc7310b09907d2db (patch) | |
tree | 00ecd506dcfb2a00dc3419d7593b4ddbd9ec7b15 /src/plugins/coreplugin/mainwindow.cpp | |
parent | 6998bf65911d848c190d7b00e6a73914f389718b (diff) |
Core: Never call QMainWindow::menuBar()
It replaces the global menu bar on macOS (that is a QMenuBar(nullptr))
with a window specific menu bar, resulting in an empty menu bar for Qt
Creator.
Amends a6e779606db6c8536c715470ddb73f10c7431e8b
Change-Id: Id6e2c0b9b2dfe4ade88af0f9a6d3b008fed790be
Reviewed-by: Cristian Adam <cristian.adam@qt.io>
Diffstat (limited to 'src/plugins/coreplugin/mainwindow.cpp')
-rw-r--r-- | src/plugins/coreplugin/mainwindow.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index de58123bdf..f4e3364109 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -526,6 +526,11 @@ void MainWindow::registerDefaultContainers() ac->touchBar()->setApplicationTouchBar(); } +static QMenuBar *globalMenuBar() +{ + return ActionManager::actionContainer(Constants::MENU_BAR)->menuBar(); +} + void MainWindow::registerDefaultActions() { ActionContainer *mfile = ActionManager::actionContainer(Constants::M_FILE); @@ -836,12 +841,12 @@ void MainWindow::registerDefaultActions() m_toggleRightSideBarButton->setEnabled(false); // Show Menubar Action - if (menuBar() && !menuBar()->isNativeMenuBar()) { + if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) { m_toggleMenubarAction = new QAction(Tr::tr("Show Menubar"), this); m_toggleMenubarAction->setCheckable(true); cmd = ActionManager::registerAction(m_toggleMenubarAction, Constants::TOGGLE_MENUBAR); cmd->setDefaultKeySequence(QKeySequence(Tr::tr("Ctrl+Alt+M"))); - connect(m_toggleMenubarAction, &QAction::toggled, this, [this, cmd](bool visible) { + connect(m_toggleMenubarAction, &QAction::toggled, this, [cmd](bool visible) { if (!visible) { CheckableMessageBox::information( Core::ICore::dialogParent(), @@ -851,7 +856,7 @@ void MainWindow::registerDefaultActions() + cmd->keySequence().toString(QKeySequence::NativeText), QString("ToogleMenuBarHint")); } - menuBar()->setVisible(visible); + globalMenuBar()->setVisible(visible); }); mview->addAction(cmd, Constants::G_VIEW_VIEWS); } @@ -1207,10 +1212,10 @@ void MainWindow::readSettings() updateModeSelectorStyleMenu(); } - if (menuBar() && !menuBar()->isNativeMenuBar()) { + if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) { const bool isVisible = settings->value(menubarVisibleKey, true).toBool(); - menuBar()->setVisible(isVisible); + globalMenuBar()->setVisible(isVisible); if (m_toggleMenubarAction) m_toggleMenubarAction->setChecked(isVisible); } @@ -1233,8 +1238,8 @@ void MainWindow::saveSettings() StyleHelper::requestedBaseColor(), QColor(StyleHelper::DEFAULT_BASE_COLOR)); - if (menuBar() && !menuBar()->isNativeMenuBar()) - settings->setValue(menubarVisibleKey, menuBar()->isVisible()); + if (globalMenuBar() && !globalMenuBar()->isNativeMenuBar()) + settings->setValue(menubarVisibleKey, globalMenuBar()->isVisible()); settings->endGroup(); |