diff --git a/src/plugins/debugger/breakhandler.cpp b/src/plugins/debugger/breakhandler.cpp
index f1d1a0140a122cd8a2b6ca841cf9a55449b4979e..d6822717628b2b52e3d6a5b56b20519032a244d8 100644
--- a/src/plugins/debugger/breakhandler.cpp
+++ b/src/plugins/debugger/breakhandler.cpp
@@ -707,11 +707,6 @@ void BreakHandler::toggleBreakpointEnabled(BreakpointData *data)
     updateMarkers();
 }
 
-void BreakHandler::toggleBreakpointEnabled(const QString &fileName, int lineNumber)
-{
-    toggleBreakpointEnabled(at(findBreakpoint(fileName, lineNumber)));
-}
-
 void BreakHandler::appendBreakpoint(BreakpointData *data)
 {
     append(data);
diff --git a/src/plugins/debugger/breakhandler.h b/src/plugins/debugger/breakhandler.h
index 638ec497c9ecf1681a1ced5f600ab2d093eedb0f..35904fbaf67f786a507126652dbbd46e4f14c3f8 100644
--- a/src/plugins/debugger/breakhandler.h
+++ b/src/plugins/debugger/breakhandler.h
@@ -159,7 +159,6 @@ public:
 public slots:
     void appendBreakpoint(BreakpointData *data);
     void toggleBreakpointEnabled(BreakpointData *data);
-    void toggleBreakpointEnabled(const QString &fileName, int lineNumber);
     void breakByFunction(const QString &functionName);
     void activateBreakpoint(int index);
     void removeBreakpoint(int index);
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index dea5e4f482b07ef13c730b1c5e21548a9fc34851..08c7fd062877170226adeb5170afc9d9f9c8ec8d 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -566,8 +566,6 @@ void DebuggerManager::init()
         this, SLOT(addToWatchWindow()));
     connect(d->m_actions.watchAction2, SIGNAL(triggered()),
         this, SLOT(addToWatchWindow()));
-    connect(d->m_actions.breakAction, SIGNAL(triggered()),
-        this, SLOT(toggleBreakpoint()));
     connect(d->m_actions.snapshotAction, SIGNAL(triggered()),
         this, SLOT(makeSnapshot()));
 
@@ -889,16 +887,6 @@ BreakpointData *DebuggerManager::findBreakpoint(const QString &fileName, int lin
     return index == -1 ? 0 : d->m_breakHandler->at(index);
 }
 
-void DebuggerManager::toggleBreakpoint()
-{
-    ITextEditor *textEditor = d->m_plugin->currentTextEditor();
-    QTC_ASSERT(textEditor, return);
-    QString fileName = textEditor->file()->fileName();
-    int lineNumber = textEditor->currentLine();
-    if (lineNumber >= 0)
-        toggleBreakpoint(fileName, lineNumber);
-}
-
 // FIXME: move further up the plugin where there's more specific context
 // information available.
 static BreakpointData *createBreakpointByFileAndLine
@@ -946,23 +934,6 @@ void DebuggerManager::toggleBreakpoint(const QString &fileName, int lineNumber)
     attemptBreakpointSynchronization();
 }
 
