From 1c13dd4b56869c8806f170ee094e19a8272e5207 Mon Sep 17 00:00:00 2001 From: Randy Rohrbach Date: Tue, 31 Jul 2007 15:48:37 +0000 Subject: [PATCH] [[https://bugs.eclipse.org/bugs/show_bug.cgi?id=198422 ]] Bugzilla 198422. --- .../detailpanesupport/DetailPane.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/ui/viewmodel/detailpanesupport/DetailPane.java b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/ui/viewmodel/detailpanesupport/DetailPane.java index da6c3849eaf..c92ba8b1745 100644 --- a/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/ui/viewmodel/detailpanesupport/DetailPane.java +++ b/plugins/org.eclipse.dd.dsf.debug.ui/src/org/eclipse/dd/dsf/debug/ui/viewmodel/detailpanesupport/DetailPane.java @@ -328,21 +328,27 @@ public class DetailPane implements IDetailPane, IAdaptable, IPropertyChangeListe * * So here we specifically look for the service which knows how to deal * with the formatted data. + * + * Please note that the order or searching for the ancestor is important. + * A BitField Data Model Context will have a Register Data Model Context + * as its parent so if we search for a Register DMC first when we actually + * have a BitField DMC we will get the register and show the value of the + * register not the bit field. */ DsfServicesTracker tracker = new DsfServicesTracker(DsfDebugUIPlugin.getBundleContext(), ((DMVMContext) element).getDMC().getSessionId()); - IRegisterDMContext regDmc = DMContexts.getAncestorOfType(((DMVMContext) element).getDMC(), IRegisterDMContext.class); - - if ( regDmc != null ) { - dmc = regDmc ; + IBitFieldDMContext bitfieldDmc = DMContexts.getAncestorOfType(((DMVMContext) element).getDMC(), IBitFieldDMContext.class); + + if ( bitfieldDmc != null ) { + dmc = bitfieldDmc ; service = tracker.getService(IRegisters.class); } else { - IBitFieldDMContext bitfieldDmc = DMContexts.getAncestorOfType(((DMVMContext) element).getDMC(), IBitFieldDMContext.class); + IRegisterDMContext regDmc = DMContexts.getAncestorOfType(((DMVMContext) element).getDMC(), IRegisterDMContext.class); - if ( bitfieldDmc != null ) { - dmc = bitfieldDmc ; + if ( regDmc != null ) { + dmc = regDmc ; service = tracker.getService(IRegisters.class); } else {