From 263add60a92486ba3faec91aab0dccd3bb74b6f8 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 31 May 2006 18:35:49 +0000 Subject: [PATCH] Bug 144719: [Modules view] Modules from from different sessions are mixed up. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 4 ++++ .../internal/core/model/CDebugElement.java | 3 +++ debug/org.eclipse.cdt.debug.ui/ChangeLog | 4 ++++ .../modules/ModulesViewEventHandler.java | 21 +++++++++++++------ 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 06e2ce5c220..2fc6ffe42b6 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,7 @@ +2006-05-31 Mikhail Khodjaiants + Bug 144719: [Modules view] Modules from from different sessions are mixed up. + * CDebugElement.java + 2006-05-29 Mikhail Khodjaiants Bug 108472: Debug continues to fail. * DebugCoreMessages.properties diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java index b10c2e4432b..f23897cfa56 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugElement.java @@ -21,6 +21,7 @@ import org.eclipse.cdt.debug.core.model.CDebugElementState; import org.eclipse.cdt.debug.core.model.ICDebugElement; import org.eclipse.cdt.debug.core.model.ICDebugElementStatus; import org.eclipse.cdt.debug.core.model.ICDebugTarget; +import org.eclipse.cdt.debug.core.model.IModuleRetrieval; import org.eclipse.cdt.debug.internal.core.ICDebugInternalConstants; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.PlatformObject; @@ -307,6 +308,8 @@ abstract public class CDebugElement extends PlatformObject implements ICDebugEle // See bug #100261 if ( adapter.equals( IMemoryBlockRetrieval.class ) ) return getDebugTarget().getAdapter( adapter ); + if ( adapter.equals( IModuleRetrieval.class ) ) + return getDebugTarget().getAdapter( adapter ); if ( adapter.equals( ILaunch.class ) ) return getDebugTarget().getLaunch(); return super.getAdapter( adapter ); diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 71e83553222..4918ec67f80 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,7 @@ +2006-05-31 Mikhail Khodjaiants + Bug 144719: [Modules view] Modules from from different sessions are mixed up. + * ModulesViewEventHandler.java + 2006-05-31 Mikhail Khodjaiants Bug 144684: [Modules view] Collapse all action doesn't work. * CollapseAllModulesAction.java diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java index d08e49145f7..44827c03980 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java @@ -58,11 +58,15 @@ public class ModulesViewEventHandler extends DebugEventHandler { * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#handleCreate(org.eclipse.debug.core.DebugEvent) */ protected void handleCreate( DebugEvent event ) { - if ( event.getSource() instanceof IDebugTarget ) { + Object source = event.getSource(); + if ( source instanceof IDebugTarget ) { refreshRoot( event ); } - else if ( event.getSource() instanceof ICModule ) { - fireDelta( (ICModule)event.getSource(), IModelDelta.ADDED ); + else if ( source instanceof ICModule ) { + if ( accept( (ICModule)source ) ) { + ICModule module = (ICModule)source; + fireDelta( module, IModelDelta.ADDED ); + } } } @@ -70,11 +74,12 @@ public class ModulesViewEventHandler extends DebugEventHandler { * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#handleTerminate(org.eclipse.debug.core.DebugEvent) */ protected void handleTerminate( DebugEvent event ) { - if ( event.getSource() instanceof IDebugTarget ) { + Object source = event.getSource(); + if ( source instanceof IDebugTarget ) { refreshRoot( event ); } - else if ( event.getSource() instanceof ICModule ) { - fireDelta( (ICModule)event.getSource(), IModelDelta.REMOVED ); + else if ( source instanceof ICModule ) { + fireDelta( (ICModule)source, IModelDelta.REMOVED ); } } @@ -91,4 +96,8 @@ public class ModulesViewEventHandler extends DebugEventHandler { super.dispose(); fModuleRetrieval = null; } + + private boolean accept( ICModule module ) { + return fModuleRetrieval.equals( module.getAdapter( IModuleRetrieval.class ) ); + } }