From fde3ced40cd2aad660de16cc4d07fb3df85125b9 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Fri, 3 Dec 2010 15:55:17 +0100
Subject: [PATCH] debugger: cleanup dockwidget handling

---
 src/plugins/debugger/debuggermainwindow.cpp | 78 ++++++---------------
 src/plugins/debugger/debuggermainwindow.h   | 13 +---
 src/plugins/debugger/debuggerplugin.cpp     | 69 +++++++-----------
 3 files changed, 49 insertions(+), 111 deletions(-)

diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp
index 49cadf21653..3c25b60498a 100644
--- a/src/plugins/debugger/debuggermainwindow.cpp
+++ b/src/plugins/debugger/debuggermainwindow.cpp
@@ -407,41 +407,6 @@ void DebuggerMainWindow::setToolbar(const DebuggerLanguage &language, QWidget *w
     d->m_toolbarStack->addWidget(widget);
 }
 
-QDockWidget *DebuggerMainWindow::breakWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_BREAK);
-}
-
-QDockWidget *DebuggerMainWindow::stackWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_STACK);
-}
-
-QDockWidget *DebuggerMainWindow::watchWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_WATCHERS);
-}
-
-QDockWidget *DebuggerMainWindow::outputWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_OUTPUT);
-}
-
-QDockWidget *DebuggerMainWindow::snapshotsWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_SNAPSHOTS);
-}
-
-QDockWidget *DebuggerMainWindow::threadsWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_THREADS);
-}
-
-QDockWidget *DebuggerMainWindow::qmlInspectorWindow() const
-{
-    return dockWidget(Constants::DOCKWIDGET_QML_INSPECTOR);
-}
-
 QDockWidget *DebuggerMainWindow::dockWidget(const QString &objectName) const
 {
     foreach (QDockWidget *dockWidget, d->m_dockWidgets) {
@@ -461,13 +426,13 @@ bool DebuggerMainWindow::isDockVisible(const QString &objectName) const
     Keep track of dock widgets so they can be shown/hidden for different languages
 */
 QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &language,
-    QWidget *widget, const QString &objectName, Qt::DockWidgetArea area)
+    QWidget *widget)
 {
 //    qDebug() << "CREATE DOCK" << widget->objectName() << "LANGUAGE ID" << language
 //             << "VISIBLE BY DEFAULT" << ((d->m_activeDebugLanguages & language) ? "true" : "false");
     QDockWidget *dockWidget = addDockForWidget(widget);
-    dockWidget->setObjectName(objectName);
-    addDockWidget(area, dockWidget);
+    dockWidget->setObjectName(widget->objectName());
+    addDockWidget(Qt::TopDockWidgetArea, dockWidget);
     d->m_dockWidgets.append(dockWidget);
 
     if (!(d->m_activeDebugLanguages & language))
@@ -478,7 +443,7 @@ QDockWidget *DebuggerMainWindow::createDockWidget(const DebuggerLanguage &langua
     ActionManager *am = ICore::instance()->actionManager();
     QAction *toggleViewAction = dockWidget->toggleViewAction();
     Command *cmd = am->registerAction(toggleViewAction,
-             QString("Debugger." + objectName), globalContext);
+             QString("Debugger." + widget->objectName()), globalContext);
     cmd->setAttribute(Command::CA_Hide);
     d->m_viewsMenu->addAction(cmd);
 
@@ -670,16 +635,11 @@ bool DebuggerMainWindowPrivate::isQmlActive() const
 QMenu *DebuggerMainWindow::createPopupMenu()
 {
     QMenu *menu = 0;
-
-    const QList<QDockWidget* > dockwidgets = d->m_dockWidgets;
-
-    if (!dockwidgets.isEmpty()) {
+    if (!d->m_dockWidgets.isEmpty()) {
         menu = FancyMainWindow::createPopupMenu();
-
-        foreach (QDockWidget *dockWidget, dockwidgets) {
+        foreach (QDockWidget *dockWidget, d->m_dockWidgets)
             if (dockWidget->parentWidget() == this)
                 menu->addAction(dockWidget->toggleViewAction());
-        }
         menu->addSeparator();
     }
     return menu;
@@ -696,12 +656,18 @@ void DebuggerMainWindowPrivate::setSimpleDockWidgetArrangement()
     }
 
     // FIXME: Temporary.
-    QDockWidget *m_breakDock = q->breakWindow();
-    QDockWidget *m_stackDock = q->stackWindow();
-    QDockWidget *m_watchDock = q->watchWindow();
-    QDockWidget *m_snapshotsDock = q->snapshotsWindow();
-    QDockWidget *m_threadsDock = q->threadsWindow();
-    QDockWidget *m_outputDock = q->outputWindow();
+    QDockWidget *m_breakDock =
+        q->dockWidget(Constants::DOCKWIDGET_BREAK);
+    QDockWidget *m_stackDock =
+        q->dockWidget(Constants::DOCKWIDGET_STACK);
+    QDockWidget *m_watchDock =
+        q->dockWidget(Constants::DOCKWIDGET_WATCHERS);
+    QDockWidget *m_snapshotsDock =
+        q->dockWidget(Constants::DOCKWIDGET_SNAPSHOTS);
+    QDockWidget *m_threadsDock =
+        q->dockWidget(Constants::DOCKWIDGET_THREADS);
+    QDockWidget *m_outputDock =
+        q->dockWidget(Constants::DOCKWIDGET_OUTPUT);
     QDockWidget *m_qmlInspectorDock =
         q->dockWidget(Constants::DOCKWIDGET_QML_INSPECTOR);
     QDockWidget *m_scriptConsoleDock =
@@ -763,8 +729,8 @@ void DebuggerMainWindowPrivate::setSimpleDockWidgetArrangement()
             m_breakDock->show();
             m_watchDock->show();
             m_scriptConsoleDock->show();
-            if (q->qmlInspectorWindow())
-                q->qmlInspectorWindow()->show();
+            if (m_qmlInspectorDock)
+                m_qmlInspectorDock->show();
         }
         q->splitDockWidget(q->toolBarDockWidget(), m_stackDock, Qt::Vertical);
         q->splitDockWidget(m_stackDock, m_watchDock, Qt::Horizontal);
@@ -775,8 +741,8 @@ void DebuggerMainWindowPrivate::setSimpleDockWidgetArrangement()
         q->tabifyDockWidget(m_watchDock, m_sourceFilesDock);
         q->tabifyDockWidget(m_watchDock, m_snapshotsDock);
         q->tabifyDockWidget(m_watchDock, m_scriptConsoleDock);
-        if (q->qmlInspectorWindow())
-            q->tabifyDockWidget(m_watchDock, q->qmlInspectorWindow());
+        if (m_qmlInspectorDock)
+            q->tabifyDockWidget(m_watchDock, m_qmlInspectorDock);
     }
 
     q->setTrackingEnabled(true);
