From a29b7e2b1032d3c4d9e171524e29af26e33c1e85 Mon Sep 17 00:00:00 2001 From: Marc Khouzam Date: Mon, 10 May 2010 20:15:50 +0000 Subject: [PATCH] Bug 312229: Missing delta generation was forcing us to refresh the expressions view needlessly. --- .../internal/ui/viewmodel/DsfCastToTypeSupport.java | 1 - .../dsf/debug/ui/viewmodel/variable/VariableVMNode.java | 9 +++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/DsfCastToTypeSupport.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/DsfCastToTypeSupport.java index bb0285e1156..d91bd6de933 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/DsfCastToTypeSupport.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/DsfCastToTypeSupport.java @@ -216,7 +216,6 @@ public class DsfCastToTypeSupport { private void fireExpressionChangedEvent(IExpressionDMContext exprDMC) { ExpressionChangedEvent event = new ExpressionChangedEvent(exprDMC); dmvmProvider.handleEvent(event); - dmvmProvider.refresh(); // this seems to be required, esp. for Expressions View } } diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java index f2c71469841..a36883b61e4 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java @@ -1201,8 +1201,13 @@ public class VariableVMNode extends AbstractExpressionVMNode public void buildDeltaForExpression(IExpression expression, int elementIdx, Object event, VMDelta parentDelta, TreePath path, RequestMonitor rm) { - // Always refresh the contents of the view upon suspended event. - if (event instanceof ISuspendedDMEvent) { + // The following events can affect any expression's values, + // refresh the contents of the parent element (i.e. all the expressions). + if (event instanceof ISuspendedDMEvent || + event instanceof IMemoryChangedEvent || + event instanceof IExpressionChangedDMEvent || + (event instanceof PropertyChangeEvent && + ((PropertyChangeEvent)event).getProperty() == IDebugVMConstants.PROP_FORMATTED_VALUE_FORMAT_PREFERENCE) ) { parentDelta.setFlags(parentDelta.getFlags() | IModelDelta.CONTENT); }