mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-23 17:05:26 +02:00
Bug 308055: Register values are not updated when switching between frames. CViewerInputProvider should extend existing platform input providers.
This commit is contained in:
parent
6a80bb8cc7
commit
cdb45fd02a
3 changed files with 50 additions and 10 deletions
|
@ -57,7 +57,8 @@ public class CDebugElementAdapterFactory implements IAdapterFactory {
|
||||||
private static IElementToggleBreakpointAdapter fgDisassemblyToggleBreakpointAdapter = new DisassemblyToggleBreakpointAdapter();
|
private static IElementToggleBreakpointAdapter fgDisassemblyToggleBreakpointAdapter = new DisassemblyToggleBreakpointAdapter();
|
||||||
private static ISourceDisplay fgSourceDisplayAdapter = new SourceDisplayAdapter();
|
private static ISourceDisplay fgSourceDisplayAdapter = new SourceDisplayAdapter();
|
||||||
|
|
||||||
private static IViewerInputProvider fgViewerInputProvider = new CViewerInputProvider();
|
private static IViewerInputProvider fgDefaultViewerInputProvider = new CDefaultViewerInputProvider();
|
||||||
|
private static IViewerInputProvider fgStackFrameViewerInputProvider = new CStackFrameViewerInputProvider();
|
||||||
private static IColumnPresentationFactory fgRegistersViewColumnPresentationFactory = new RegistersViewColumnPresentationFactory();
|
private static IColumnPresentationFactory fgRegistersViewColumnPresentationFactory = new RegistersViewColumnPresentationFactory();
|
||||||
private static IElementMementoProvider fgRegisterManagerProxyMementoProvider = new CRegisterManagerProxyMementoProvider();
|
private static IElementMementoProvider fgRegisterManagerProxyMementoProvider = new CRegisterManagerProxyMementoProvider();
|
||||||
|
|
||||||
|
@ -148,9 +149,10 @@ public class CDebugElementAdapterFactory implements IAdapterFactory {
|
||||||
}
|
}
|
||||||
if ( adapterType.equals( IViewerInputProvider.class ) ) {
|
if ( adapterType.equals( IViewerInputProvider.class ) ) {
|
||||||
if ( adaptableObject instanceof ICDebugTarget
|
if ( adaptableObject instanceof ICDebugTarget
|
||||||
|| adaptableObject instanceof ICThread
|
|| adaptableObject instanceof ICThread )
|
||||||
|| adaptableObject instanceof ICStackFrame ) {
|
return fgDefaultViewerInputProvider;
|
||||||
return fgViewerInputProvider;
|
if ( adaptableObject instanceof ICStackFrame ) {
|
||||||
|
return fgStackFrameViewerInputProvider;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( adapterType.equals( IColumnPresentationFactory.class ) ) {
|
if ( adapterType.equals( IColumnPresentationFactory.class ) ) {
|
||||||
|
|
|
@ -15,13 +15,13 @@ import org.eclipse.cdt.debug.core.model.ICDebugElement;
|
||||||
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
||||||
import org.eclipse.cdt.debug.internal.ui.CRegisterManagerProxies;
|
import org.eclipse.cdt.debug.internal.ui.CRegisterManagerProxies;
|
||||||
import org.eclipse.core.runtime.CoreException;
|
import org.eclipse.core.runtime.CoreException;
|
||||||
import org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider;
|
import org.eclipse.debug.internal.ui.elements.adapters.DefaultViewerInputProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputProvider;
|
||||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||||
import org.eclipse.debug.ui.IDebugUIConstants;
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
public class CViewerInputProvider extends ViewerInputProvider implements IViewerInputProvider {
|
public class CDefaultViewerInputProvider extends DefaultViewerInputProvider implements IViewerInputProvider {
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
|
* @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
|
||||||
|
@ -32,14 +32,16 @@ public class CViewerInputProvider extends ViewerInputProvider implements IViewer
|
||||||
ICDebugTarget target = (ICDebugTarget)((ICDebugElement)source).getDebugTarget();
|
ICDebugTarget target = (ICDebugTarget)((ICDebugElement)source).getDebugTarget();
|
||||||
return CRegisterManagerProxies.getInstance().getRegisterManagerProxy( target );
|
return CRegisterManagerProxies.getInstance().getRegisterManagerProxy( target );
|
||||||
}
|
}
|
||||||
return null;
|
return super.getViewerInput( source, context, update );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.eclipse.debug.internal.ui.model.elements.ViewerInputProvider#supportsContextId(java.lang.String)
|
* @see org.eclipse.debug.internal.ui.elements.adapters.DefaultViewerInputProvider#supportsContextId(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
protected boolean supportsContextId( String id ) {
|
protected boolean supportsContextId( String id ) {
|
||||||
return IDebugUIConstants.ID_REGISTER_VIEW.equals( id );
|
if ( IDebugUIConstants.ID_REGISTER_VIEW.equals( id ) )
|
||||||
}
|
return true;
|
||||||
|
return super.supportsContextId( id );
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2010 CodeSourcery and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* CodeSourcery - Initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.cdt.debug.internal.ui.elements.adapters;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICDebugTarget;
|
||||||
|
import org.eclipse.cdt.debug.core.model.ICStackFrame;
|
||||||
|
import org.eclipse.cdt.debug.internal.ui.CRegisterManagerProxies;
|
||||||
|
import org.eclipse.core.runtime.CoreException;
|
||||||
|
import org.eclipse.debug.internal.ui.elements.adapters.StackFrameViewerInputProvider;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
|
||||||
|
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||||
|
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||||
|
|
||||||
|
public class CStackFrameViewerInputProvider extends StackFrameViewerInputProvider {
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.debug.internal.ui.elements.adapters.StackFrameViewerInputProvider#getViewerInput(java.lang.Object, org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext, org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate)
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
protected Object getViewerInput( Object source, IPresentationContext context, IViewerUpdate update ) throws CoreException {
|
||||||
|
if ( IDebugUIConstants.ID_REGISTER_VIEW.equals( context.getId() ) && source instanceof ICStackFrame ) {
|
||||||
|
ICDebugTarget target = (ICDebugTarget)((ICStackFrame)source).getDebugTarget();
|
||||||
|
return CRegisterManagerProxies.getInstance().getRegisterManagerProxy( target );
|
||||||
|
}
|
||||||
|
return super.getViewerInput( source, context, update );
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue