From 46ecaecc13d91de686fdbadb19194742bf6c6eb7 Mon Sep 17 00:00:00 2001 From: con <qtc-committer@nokia.com> Date: Thu, 17 Feb 2011 15:43:54 +0100 Subject: [PATCH] Remove dock widget handles from debugger tool bar. Otherwise it's possible to remove the tool bar without ever getting it back. --- src/libs/utils/fancymainwindow.cpp | 26 ++++++++++++++------- src/plugins/debugger/debuggermainwindow.cpp | 1 + 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp index dd17ae5f798..5c1cdeb6793 100644 --- a/src/libs/utils/fancymainwindow.cpp +++ b/src/libs/utils/fancymainwindow.cpp @@ -119,14 +119,16 @@ void FancyMainWindow::updateDockWidget(QDockWidget *dockWidget) const QDockWidget::DockWidgetFeatures features = (d->m_locked) ? QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable : QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetClosable | QDockWidget::DockWidgetFloatable; - QWidget *titleBarWidget = dockWidget->titleBarWidget(); - if (d->m_locked && !titleBarWidget && !dockWidget->isFloating()) - titleBarWidget = new QWidget(dockWidget); - else if ((!d->m_locked || dockWidget->isFloating()) && titleBarWidget) { - delete titleBarWidget; - titleBarWidget = 0; + if (dockWidget->property("managed_dockwidget").isNull()) { // for the debugger tool bar + QWidget *titleBarWidget = dockWidget->titleBarWidget(); + if (d->m_locked && !titleBarWidget && !dockWidget->isFloating()) + titleBarWidget = new QWidget(dockWidget); + else if ((!d->m_locked || dockWidget->isFloating()) && titleBarWidget) { + delete titleBarWidget; + titleBarWidget = 0; + } + dockWidget->setTitleBarWidget(titleBarWidget); } - dockWidget->setTitleBarWidget(titleBarWidget); dockWidget->setFeatures(features); } @@ -257,7 +259,15 @@ bool FancyMainWindow::isLocked() const QMenu *FancyMainWindow::createPopupMenu() { - QMenu *menu = QMainWindow::createPopupMenu(); + QMenu *menu = new QMenu(this);; + QList<QDockWidget *> dockwidgets = qFindChildren<QDockWidget *>(this); + for (int i = 0; i < dockwidgets.size(); ++i) { + QDockWidget *dockWidget = dockwidgets.at(i); + if (dockWidget->property("managed_dockwidget").isNull() + && dockWidget->parentWidget() == this) { + menu->addAction(dockwidgets.at(i)->toggleViewAction()); + } + } menu->addAction(&d->m_menuSeparator1); menu->addAction(&d->m_toggleLockedAction); menu->addAction(&d->m_menuSeparator2); diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index 4749d08d6e0..c37a756c991 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -476,6 +476,7 @@ QWidget *DebuggerMainWindow::createContents(IMode *mode) dock->setFeatures(QDockWidget::NoDockWidgetFeatures); dock->setAllowedAreas(Qt::BottomDockWidgetArea); dock->setTitleBarWidget(new QWidget(dock)); + dock->setProperty("managed_dockwidget", QLatin1String("true")); addDockWidget(Qt::BottomDockWidgetArea, dock); setToolBarDockWidget(dock); -- GitLab