From 67d327c7cc0b88ad3c16fa932e8809fbea14d48b Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 6 May 2009 10:21:50 +0200
Subject: [PATCH] debugger: make stack reload engine-agnostic

---
 src/plugins/debugger/cdb/cdbdebugengine.h |  1 +
 src/plugins/debugger/debuggermanager.cpp  | 13 +++++++++++--
 src/plugins/debugger/debuggermanager.h    |  1 +
 src/plugins/debugger/gdbengine.cpp        |  6 +-----
 src/plugins/debugger/idebuggerengine.h    |  1 +
 src/plugins/debugger/scriptengine.h       |  1 +
 6 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/plugins/debugger/cdb/cdbdebugengine.h b/src/plugins/debugger/cdb/cdbdebugengine.h
index 04185c05bb4..74547ab33ad 100644
--- a/src/plugins/debugger/cdb/cdbdebugengine.h
+++ b/src/plugins/debugger/cdb/cdbdebugengine.h
@@ -94,6 +94,7 @@ public:
 
     virtual void reloadRegisters();
     virtual void reloadSourceFiles();
+    virtual void reloadFullStack() {}
 
 protected:
     void timerEvent(QTimerEvent*);
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index b9879aaacac..23cc84059d2 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -206,6 +206,10 @@ void DebuggerManager::init()
     stackView->setModel(m_stackHandler->stackModel());
     connect(stackView, SIGNAL(frameActivated(int)),
         this, SLOT(activateFrame(int)));
+    connect(theDebuggerAction(ExpandStack), SIGNAL(triggered()),
+        this, SLOT(reloadFullStack()));
+    connect(theDebuggerAction(MaximalStackDepth), SIGNAL(triggered()),
+        this, SLOT(reloadFullStack()));
 
     // Threads
     m_threadsHandler = new ThreadsHandler;
@@ -273,9 +277,8 @@ void DebuggerManager::init()
     m_registerHandler = new RegisterHandler;
     registerView->setModel(m_registerHandler->model());
 
-    m_watchHandler = new WatchHandler;
-
     // Locals
+    m_watchHandler = new WatchHandler;
     QTreeView *localsView = qobject_cast<QTreeView *>(m_localsWindow);
     localsView->setModel(m_watchHandler->model());
 
@@ -1539,6 +1542,12 @@ DebuggerStartMode DebuggerManager::startMode() const
     return m_runControl->startMode();
 }
 
+void DebuggerManager::reloadFullStack()
+{
+    if (m_engine)
+        m_engine->reloadFullStack();
+}
+
 
 //////////////////////////////////////////////////////////////////////
 //
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 1d9e97d0368..38a0c5d7b74 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -279,6 +279,7 @@ private slots:
     void setStatus(int status);
     void clearStatusMessage();
     void attemptBreakpointSynchronization();
+    void reloadFullStack();
 
 private:
     //
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 272a9e076a6..f7d6071c7ee 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -158,17 +158,13 @@ void GdbEngine::initializeConnections()
         q, SLOT(showApplicationOutput(QString)),
         Qt::QueuedConnection);
 
+    // FIXME: These trigger even if the engine is not active
     connect(theDebuggerAction(UseDebuggingHelpers), SIGNAL(valueChanged(QVariant)),
         this, SLOT(setUseDebuggingHelpers(QVariant)));
     connect(theDebuggerAction(DebugDebuggingHelpers), SIGNAL(valueChanged(QVariant)),
         this, SLOT(setDebugDebuggingHelpers(QVariant)));
     connect(theDebuggerAction(RecheckDebuggingHelpers), SIGNAL(triggered()),
         this, SLOT(recheckDebuggingHelperAvailability()));
-
-    connect(theDebuggerAction(ExpandStack), SIGNAL(triggered()),
-        this, SLOT(reloadFullStack()));
-    connect(theDebuggerAction(MaximalStackDepth), SIGNAL(triggered()),
-        this, SLOT(reloadFullStack()));
 }
 
 void GdbEngine::initializeVariables()
diff --git a/src/plugins/debugger/idebuggerengine.h b/src/plugins/debugger/idebuggerengine.h
index cf700c20877..ececbe9aa7a 100644
--- a/src/plugins/debugger/idebuggerengine.h
+++ b/src/plugins/debugger/idebuggerengine.h
@@ -84,6 +84,7 @@ public:
     virtual void reloadRegisters() = 0;
 
     virtual void reloadSourceFiles() = 0;
+    virtual void reloadFullStack() = 0;
 };
 
 } // namespace Internal
diff --git a/src/plugins/debugger/scriptengine.h b/src/plugins/debugger/scriptengine.h
index 79568aca88f..1e116b39015 100644
--- a/src/plugins/debugger/scriptengine.h
+++ b/src/plugins/debugger/scriptengine.h
@@ -104,6 +104,7 @@ private:
     void reloadModules();
     void reloadRegisters() {}
     void reloadSourceFiles() {}
+    void reloadFullStack() {}
 
     bool supportsThreads() const { return true; }
     void maybeBreakNow(bool byFunction);
-- 
GitLab