-void DebuggerManager::toggleBreakpointEnabled(const QString &fileName, int lineNumber)
-{
-    STATE_DEBUG(fileName << lineNumber);
-    QTC_ASSERT(d->m_breakHandler, return);
-    if (state() != InferiorRunning
-         && state() != InferiorStopped
-         && state() != DebuggerNotReady) {
-        showStatusMessage(tr("Changing breakpoint state requires either a "
-            "fully running or fully stopped application."));
-        return;
-    }
-
-    d->m_breakHandler->toggleBreakpointEnabled(fileName, lineNumber);
-
-    attemptBreakpointSynchronization();
-}
-
 void DebuggerManager::attemptBreakpointSynchronization()
 {
     if (d->m_engine)
diff --git a/src/plugins/debugger/debuggermanager.h b/src/plugins/debugger/debuggermanager.h
index 955ca1aa4b204c08034ea05ccffbfc110dbb34d9..6f3fbfece8977238eeb4a7b96502ebe05882c79c 100644
--- a/src/plugins/debugger/debuggermanager.h
+++ b/src/plugins/debugger/debuggermanager.h
@@ -216,7 +216,6 @@ public slots:
     void executeJumpToLine();
     void executeRunToLine();
     void executeRunToFunction();
-    void toggleBreakpoint();
     void breakByFunction(const QString &functionName);
     void breakByFunctionMain();
     void activateFrame(int index);
@@ -341,7 +340,6 @@ private:
     void shutdown();
 
     void toggleBreakpoint(const QString &fileName, int lineNumber);
-    void toggleBreakpointEnabled(const QString &fileName, int lineNumber);
     Internal::BreakpointData *findBreakpoint(const QString &fileName, int lineNumber);
     void setToolTipExpression(const QPoint &mousePos,
         TextEditor::ITextEditor *editor, int cursorPos);
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 2eb7529fd500b011e612c4a3218b0c9fb22b9068..c455d4f89cfefea5b075125352dbf66acc73887b 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -890,6 +890,8 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess
         Constants::TOGGLE_BREAK, cppeditorcontext);
     cmd->setDefaultKeySequence(QKeySequence(Constants::TOGGLE_BREAK_KEY));
     m_uiSwitcher->addMenuAction(cmd, Constants::LANG_CPP);
+    connect(actions.breakAction, SIGNAL(triggered()),
+        this, SLOT(toggleBreakpoint()));
 
     //mcppcontext->addAction(cmd);
 
@@ -1181,11 +1183,20 @@ void DebuggerPlugin::breakpointSetRemoveMarginActionTriggered()
 
 void DebuggerPlugin::breakpointEnableDisableMarginActionTriggered()
 {
-    if (QAction *act = qobject_cast<QAction *>(sender())) {
-        QString str = act->data().toString();
-        int pos = str.lastIndexOf(':');
-        m_manager->toggleBreakpointEnabled(str.left(pos), str.mid(pos + 1).toInt());
-    }
+    QAction *act = qobject_cast<QAction *>(sender());
+    QTC_ASSERT(act, return);
+    BreakHandler *handler = m_manager->breakHandler();
+    QTC_ASSERT(handler, return);
+
+    QString str = act->data().toString();
+    int pos = str.lastIndexOf(':');
+    QString fileName = str.left(pos);
+    int lineNumber = str.mid(pos + 1).toInt();
+
+    BreakpointData *data = handler->at(handler->findBreakpoint(fileName, lineNumber));
+    handler->toggleBreakpointEnabled(data);
+
+    m_manager->attemptBreakpointSynchronization();
 }
 
 void DebuggerPlugin::requestMark(ITextEditor *editor, int lineNumber)
@@ -1487,6 +1498,16 @@ void DebuggerPlugin::enableReverseDebuggingTriggered(const QVariant &value)
         m_manager->debuggerManagerActions().reverseDirectionAction->setChecked(false);
 }
 
+void DebuggerPlugin::toggleBreakpoint()
+{
+    ITextEditor *textEditor = currentTextEditor();
+    QTC_ASSERT(textEditor, return);
+    QString fileName = textEditor->file()->fileName();
+    int lineNumber = textEditor->currentLine();
+    if (lineNumber >= 0)
+        m_manager->toggleBreakpoint(fileName, lineNumber);
+}
+
 #include "debuggerplugin.moc"
 
 Q_EXPORT_PLUGIN(DebuggerPlugin)
diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h
index 061a7a60e5a8fe68007df30b630d5399f83a2e1e..56b8457b250c332cb877f1a64bac70e44251c8d1 100644
--- a/src/plugins/debugger/debuggerplugin.h
+++ b/src/plugins/debugger/debuggerplugin.h
@@ -109,6 +109,7 @@ private slots:
 
     void openTextEditor(const QString &titlePattern, const QString &contents);
 
+    void toggleBreakpoint();
     void breakpointSetRemoveMarginActionTriggered();
     void breakpointEnableDisableMarginActionTriggered();
     void onModeChanged(Core::IMode *mode);