diff --git a/src/plugins/debugger/debuggermainwindow.h b/src/plugins/debugger/debuggermainwindow.h
index 78ccb30ba93..4a7eaca3e65 100644
--- a/src/plugins/debugger/debuggermainwindow.h
+++ b/src/plugins/debugger/debuggermainwindow.h
@@ -75,22 +75,11 @@ public:
 
 
     void onModeChanged(Core::IMode *mode);
-
-    // Most common debugger windows.
-    QDockWidget *breakWindow() const;
-    QDockWidget *stackWindow() const;
-    QDockWidget *watchWindow() const;
-    QDockWidget *snapshotsWindow() const;
-    QDockWidget *threadsWindow() const;
-    QDockWidget *outputWindow() const;
-    QDockWidget *qmlInspectorWindow() const;
-
     QDockWidget *dockWidget(const QString &objectName) const;
     bool isDockVisible(const QString &objectName) const;
 
     // Dockwidgets are registered to the main window.
-    QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget,
-        const QString &objectName, Qt::DockWidgetArea area = Qt::TopDockWidgetArea);
+    QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget);
 
     QWidget *createContents(Core::IMode *mode);
     QMenu *createPopupMenu();
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 96466a5237e..8ca89582816 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1036,7 +1036,7 @@ public slots:
         { return mainWindow()->isDockVisible(objectName); }
 
     bool hasSnapshots() const { return m_snapshotHandler->size(); }
-    void createNewDock(QWidget *widget, const QString &objectName);
+    void createNewDock(QWidget *widget);
 
     void runControlStarted(DebuggerRunControl *runControl);
     void runControlFinished(DebuggerRunControl *runControl);
@@ -2569,12 +2569,11 @@ void DebuggerPluginPrivate::showQtDumperLibraryWarning(const QString &details)
     }
 }
 
