diff --git a/src/plugins/debugger/gdb/pythongdbengine.cpp b/src/plugins/debugger/gdb/pythongdbengine.cpp
index 24ec4c534573ed699e37769fc3531f4c40ec620e..93226f3a4102725627065ab02e9bd9f57cc18538 100644
--- a/src/plugins/debugger/gdb/pythongdbengine.cpp
+++ b/src/plugins/debugger/gdb/pythongdbengine.cpp
@@ -50,6 +50,7 @@ void GdbEngine::updateLocalsPython(const QByteArray &varList)
     PRECONDITION;
     m_processedNames.clear();
 
+    manager()->watchHandler()->beginCycle(false);
     //m_toolTipExpression.clear();
     WatchHandler *handler = m_manager->watchHandler();
 
diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp
index 516edb06ccacddc10da73961cb4b862e32ac0dc9..35a9545c7b8555f808ed395765379519e91cec6b 100644
--- a/src/plugins/debugger/watchhandler.cpp
+++ b/src/plugins/debugger/watchhandler.cpp
@@ -397,10 +397,11 @@ void WatchModel::emitAllChanged()
     emit layoutChanged();
 }
 
-void WatchModel::beginCycle()
+void WatchModel::beginCycle(bool clearFetchTriggered)
 {
-    m_fetchTriggered.clear();
     emit enableUpdates(false);
+    if (clearFetchTriggered)
+        m_fetchTriggered.clear();
 }
 
 void WatchModel::endCycle()
@@ -1192,12 +1193,12 @@ WatchHandler::WatchHandler(DebuggerManager *manager)
         SIGNAL(triggered()), this, SLOT(emitAllChanged()));
 }
 
-void WatchHandler::beginCycle()
+void WatchHandler::beginCycle(bool clearFetchTriggered)
 {
     ++generationCounter;
-    m_locals->beginCycle();
-    m_watchers->beginCycle();
-    m_tooltips->beginCycle();
+    m_locals->beginCycle(clearFetchTriggered);
+    m_watchers->beginCycle(clearFetchTriggered);
+    m_tooltips->beginCycle(clearFetchTriggered);
 }
 
 void WatchHandler::endCycle()
diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h
index 15f4a56569bdde40085b6b52a416d45070ff0cc6..1526b82b47e283d7875b003f165a9f3cd9b8d92c 100644
--- a/src/plugins/debugger/watchhandler.h
+++ b/src/plugins/debugger/watchhandler.h
@@ -225,7 +225,7 @@ private:
 
     void emitDataChanged(int column,
         const QModelIndex &parentIndex = QModelIndex());
-    void beginCycle(); // called at begin of updateLocals() cycle
+    void beginCycle(bool clearFetchTriggered); // called at begin of updateLocals() cycle
     void endCycle(); // called after all results have been received
 
     friend QDebug operator<<(QDebug d, const WatchModel &m);
@@ -266,7 +266,9 @@ public:
     Q_SLOT void removeWatchExpression();
     Q_SLOT void removeWatchExpression(const QString &exp);
     Q_SLOT void emitAllChanged();
-    void beginCycle(); // called at begin of updateLocals() cycle
+
+    // called at begin of updateLocals() cycle
+    void beginCycle(bool clearFetchTriggered = true);
     void updateWatchers(); // called after locals are fetched
     void endCycle(); // called after all results have been received
     void showEditValue(const WatchData &data);