diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h index 2606628d266..a259717ba89 100644 --- a/src/plugins/coreplugin/coreconstants.h +++ b/src/plugins/coreplugin/coreconstants.h @@ -86,6 +86,7 @@ const char OPTIONS[] = "QtCreator.Options"; const char LOGGER[] = "QtCreator.Logger"; const char TOGGLE_LEFT_SIDEBAR[] = "QtCreator.ToggleLeftSidebar"; const char TOGGLE_RIGHT_SIDEBAR[] = "QtCreator.ToggleRightSidebar"; +const char TOGGLE_MENUBAR[] = "QtCreator.ToggleMenubar"; const char CYCLE_MODE_SELECTOR_STYLE[] = "QtCreator.CycleModeSelectorStyle"; const char TOGGLE_FULLSCREEN[] = "QtCreator.ToggleFullScreen"; diff --git a/src/plugins/coreplugin/mainwindow.cpp b/src/plugins/coreplugin/mainwindow.cpp index b4f55b54145..de58123bdf8 100644 --- a/src/plugins/coreplugin/mainwindow.cpp +++ b/src/plugins/coreplugin/mainwindow.cpp @@ -60,6 +60,7 @@ #include #include #include +#include #include #include @@ -106,6 +107,7 @@ static const char colorKey[] = "Color"; static const char windowGeometryKey[] = "WindowGeometry"; static const char windowStateKey[] = "WindowState"; static const char modeSelectorLayoutKey[] = "ModeSelectorLayout"; +static const char menubarVisibleKey[] = "MenubarVisible"; static const bool askBeforeExitDefault = false; @@ -833,6 +835,27 @@ void MainWindow::registerDefaultActions() mview->addAction(cmd, Constants::G_VIEW_VIEWS); m_toggleRightSideBarButton->setEnabled(false); + // Show Menubar Action + if (menuBar() && !menuBar()->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) { + if (!visible) { + CheckableMessageBox::information( + Core::ICore::dialogParent(), + Tr::tr("Hide Menubar"), + Tr::tr( + "This will hide the menu bar completely. You can show it again by typing ") + + cmd->keySequence().toString(QKeySequence::NativeText), + QString("ToogleMenuBarHint")); + } + menuBar()->setVisible(visible); + }); + mview->addAction(cmd, Constants::G_VIEW_VIEWS); + } + registerModeSelectorStyleActions(); // Window->Views @@ -1184,6 +1207,14 @@ void MainWindow::readSettings() updateModeSelectorStyleMenu(); } + if (menuBar() && !menuBar()->isNativeMenuBar()) { + const bool isVisible = settings->value(menubarVisibleKey, true).toBool(); + + menuBar()->setVisible(isVisible); + if (m_toggleMenubarAction) + m_toggleMenubarAction->setChecked(isVisible); + } + settings->endGroup(); EditorManagerPrivate::readSettings(); @@ -1202,6 +1233,9 @@ void MainWindow::saveSettings() StyleHelper::requestedBaseColor(), QColor(StyleHelper::DEFAULT_BASE_COLOR)); + if (menuBar() && !menuBar()->isNativeMenuBar()) + settings->setValue(menubarVisibleKey, menuBar()->isVisible()); + settings->endGroup(); DocumentManager::saveSettings(); diff --git a/src/plugins/coreplugin/mainwindow.h b/src/plugins/coreplugin/mainwindow.h index fc15543d27a..325176a5825 100644 --- a/src/plugins/coreplugin/mainwindow.h +++ b/src/plugins/coreplugin/mainwindow.h @@ -174,6 +174,7 @@ private: QAction *m_loggerAction = nullptr; QAction *m_toggleLeftSideBarAction = nullptr; QAction *m_toggleRightSideBarAction = nullptr; + QAction *m_toggleMenubarAction = nullptr; QAction *m_cycleModeSelectorStyleAction = nullptr; QAction *m_setModeSelectorStyleIconsAndTextAction = nullptr; QAction *m_setModeSelectorStyleHiddenAction = nullptr;