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 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 IElementMementoProvider fgRegisterManagerProxyMementoProvider = new CRegisterManagerProxyMementoProvider();
|
||||
|
||||
|
@ -148,9 +149,10 @@ public class CDebugElementAdapterFactory implements IAdapterFactory {
|
|||
}
|
||||
if ( adapterType.equals( IViewerInputProvider.class ) ) {
|
||||
if ( adaptableObject instanceof ICDebugTarget
|
||||
|| adaptableObject instanceof ICThread
|
||||
|| adaptableObject instanceof ICStackFrame ) {
|
||||
return fgViewerInputProvider;
|
||||
|| adaptableObject instanceof ICThread )
|
||||
return fgDefaultViewerInputProvider;
|
||||
if ( adaptableObject instanceof ICStackFrame ) {
|
||||
return fgStackFrameViewerInputProvider;
|
||||
}
|
||||
}
|
||||
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.internal.ui.CRegisterManagerProxies;
|
||||
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.IViewerInputProvider;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
|
||||
import org.eclipse.debug.ui.IDebugUIConstants;
|
||||
|
||||
public class CViewerInputProvider extends ViewerInputProvider implements IViewerInputProvider {
|
||||
public class CDefaultViewerInputProvider extends DefaultViewerInputProvider implements IViewerInputProvider {
|
||||
|
||||
/* (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)
|
||||
|
@ -32,14 +32,16 @@ public class CViewerInputProvider extends ViewerInputProvider implements IViewer
|
|||
ICDebugTarget target = (ICDebugTarget)((ICDebugElement)source).getDebugTarget();
|
||||
return CRegisterManagerProxies.getInstance().getRegisterManagerProxy( target );
|
||||
}
|
||||
return null;
|
||||
return super.getViewerInput( source, context, update );
|
||||
}
|
||||
|
||||
/* (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
|
||||
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