-void DebuggerPluginPrivate::createNewDock(QWidget *widget, const QString &name)
+void DebuggerPluginPrivate::createNewDock(QWidget *widget)
 {
     QDockWidget *dockWidget =
-        m_mainWindow->createDockWidget(CppLanguage, widget, name);
+        m_mainWindow->createDockWidget(CppLanguage, widget);
     dockWidget->setWindowTitle(widget->windowTitle());
-    dockWidget->setObjectName(widget->windowTitle());
     dockWidget->setFeatures(QDockWidget::DockWidgetClosable);
     //dockWidget->setWidget(widget);
     //mainWindow()->addDockWidget(Qt::TopDockWidgetArea, dockWidget);
@@ -2698,24 +2697,23 @@ void DebuggerPluginPrivate::extensionsInitialized()
 
     m_breakHandler = new BreakHandler;
     m_breakWindow = new BreakWindow;
-    m_breakWindow->setObjectName(QLatin1String("CppDebugBreakpoints"));
+    m_breakWindow->setObjectName(DOCKWIDGET_BREAK);
     m_breakWindow->setModel(m_breakHandler->model());
 
     //m_consoleWindow = new ConsoleWindow;
     //m_consoleWindow->setObjectName(QLatin1String("CppDebugConsole"));
     m_modulesWindow = new ModulesWindow;
-    m_modulesWindow->setObjectName(QLatin1String("CppDebugModules"));
+    m_modulesWindow->setObjectName(DOCKWIDGET_MODULES);
     m_logWindow = new LogWindow;
-    m_logWindow->setObjectName(QLatin1String("CppDebugOutput"));
-
+    m_logWindow->setObjectName(DOCKWIDGET_OUTPUT);
     m_registerWindow = new RegisterWindow;
-    m_registerWindow->setObjectName(QLatin1String("CppDebugRegisters"));
+    m_registerWindow->setObjectName(DOCKWIDGET_REGISTER);
     m_stackWindow = new StackWindow;
-    m_stackWindow->setObjectName(QLatin1String("CppDebugStack"));
+    m_stackWindow->setObjectName(DOCKWIDGET_STACK);
     m_sourceFilesWindow = new SourceFilesWindow;
-    m_sourceFilesWindow->setObjectName(QLatin1String("CppDebugSources"));
+    m_sourceFilesWindow->setObjectName(DOCKWIDGET_SOURCE_FILES);
     m_threadsWindow = new ThreadsWindow;
-    m_threadsWindow->setObjectName(QLatin1String("CppDebugThreads"));
+    m_threadsWindow->setObjectName(DOCKWIDGET_THREADS);
     m_returnWindow = new WatchWindow(WatchWindow::ReturnType);
     m_returnWindow->setObjectName(QLatin1String("CppDebugReturn"));
     m_localsWindow = new WatchWindow(WatchWindow::LocalsType);
@@ -2724,14 +2722,14 @@ void DebuggerPluginPrivate::extensionsInitialized()
     m_watchersWindow->setObjectName(QLatin1String("CppDebugWatchers"));
     m_scriptConsoleWindow = new ScriptConsole;
     m_scriptConsoleWindow->setWindowTitle(tr("QML Script Console"));
-    m_scriptConsoleWindow->setObjectName(QLatin1String("QMLScriptConsole"));
+    m_scriptConsoleWindow->setObjectName(DOCKWIDGET_QML_SCRIPTCONSOLE);
     connect(m_scriptConsoleWindow, SIGNAL(expressionEntered(QString)),
         SLOT(scriptExpressionEntered(QString)));
 
     // Snapshot
     m_snapshotHandler = new SnapshotHandler;
     m_snapshotWindow = new SnapshotWindow(m_snapshotHandler);
-    m_snapshotWindow->setObjectName(QLatin1String("CppDebugSnapshots"));
+    m_snapshotWindow->setObjectName(DOCKWIDGET_SNAPSHOTS);
     m_snapshotWindow->setModel(m_snapshotHandler->model());
 
     // Watchers
@@ -2829,41 +2827,28 @@ void DebuggerPluginPrivate::extensionsInitialized()
     readSettings();
 
     // Dock widgets
-    m_mainWindow->createDockWidget(CppLanguage, m_breakWindow, _(DOCKWIDGET_BREAK));
-
-    //m_mainWindow->createDockWidget(CppLanguage, m_consoleWindow,
-    // _(DOCKWIDGET_OUTPUT), Qt::TopDockWidgetArea);
-
     QDockWidget *dock = 0;
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_modulesWindow,
-         _(DOCKWIDGET_MODULES), Qt::TopDockWidgetArea);
+    dock = m_mainWindow->createDockWidget(CppLanguage, m_modulesWindow);
     connect(dock->toggleViewAction(), SIGNAL(toggled(bool)),
         SLOT(modulesDockToggled(bool)), Qt::QueuedConnection);
 
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_registerWindow,
-         _(DOCKWIDGET_REGISTER), Qt::TopDockWidgetArea);
+    dock = m_mainWindow->createDockWidget(CppLanguage, m_registerWindow);
     connect(dock->toggleViewAction(), SIGNAL(toggled(bool)),
         SLOT(registerDockToggled(bool)), Qt::QueuedConnection);
 
