diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index 75e84b962054a6a97eacd7b670272b0082244c25..f92ad7eed79b95249c4287f7ac53efe1f70b97c5 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -67,16 +67,13 @@ QVariant DebuggerAction::value() const
 
 void DebuggerAction::setValue(const QVariant &value, bool doemit)
 {
-    if (value != m_value) {
-        m_value = value;
-        if (this->isCheckable())
-            this->setChecked(m_value.toBool());
-        if (doemit) {
-            emit valueChanged(m_value);
-            emit boolValueChanged(m_value.toBool());
-            emit stringValueChanged(m_value.toString());
-        }
-    }
+    if (value == m_value)
+        return;
+    m_value = value;
+    if (this->isCheckable())
+        this->setChecked(m_value.toBool());
+    if (doemit)
+        emit valueChanged(m_value);
 }
 
 QVariant DebuggerAction::defaultValue() const
diff --git a/src/plugins/debugger/debuggeractions.h b/src/plugins/debugger/debuggeractions.h
index 5d7e5354d239c332baab76fb0a0d002f0b2fc31b..9423974ba1b4c3d7196b1c544bb8a2bb07764c8e 100644
--- a/src/plugins/debugger/debuggeractions.h
+++ b/src/plugins/debugger/debuggeractions.h
@@ -84,8 +84,6 @@ public:
 
 signals:
     void valueChanged(const QVariant &newValue);
-    void boolValueChanged(bool newValue);
-    void stringValueChanged(const QString &newValue);
 
 private:
     Q_SLOT void uncheckableButtonClicked();
diff --git a/src/plugins/debugger/gdbengine.cpp b/src/plugins/debugger/gdbengine.cpp
index 4ef2b4c455509d1d7f2f1b286ddf6dc51fed20ed..fa4e933044416917b1704258648fa9cf139e78a6 100644
--- a/src/plugins/debugger/gdbengine.cpp
+++ b/src/plugins/debugger/gdbengine.cpp
@@ -210,10 +210,10 @@ void GdbEngine::initializeConnections()
         q, SLOT(showApplicationOutput(QString)),
         Qt::QueuedConnection);
 
-    connect(theDebuggerAction(UseDumpers), SIGNAL(boolValueChanged(bool)),
-        this, SLOT(setUseDumpers(bool)));
-    connect(theDebuggerAction(DebugDumpers), SIGNAL(boolValueChanged(bool)),
-        this, SLOT(setDebugDumpers(bool)));
+    connect(theDebuggerAction(UseDumpers), SIGNAL(valueChanged(QVariant)),
+        this, SLOT(setUseDumpers(QVariant)));
+    connect(theDebuggerAction(DebugDumpers), SIGNAL(valueChanged(QVariant)),
+        this, SLOT(setDebugDumpers(QVariant)));
     connect(theDebuggerAction(RecheckDumpers), SIGNAL(triggered()),
         this, SLOT(recheckCustomDumperAvailability()));
 
@@ -1834,9 +1834,9 @@ void GdbEngine::setTokenBarrier()
     m_oldestAcceptableToken = currentToken();
 }
 
-void GdbEngine::setDebugDumpers(bool on)
+void GdbEngine::setDebugDumpers(const QVariant &on)
 {
-    if (on) {
+    if (on.toBool()) {
         debugMessage("SWITCHING ON DUMPER DEBUGGING");
         sendCommand("set unwindonsignal off");
         q->breakByFunction("qDumpObjectData440");
@@ -2849,10 +2849,9 @@ static void setWatchDataSAddress(WatchData &data, const GdbMi &mi)
         data.saddr = mi.data();
 }
 
-void GdbEngine::setUseDumpers(bool on)
+void GdbEngine::setUseDumpers(const QVariant &on)
 {
     qDebug() << "SWITCHING ON/OFF DUMPER DEBUGGING:" << on;
-    Q_UNUSED(on);
     // FIXME: a bit too harsh, but otherwise the treeview sometimes look funny
     //m_expandedINames.clear();
     setTokenBarrier();
diff --git a/src/plugins/debugger/gdbengine.h b/src/plugins/debugger/gdbengine.h
index d35f0f0827174a8b059940436ebd175f9daa0dbf..49b823e957bed4e23888531822e99ed9d513c50f 100644
--- a/src/plugins/debugger/gdbengine.h
+++ b/src/plugins/debugger/gdbengine.h
@@ -130,8 +130,8 @@ private:
     void loadSymbols(const QString &moduleName);
     void loadAllSymbols();
 
-    Q_SLOT void setDebugDumpers(bool on);
-    Q_SLOT void setUseDumpers(bool on);
+    Q_SLOT void setDebugDumpers(const QVariant &on);
+    Q_SLOT void setUseDumpers(const QVariant &on);
 
     //
     // Own stuff