From 2c2ea7b218b7bee2b85a799b3205153c32057efc Mon Sep 17 00:00:00 2001 From: Alain Magloire Date: Thu, 20 Mar 2003 02:31:57 +0000 Subject: [PATCH] Update the variables when doing setValue() --- .../cdt/debug/mi/core/cdi/model/Variable.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java index bc3b434ce63..b271365d879 100644 --- a/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java +++ b/debug/org.eclipse.cdt.debug.mi.core/src/org/eclipse/cdt/debug/mi/core/cdi/model/Variable.java @@ -6,6 +6,7 @@ package org.eclipse.cdt.debug.mi.core.cdi.model; import org.eclipse.cdt.debug.core.cdi.CDIException; +import org.eclipse.cdt.debug.core.cdi.ICDIVariableManager; import org.eclipse.cdt.debug.core.cdi.model.ICDIStackFrame; import org.eclipse.cdt.debug.core.cdi.model.ICDIValue; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable; @@ -130,7 +131,8 @@ public class Variable extends CObject implements ICDIVariable { * @see org.eclipse.cdt.debug.core.cdi.model.ICDIVariable#setValue(String) */ public void setValue(String expression) throws CDIException { - MISession mi = ((Session)(getTarget().getSession())).getMISession(); + Session session = (Session)(getTarget().getSession()); + MISession mi = session.getMISession(); CommandFactory factory = mi.getCommandFactory(); MIVarAssign var = factory.createMIVarAssign(miVar.getVarName(), expression); try { @@ -143,9 +145,17 @@ public class Variable extends CObject implements ICDIVariable { throw new MI2CDIException(e); } - // If the assign was succesfull fire a MIVarChangedEvent() + ICDIVariableManager mgr = session.getVariableManager(); + // If the assign was succesfull fire a MIVarChangedEvent() for the variable + // Note GDB will not fire an event for the changed variable we have to do it manually. MIVarChangedEvent change = new MIVarChangedEvent(var.getToken(), miVar.getVarName()); mi.fireEvent(change); + // Changing values may have side effects i.e. affecting other variable + // if the manager is on autoupdate check all the other variables. + // Note: This maybe very costly. + if (mgr.isAutoUpdate()) { + mgr.update(); + } } /**