Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTorbjörn Svensson2022-01-29 15:27:31 +0000
committerJonah Graham2022-02-10 15:35:23 +0000
commitfcf416ab6d6c95aee09165dd370431b1da8480e7 (patch)
tree6759c0f05698fa565a2374f9e1b8caa9874bfc66 /dsf/org.eclipse.cdt.dsf.ui
parent72efb17cdaa28a639137b07d2043bd6948f127e9 (diff)
downloadorg.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.java23
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();

Back to the top