diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 5d97aeb9b9f..056980e740a 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,10 @@ +2004-08-05 Mikhail Khodjaiants + Fixed the "resumed" event handler of the variable types. + * CExpression.java + * CGlobalVariable.java + * CStackFrame.java + * CVariable.java + 2004-08-05 Mikhail Khodjaiants Added the abstract prototypes for some generic methods. * AbstractCValue.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CExpression.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CExpression.java index fc1a0d1204f..40c9c58bb8d 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CExpression.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CExpression.java @@ -15,6 +15,7 @@ import org.eclipse.cdt.debug.core.ICDebugConstants; import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent; import org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent; import org.eclipse.cdt.debug.core.cdi.model.ICDIExpression; +import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject; import org.eclipse.cdt.debug.core.model.CVariableFormat; @@ -74,10 +75,13 @@ public class CExpression extends CVariable implements IExpression { for( int i = 0; i < events.length; i++ ) { ICDIEvent event = events[i]; if ( event instanceof ICDIResumedEvent ) { - if ( event.getSource() instanceof ICDITarget && getCDITarget().equals( event.getSource() ) ) { - setChanged( false ); + ICDIObject source = event.getSource(); + if ( source != null ) { + ICDITarget cdiTarget = source.getTarget(); + if ( getCDITarget().equals( cdiTarget ) ) { + setChanged( false ); + } } - break; } } super.handleDebugEvents( events ); diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CGlobalVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CGlobalVariable.java index 5b5e4a95de2..acb20e835a2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CGlobalVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CGlobalVariable.java @@ -10,6 +10,10 @@ ***********************************************************************/ package org.eclipse.cdt.debug.internal.core.model; +import org.eclipse.cdt.debug.core.cdi.event.ICDIEvent; +import org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent; +import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; +import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject; import org.eclipse.cdt.debug.core.model.ICGlobalVariable; @@ -38,4 +42,23 @@ public class CGlobalVariable extends CVariable implements ICGlobalVariable { public boolean canEnableDisable() { return true; } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener#handleDebugEvents(org.eclipse.cdt.debug.core.cdi.event.ICDIEvent[]) + */ + public void handleDebugEvents( ICDIEvent[] events ) { + for( int i = 0; i < events.length; i++ ) { + ICDIEvent event = events[i]; + if ( event instanceof ICDIResumedEvent ) { + ICDIObject source = event.getSource(); + if ( source != null ) { + ICDITarget cdiTarget = source.getTarget(); + if ( getCDITarget().equals( cdiTarget ) ) { + setChanged( false ); + } + } + } + } + super.handleDebugEvents( events ); + } } \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java index f44ad29c932..db97a689aef 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CStackFrame.java @@ -583,7 +583,7 @@ public class CStackFrame extends CDebugElement implements ICStackFrame, IRestart return; Iterator it = fVariables.iterator(); while( it.hasNext() ) { - ((CVariable)it.next()).setChanged( false ); + ((AbstractCVariable)it.next()).setChanged( false ); } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java index 5b3a0f60871..d21d4790199 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariable.java @@ -21,6 +21,7 @@ import org.eclipse.cdt.debug.core.cdi.event.ICDIEventListener; import org.eclipse.cdt.debug.core.cdi.event.ICDIResumedEvent; import org.eclipse.cdt.debug.core.cdi.model.ICDIArgumentObject; import org.eclipse.cdt.debug.core.cdi.model.ICDIObject; +import org.eclipse.cdt.debug.core.cdi.model.ICDITarget; import org.eclipse.cdt.debug.core.cdi.model.ICDIValue; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariable; import org.eclipse.cdt.debug.core.cdi.model.ICDIVariableObject; @@ -637,17 +638,16 @@ public class CVariable extends AbstractCVariable implements ICDIEventListener { ICDIObject source = event.getSource(); if ( source == null ) continue; - if ( source instanceof ICDIVariable && iv.isSameVariable( (ICDIVariable)source ) ) { - if ( source.getTarget().equals( getCDITarget() ) ) { - if ( event instanceof ICDIChangedEvent ) { - if ( source instanceof ICDIVariable ) { - handleChangedEvent( (ICDIChangedEvent)event ); - } - } - else if ( event instanceof ICDIResumedEvent ) { - handleResumedEvent( (ICDIResumedEvent)event ); + ICDITarget target = source.getTarget(); + if ( target.equals( getCDITarget() ) ) { + if ( event instanceof ICDIChangedEvent ) { + if ( source instanceof ICDIVariable && iv.isSameVariable( (ICDIVariable)source ) ) { + handleChangedEvent( (ICDIChangedEvent)event ); } } + else if ( event instanceof ICDIResumedEvent ) { + handleResumedEvent( (ICDIResumedEvent)event ); + } } } }