diff options
author | Ulf Hermann <[email protected]> | 2016-09-07 18:14:04 +0200 |
---|---|---|
committer | Ulf Hermann <[email protected]> | 2016-10-04 08:29:05 +0000 |
commit | b604b8fc2b6c2dc6a1dc1e1a8b9c616aeb33464b (patch) | |
tree | c7f5631da510f2aa8246e2ffba7f3a84af3e8d36 /src | |
parent | 9cde684eea1242784fb5471f575c7385d5ff4661 (diff) |
FancyMainWindow: Add an option to hide the central widget
This way the debugger views can take up the whole window, which is
useful for the QML and perf profilers.
Change-Id: Ia4d236e8738a666d2316c05edaf4cf48ac46ffdb
Reviewed-by: hjk <[email protected]>
Reviewed-by: Eike Ziller <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/utils/fancymainwindow.cpp | 19 | ||||
-rw-r--r-- | src/libs/utils/fancymainwindow.h | 1 | ||||
-rw-r--r-- | src/plugins/debugger/debuggermainwindow.cpp | 11 |
3 files changed, 30 insertions, 1 deletions
diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index 697ff4fb337..79e95e8be92 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -43,6 +43,7 @@ #include <QToolButton> static const char AutoHideTitleBarsKey[] = "AutoHideTitleBars"; +static const char ShowCentralWidgetKey[] = "ShowCentralWidget"; static const char StateKey[] = "State"; static const int settingsVersion = 2; @@ -59,6 +60,7 @@ struct FancyMainWindowPrivate FancyMainWindow *q; bool m_handleDockVisibilityChanges; + QAction m_showCentralWidget; QAction m_menuSeparator1; QAction m_menuSeparator2; QAction m_resetLayoutAction; @@ -343,11 +345,15 @@ void DockWidget::handleToplevelChanged(bool floating) FancyMainWindowPrivate::FancyMainWindowPrivate(FancyMainWindow *parent) : q(parent), m_handleDockVisibilityChanges(true), + m_showCentralWidget(FancyMainWindow::tr("Central Widget"), 0), m_menuSeparator1(0), m_menuSeparator2(0), m_resetLayoutAction(FancyMainWindow::tr("Reset to Default Layout"), 0), m_autoHideTitleBars(FancyMainWindow::tr("Automatically Hide View Title Bars"), 0) { + m_showCentralWidget.setCheckable(true); + m_showCentralWidget.setChecked(true); + m_menuSeparator1.setSeparator(true); m_menuSeparator2.setSeparator(true); @@ -360,6 +366,10 @@ FancyMainWindowPrivate::FancyMainWindowPrivate(FancyMainWindow *parent) : titleBar->updateChildren(); } }); + + QObject::connect(&m_showCentralWidget, &QAction::toggled, q, [this](bool visible) { + q->centralWidget()->setVisible(visible); + }); } FancyMainWindow::FancyMainWindow(QWidget *parent) : @@ -476,6 +486,7 @@ QHash<QString, QVariant> FancyMainWindow::saveSettings() const settings.insert(QLatin1String(StateKey), saveState(settingsVersion)); settings.insert(QLatin1String(AutoHideTitleBarsKey), d->m_autoHideTitleBars.isChecked()); + settings.insert(ShowCentralWidgetKey, d->m_showCentralWidget.isChecked()); foreach (QDockWidget *dockWidget, dockWidgets()) { settings.insert(dockWidget->objectName(), dockWidget->property(dockWidgetActiveState)); @@ -490,6 +501,7 @@ void FancyMainWindow::restoreSettings(const QHash<QString, QVariant> &settings) restoreState(ba, settingsVersion); bool on = settings.value(QLatin1String(AutoHideTitleBarsKey), true).toBool(); d->m_autoHideTitleBars.setChecked(on); + d->m_showCentralWidget.setChecked(settings.value(ShowCentralWidgetKey, true).toBool()); foreach (QDockWidget *widget, dockWidgets()) { widget->setProperty(dockWidgetActiveState, settings.value(widget->objectName(), false)); @@ -524,6 +536,7 @@ void FancyMainWindow::addDockActionsToMenu(QMenu *menu) }); foreach (QAction *action, actions) menu->addAction(action); + menu->addAction(&d->m_showCentralWidget); menu->addAction(&d->m_menuSeparator1); menu->addAction(&d->m_autoHideTitleBars); menu->addAction(&d->m_menuSeparator2); @@ -550,10 +563,16 @@ QAction *FancyMainWindow::resetLayoutAction() const return &d->m_resetLayoutAction; } +QAction *FancyMainWindow::showCentralWidgetAction() const +{ + return &d->m_showCentralWidget; +} + void FancyMainWindow::setDockActionsVisible(bool v) { foreach (const QDockWidget *dockWidget, dockWidgets()) dockWidget->toggleViewAction()->setVisible(v); + d->m_showCentralWidget.setVisible(v); d->m_autoHideTitleBars.setVisible(v); d->m_menuSeparator1.setVisible(v); d->m_menuSeparator2.setVisible(v); diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h index 50e463b9c0f..728f83cd18e 100644 --- a/src/libs/utils/fancymainwindow.h +++ b/src/libs/utils/fancymainwindow.h @@ -62,6 +62,7 @@ public: QAction *autoHideTitleBarsAction() const; QAction *menuSeparator2() const; QAction *resetLayoutAction() const; + QAction *showCentralWidgetAction() const; void addDockActionsToMenu(QMenu *menu); bool autoHideTitleBars() const; diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 9ce84c07844..72e21923a64 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -184,7 +184,12 @@ void DebuggerMainWindow::finalizeSetup() Context debugcontext(Debugger::Constants::C_DEBUGMODE); ActionContainer *viewsMenu = ActionManager::actionContainer(Core::Constants::M_WINDOW_VIEWS); - Command *cmd = ActionManager::registerAction(menuSeparator1(), + Command *cmd = ActionManager::registerAction(showCentralWidgetAction(), + "Debugger.Views.ShowCentralWidget", debugcontext); + cmd->setAttribute(Command::CA_Hide); + cmd->setAttribute(Command::CA_UpdateText); + viewsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE); + cmd = ActionManager::registerAction(menuSeparator1(), "Debugger.Views.Separator1", debugcontext); cmd->setAttribute(Command::CA_Hide); viewsMenu->addAction(cmd, Core::Constants::G_DEFAULT_THREE); @@ -349,10 +354,14 @@ void DebuggerMainWindow::loadPerspectiveHelper(const QByteArray &perspectiveId, if (settings->value(QLatin1String("ToolSettingsSaved"), false).toBool()) restoreSettings(settings); settings->endGroup(); + } else { + // By default, show the central widget + showCentralWidgetAction()->setChecked(true); } QWidget *central = perspective->centralWidget(); m_centralWidgetStack->addWidget(central ? central : m_editorPlaceHolder); + showCentralWidgetAction()->setText(central ? central->windowTitle() : tr("Editor")); QTC_CHECK(m_toolbarForPerspectiveId.contains(m_currentPerspectiveId)); m_controlsStackWidget->setCurrentWidget(m_toolbarForPerspectiveId.value(m_currentPerspectiveId)); |