From 0ae94ffc4dca721fcea66f3dbfc7cb64fbf7a009 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Wed, 16 Mar 2011 13:38:27 +0100
Subject: [PATCH] Debugger[CDB]: Fix breakpoint context menu for CDB.

Immediately report known data back when settings breakpoints
so that line number/enabled is correct in the handler.
---
 src/plugins/debugger/cdb/cdbengine.cpp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp
index ffa829436c2..b19218bf973 100644
--- a/src/plugins/debugger/cdb/cdbengine.cpp
+++ b/src/plugins/debugger/cdb/cdbengine.cpp
@@ -2366,11 +2366,16 @@ void CdbEngine::attemptBreakpointSynchronization()
             handler->notifyBreakpointInsertOk(id);
             m_pendingBreakpointMap.insert(id, response);
             addedChanged = true;
+            // Ensure enabled/disabled is correct in handler and line number is there.
+            handler->setResponse(id, response);
             if (debugBreakpoints)
                 qDebug("Adding %llu %s\n", id, qPrintable(response.toString()));
             break;
         case BreakpointChangeRequested:
             handler->notifyBreakpointChangeProceeding(id);
+            if (debugBreakpoints)
+                qDebug("Changing %llu:\n    %s\nTo %s\n", id, qPrintable(handler->response(id).toString()),
+                       qPrintable(parameters.toString()));
             if (parameters.enabled != handler->response(id).enabled) {
                 // Change enabled/disabled breakpoints without triggering update.
                 postCommand((parameters.enabled ? "be " : "bd ") + QByteArray::number(id), 0);
@@ -2385,8 +2390,6 @@ void CdbEngine::attemptBreakpointSynchronization()
                 m_pendingBreakpointMap.insert(id, response);
             }
             handler->notifyBreakpointChangeOk(id);
-            if (debugBreakpoints)
-                qDebug("Changing %llu %s\n", id, qPrintable(response.toString()));
             break;
         case BreakpointRemoveRequested:
             postCommand("bc " + QByteArray::number(id), 0);
@@ -2639,6 +2642,8 @@ void CdbEngine::handleBreakPoints(const GdbMi &value)
                 currentResponse.pending = reportedResponse.pending;
                 currentResponse.enabled = reportedResponse.enabled;
                 formatCdbBreakPointResponse(id, currentResponse, str);
+                if (debugBreakpoints)
+                    qDebug("  Setting for %llu: %s\n", id, qPrintable(currentResponse.toString()));
                 handler->setResponse(id, currentResponse);
                 m_pendingBreakpointMap.erase(it);
             }
-- 
GitLab