-    dock = m_mainWindow->createDockWidget(AnyLanguage, m_logWindow,
-        _(DOCKWIDGET_OUTPUT), Qt::TopDockWidgetArea);
-
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_snapshotWindow,
-        _(DOCKWIDGET_SNAPSHOTS));
-
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_stackWindow,
-        _(DOCKWIDGET_STACK));
-
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_sourceFilesWindow,
-        _(DOCKWIDGET_SOURCE_FILES), Qt::TopDockWidgetArea);
+    dock = m_mainWindow->createDockWidget(CppLanguage, m_sourceFilesWindow);
     connect(dock->toggleViewAction(), SIGNAL(toggled(bool)),
         SLOT(sourceFilesDockToggled(bool)), Qt::QueuedConnection);
 
-    dock = m_mainWindow->createDockWidget(CppLanguage, m_threadsWindow,
-        _(DOCKWIDGET_THREADS));
+    m_mainWindow->createDockWidget(CppLanguage, m_breakWindow);
+    //m_mainWindow->createDockWidget(CppLanguage, m_consoleWindow);
+    m_mainWindow->createDockWidget(AnyLanguage, m_logWindow);
+    m_mainWindow->createDockWidget(CppLanguage, m_snapshotWindow);
+    m_mainWindow->createDockWidget(CppLanguage, m_stackWindow);
+    m_mainWindow->createDockWidget(CppLanguage, m_threadsWindow);
 
     QSplitter *localsAndWatchers = new Core::MiniSplitter(Qt::Vertical);
-    localsAndWatchers->setObjectName(QLatin1String("CppDebugLocalsAndWatchers"));
+    localsAndWatchers->setObjectName(DOCKWIDGET_WATCHERS);
     localsAndWatchers->setWindowTitle(m_localsWindow->windowTitle());
     localsAndWatchers->addWidget(m_localsWindow);
     localsAndWatchers->addWidget(m_returnWindow);
@@ -2872,11 +2857,8 @@ void DebuggerPluginPrivate::extensionsInitialized()
     localsAndWatchers->setStretchFactor(1, 1);
     localsAndWatchers->setStretchFactor(2, 1);
 
-    dock = m_mainWindow->createDockWidget(CppLanguage, localsAndWatchers,
-        _(DOCKWIDGET_WATCHERS));
-
-    dock = m_mainWindow->createDockWidget(QmlLanguage, m_scriptConsoleWindow,
-        _(DOCKWIDGET_QML_SCRIPTCONSOLE));
+    m_mainWindow->createDockWidget(CppLanguage, localsAndWatchers);
+    m_mainWindow->createDockWidget(QmlLanguage, m_scriptConsoleWindow);
 
     // Register factory of DebuggerRunControl.
     m_debuggerRunControlFactory = new DebuggerRunControlFactory
@@ -3263,6 +3245,7 @@ void DebuggerPluginPrivate::showModuleSymbols(const QString &moduleName,
     w->setRootIsDecorated(false);
     w->setAlternatingRowColors(true);
     w->setSortingEnabled(true);
+    w->setObjectName("Symbols." + moduleName);
     QStringList header;
     header.append(tr("Symbol"));
     header.append(tr("Address"));
@@ -3280,7 +3263,7 @@ void DebuggerPluginPrivate::showModuleSymbols(const QString &moduleName,
         it->setData(4, Qt::DisplayRole, s.demangled);
         w->addTopLevelItem(it);
     }
-    createNewDock(w, w->windowTitle());
+    createNewDock(w);
 }
 
 } // namespace Internal
-- 
GitLab