diff options
author | Torbjörn Svensson | 2022-01-29 15:27:31 +0000 |
---|---|---|
committer | Jonah Graham | 2022-02-10 15:35:23 +0000 |
commit | fcf416ab6d6c95aee09165dd370431b1da8480e7 (patch) | |
tree | 6759c0f05698fa565a2374f9e1b8caa9874bfc66 /dsf/org.eclipse.cdt.dsf.ui | |
parent | 72efb17cdaa28a639137b07d2043bd6948f127e9 (diff) | |
download | org.eclipse.cdt-fcf416ab6d6c95aee09165dd370431b1da8480e7.tar.gz org.eclipse.cdt-fcf416ab6d6c95aee09165dd370431b1da8480e7.tar.xz org.eclipse.cdt-fcf416ab6d6c95aee09165dd370431b1da8480e7.zip |
Bug 578400: Handle refresh event to show right source code
When the ICommandControlRefreshAllDMEvent is sent, open the coresponding
source file to the new stack frame. It could be the same or a completly
different file as before the event.
Contributed by STMicroelectronics
Also-By: Jonah Graham <jonah@kichwacoders.com>
Signed-off-by: Torbjörn Svensson <torbjorn.svensson@st.com>
Change-Id: Ib99f19f444a5bae1d99072ec9ed07e5666732bb6
Diffstat (limited to 'dsf/org.eclipse.cdt.dsf.ui')
-rw-r--r-- | dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java index 5351e506ced..d2c9f815c51 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/sourcelookup/DsfSourceDisplayAdapter.java @@ -43,6 +43,7 @@ import org.eclipse.cdt.dsf.debug.service.IRunControl.StateChangeReason; import org.eclipse.cdt.dsf.debug.service.IStack; import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMContext; import org.eclipse.cdt.dsf.debug.service.IStack.IFrameDMData; +import org.eclipse.cdt.dsf.debug.service.command.ICommandControlService; import org.eclipse.cdt.dsf.debug.sourcelookup.DsfSourceLookupParticipant; import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController; import org.eclipse.cdt.dsf.debug.ui.viewmodel.SteppingController.ISteppingControlParticipant; @@ -986,6 +987,28 @@ public class DsfSourceDisplayAdapter implements ISourceDisplay, ISteppingControl startAnnotationClearingJob(e.getDMContext()); } + /** + * @noreference This method is not intended to be referenced by clients. + */ + @DsfServiceEventHandler + public void eventDispatched(final ICommandControlService.ICommandControlRefreshAllDMEvent e) { + if (DEBUG) { + System.out.println("[DsfSourceDisplayAdapter] eventDispatched e=" + e); //$NON-NLS-1$ + } + // trigger source display immediately (should be optional?) + Display.getDefault().asyncExec(() -> { + Object context = DebugUITools.getDebugContext(); + if (context instanceof IDMVMContext) { + final IDMContext dmc = ((IDMVMContext) context).getDMContext(); + if (dmc instanceof IFrameDMContext && DMContexts.isAncestorOf(dmc, e.getDMContext())) { + IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); + doDisplaySource((IFrameDMContext) dmc, page, false, true); + return; + } + } + }); + } + @DsfServiceEventHandler public void eventDispatched(final IRunControl.ISuspendedDMEvent e) { updateStepTiming(); |