1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-23 17:05:26 +02:00

Bug 309550: Newly added register group doesn't appear in the view

This commit is contained in:
Mikhail Khodjaiants 2010-04-17 17:30:07 +00:00
parent 3e2049154b
commit 2a48888d7b

View file

@ -15,10 +15,12 @@ import org.eclipse.cdt.debug.core.model.ICDebugElement;
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
import org.eclipse.cdt.debug.core.model.ICStackFrame;
import org.eclipse.cdt.debug.core.model.ICThread;
import org.eclipse.cdt.debug.core.model.ICVariable;
import org.eclipse.cdt.debug.internal.core.CRegisterManager;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.IDebugEventSetListener;
import org.eclipse.debug.core.model.IRegister;
import org.eclipse.debug.core.model.IRegisterGroup;
import org.eclipse.debug.ui.contexts.DebugContextEvent;
import org.eclipse.debug.ui.contexts.IDebugContextListener;
@ -69,15 +71,37 @@ public class CRegisterManagerProxy implements IDebugEventSetListener, IDebugCont
CRegisterManagerModelProxy modelProxy = getModelProxy();
for( int i = 0; i < events.length; i++ ) {
DebugEvent event = events[i];
if ( !containsEvent( event ) )
continue;
Object source = event.getSource();
if ( source instanceof ICDebugTarget
&& fRegisterManager.getDebugTarget().equals( source )
&& (( event.getKind() == DebugEvent.SUSPEND ) || event.getKind() == DebugEvent.TERMINATE ) ) {
&& (( event.getKind() == DebugEvent.SUSPEND )
|| event.getKind() == DebugEvent.TERMINATE ) ) {
if ( modelProxy != null )
modelProxy.update();
}
else if ( source instanceof ICDebugTarget
&& (( event.getKind() == DebugEvent.CHANGE )
&& event.getDetail() == DebugEvent.CONTENT ) ) {
if ( modelProxy != null )
modelProxy.update();
}
else if ( source instanceof IRegisterGroup
&& event.getKind() == DebugEvent.CHANGE ) {
if ( modelProxy != null )
modelProxy.update();
}
else if ( source instanceof IRegister
&& event.getKind() == DebugEvent.CHANGE ) {
if ( modelProxy != null )
modelProxy.update();
}
else if ( source instanceof ICVariable
&& event.getKind() == DebugEvent.CHANGE ) {
if ( modelProxy != null )
modelProxy.update();
}
else if ( source instanceof ICThread
&& fRegisterManager.getDebugTarget().equals( ((ICThread)source).getDebugTarget() )
&& event.getKind() == DebugEvent.SUSPEND ) {
if ( modelProxy != null )
modelProxy.update();
@ -115,4 +139,12 @@ public class CRegisterManagerProxy implements IDebugEventSetListener, IDebugCont
modelProxy.update();
}
}
private boolean containsEvent( DebugEvent event ) {
Object source = event.getSource();
if ( source instanceof ICDebugElement ) {
return fRegisterManager.getDebugTarget().equals( ((ICDebugElement)source).getDebugTarget() );
}
return false;
}
}