X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugStackFrame.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugStackFrame.java index ece1a54..7521c61 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugStackFrame.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/model/XDebugStackFrame.java @@ -198,20 +198,20 @@ public class XDebugStackFrame extends XDebugElement implements IStackFrame, Com valNew = (XDebugAbstractValue) varNew.getValue(); // Get the value from DBG try { - if (valOld.hasVariables() || // If the 'static' value has child variables - valNew.hasVariables()) { // or if the DBG value has child variables - if (!hasRecursion(varOld) && - !hasRecursion(varNew)) { // Both branches should not have a recursion - updateVariableList( - valOld.getChildVariables(), // Update the variable list for the child variables + if (valOld.hasVariables() || // If the 'static' value has child variables + valNew.hasVariables()) { // or if the DBG value has child variables + if (!hasRecursion (varOld) && + !hasRecursion (varNew)) { // Both branches should not have a recursion + updateVariableList ( + valOld.getChildVariables(), // Update the variable list for the child variables valNew.getChildVariables()); } } if (!valOld.getValueString().equals( valNew.getValueString())) { // Has the value changed? - valOld.setValueString(valNew.getValueString()); // Yes, set the 'static' value (variable) to the new value - varOld.setValueChanged(true); // and set the 'has changed' flag, so that the variable view + varOld.setValue (varNew.getValue ()); // Set the new value + varOld.setValueChanged (true); // and set the 'has changed' flag, so that the variable view // could show the user the changed status with a different // color } @@ -258,11 +258,6 @@ public class XDebugStackFrame extends XDebugElement implements IStackFrame, Com */ public synchronized IVariable[] getVariables() throws DebugException { - /* always read variables, poor performance - * but this fix bug #680. - * need to investigate on. - */ - if (!fUpToDate) { Node dfl = ((XDebugTarget) getDebugTarget()).getLocalVariables(fLevel); Node dfg = ((XDebugTarget) getDebugTarget()).getGlobalVariables(fLevel); @@ -278,6 +273,12 @@ public class XDebugStackFrame extends XDebugElement implements IStackFrame, Com return (IVariable[]) varList.toArray (new IVariable[varList.size()]); } + /** + * + * @param localVariables + * @param globalVariables + * @throws DebugException + */ private void parseVariable(Node localVariables, Node globalVariables) throws DebugException { NodeList property = localVariables.getChildNodes(); NodeList propertyGlobal = globalVariables.getChildNodes(); @@ -286,13 +287,13 @@ public class XDebugStackFrame extends XDebugElement implements IStackFrame, Com int length = property.getLength(); for (int i = 0; i < length; i++) { - XDebugVariable var = new XDebugVariable(this, property.item(i)); + XDebugVariable var = new XDebugVariable(this, property.item(i), null); fVariables[i] = var; } int globalLength = propertyGlobal.getLength(); for (int k = 0; k < globalLength; k++) { - XDebugVariable var = new XDebugVariable(this, propertyGlobal.item(k)); + XDebugVariable var = new XDebugVariable(this, propertyGlobal.item(k), null); fVariables[k + length] = var; } } @@ -581,7 +582,7 @@ public class XDebugStackFrame extends XDebugElement implements IStackFrame, Com } public boolean setVariableValue(XDebugVariable variable, String expression) throws DebugException { - return ((XDebugTarget) getDebugTarget()).setVarValue("$" + variable.getName(), expression); + return ((XDebugTarget) getDebugTarget()).setVarValue(variable.getNameFull(), expression); } public Node eval(String expression) throws DebugException {