diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 9132db0fc4d7816a73c45bc6abc72a827447c47a..7a563d37f27c3227c83c6002c0950f5a3d968af1 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -145,6 +145,7 @@ QAction *QtcSettingsItem::updatedAction(const QString &text0)
         }
     }
     m_action->setEnabled(enabled);
+    m_action->setData(text0);
     m_action->setText(text);
     return m_action;
 }
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 917f84376cca3b9e079b1b3ee7cc452f397ababe..f6cb80deb5052fbe95ca2096db05935ef13c4f45 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -3533,7 +3533,7 @@ void GdbEngine::updateWatchModel2()
 
 void GdbEngine::handleQueryDataDumper(const GdbResultRecord &record)
 {
-    qDebug() << "DATA DUMPER TRIAL:" << record.toString();
+    //qDebug() << "DATA DUMPER TRIAL:" << record.toString();
     GdbMi output = record.data.findChild("consolestreamoutput");
     QByteArray out = output.data();
     out = out.mid(out.indexOf('"') + 2); // + 1 is success marker
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index bfd89262daca24db0750bf8e193ecac8f733df20..7c58e2ee7a7633e8c0870a6eb9fb61a01078786a 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -368,11 +368,11 @@ WatchHandler::WatchHandler()
     m_incompleteSet.clear();
     m_displaySet = m_completeSet;
 
-    connect(theDebuggerSetting(WatchExpression), SIGNAL(stringValueChanged(QString)),
-        this, SLOT(watchExpression(QString)));
+    connect(theDebuggerSetting(WatchExpression)->action(),
+        SIGNAL(triggered()), this, SLOT(watchExpression()));
 
-    connect(theDebuggerSetting(RemoveWatchExpression), SIGNAL(stringValueChanged(QString)),
-        this, SLOT(removeWatchExpression(QString)));
+    connect(theDebuggerSetting(RemoveWatchExpression)->action(),
+        SIGNAL(triggered()), this, SLOT(removeWatchExpression()));
 }
 
 bool WatchHandler::setData(const QModelIndex &idx,
@@ -884,6 +884,12 @@ void WatchHandler::insertData(const WatchData &data)
     //MODEL_DEBUG("INSERT RESULT" << toString());
 }
 
+void WatchHandler::watchExpression()
+{
+    if (QAction *action = qobject_cast<QAction *>(sender()))
+        watchExpression(action->data().toString());
+}
+
 void WatchHandler::watchExpression(const QString &exp)
 {
     // FIXME: 'exp' can contain illegal characters
@@ -969,6 +975,12 @@ void WatchHandler::showEditValue(const WatchData &data)
         w->show();
 }
 
+void WatchHandler::removeWatchExpression()
+{
+    if (QAction *action = qobject_cast<QAction *>(sender()))
+        removeWatchExpression(action->data().toString());
+}
+
 void WatchHandler::removeWatchExpression(const QString &exp)
 {
     MODEL_DEBUG("REMOVE WATCH: " << exp);
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index d94418a4311663a2a9b9221ef1eea9ff5e7d4218..04bbfa6c3ff93c33e9f570471c9da75a2737f3d7 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -160,7 +160,9 @@ public:
     
 //public slots:
     void cleanup();
+    Q_SLOT void watchExpression(); // data in action->data().toString()
     Q_SLOT void watchExpression(const QString &exp);
+    Q_SLOT void removeWatchExpression();
     Q_SLOT void removeWatchExpression(const QString &exp);
     void reinitializeWatchers();