From 41d400eb24d200fbece32b0c5fc8afd56046424d Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Mon, 22 Mar 2010 13:41:10 +0100
Subject: [PATCH] debugger: hide "watchers" part of Locals&Watchers if there
 aren't watchers

---
 src/plugins/debugger/debuggermanager.cpp | 10 ++++++++++
 src/plugins/debugger/debuggermanager.h   |  1 +
 src/plugins/debugger/watchhandler.cpp    |  1 +
 src/plugins/debugger/watchhandler.h      |  7 +++++--
 4 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index 399c65e0c60..7468b48287f 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -459,6 +459,8 @@ void DebuggerManager::init()
     watchersView->setModel(d->m_watchHandler->model(WatchersWatch));
     connect(theDebuggerAction(AssignValue), SIGNAL(triggered()),
         this, SLOT(assignValueInDebugger()), Qt::QueuedConnection);
+    connect(theDebuggerAction(RemoveWatchExpression), SIGNAL(triggered()),
+        this, SLOT(updateWatchersWindow()), Qt::QueuedConnection);
 
     // Log
     connect(this, SIGNAL(emitShowInput(int, QString)),
@@ -1802,6 +1804,8 @@ void DebuggerManager::setState(DebuggerState state, bool forced)
     theDebuggerAction(ExpandStack)->setEnabled(actionsEnabled);
     theDebuggerAction(ExecuteCommand)->setEnabled(d->m_state != DebuggerNotReady);
 
+    updateWatchersWindow();
+
     d->m_plugin->handleStateChanged(d->m_state);
     const bool notbusy = state == InferiorStopped
         || state == DebuggerNotReady
@@ -1925,6 +1929,12 @@ void DebuggerManager::fontSettingsChanged(const TextEditor::FontSettings &settin
     changeFontSize(d->m_threadsWindow, size);
 }
 
+void DebuggerManager::updateWatchersWindow()
+{
+    d->m_watchersWindow->setVisible(
+        d->m_watchHandler->model(WatchersWatch)->rowCount(QModelIndex()) > 0);
+}
+
 //////////////////////////////////////////////////////////////////////
 //
 // AbstractDebuggerEngine
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index b968f4c3933..87e23361ba9 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -259,6 +259,7 @@ public slots: // FIXME
     void showDebuggerOutput(const QString &msg)
         { showDebuggerOutput(LogDebug, msg); }
     void ensureLogVisible();
+    void updateWatchersWindow();
 
 //private slots:  // FIXME
     void showDebuggerOutput(int channel, const QString &msg);
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 66794218e01..ff7eab54fcb 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -1201,6 +1201,7 @@ void WatchHandler::endCycle()
     m_locals->endCycle();
     m_watchers->endCycle();
     m_tooltips->endCycle();
+    m_manager->updateWatchersWindow();
 }
 
 void WatchHandler::cleanup()
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 37a6d174fab..d3e4a3df43e 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -174,12 +174,15 @@ private:
     explicit WatchModel(WatchHandler *handler, WatchType type);
     virtual ~WatchModel();
 
+public:
+    int rowCount(const QModelIndex &idx) const;
+    int columnCount(const QModelIndex &idx) const;
+
+private:
     QVariant data(const QModelIndex &index, int role) const;
     bool setData(const QModelIndex &index, const QVariant &value, int role);
     QModelIndex index(int, int, const QModelIndex &idx) const;
     QModelIndex parent(const QModelIndex &idx) const;
-    int rowCount(const QModelIndex &idx) const;
-    int columnCount(const QModelIndex &idx) const;
     bool hasChildren(const QModelIndex &idx) const;
     Qt::ItemFlags flags(const QModelIndex &idx) const;
     QVariant headerData(int section, Qt::Orientation orientation,
-- 
GitLab