Update frames UI when thread is stopped

(cherry picked from commit 55b11b468d)
This commit is contained in:
Aleksandr Eliseev
2025-12-04 12:24:10 +03:00
committed by Nikita Iarychenko
parent 42963a54a4
commit 80ebd6ea2b

View File

@@ -47,6 +47,12 @@ import com.intellij.xdebugger.*;
import com.intellij.xdebugger.breakpoints.*;
import com.intellij.xdebugger.evaluation.XDebuggerEditorsProvider;
import com.intellij.xdebugger.frame.*;
import com.intellij.xdebugger.impl.XDebugSessionImpl;
import com.intellij.xdebugger.impl.frame.XDebugSessionProxy;
import com.intellij.xdebugger.impl.frame.XDebugSessionProxyKeeperKt;
import com.intellij.xdebugger.impl.frame.XDebugView;
import com.intellij.xdebugger.impl.frame.XFramesView;
import com.intellij.xdebugger.impl.ui.XDebugSessionTab;
import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl;
import com.intellij.xdebugger.stepping.XSmartStepIntoHandler;
import com.jetbrains.python.PyBundle;
@@ -1212,6 +1218,27 @@ public class PyDebugProcess extends XDebugProcess implements IPyDebugProcess, Pr
if (breakpoint != null) {
// Hit a breakpoint while already suspended. We have to remember it and stop on this breakpoint later.
myBreakpointHits.add(new BreakpointHitContext(breakpoint, threadInfo.getMessage(), suspendContext));
} else {
XDebugSession session = getSession();
if (!(session instanceof XDebugSessionImpl sessionImpl)) {
// If possible (it is XDebugSessionImpl, which currently is only implementation of XDebugSession),
// we want to rebuild only frames view
// But just in case, if in the future there is other implementation,
// we rebuild all debug views
session.rebuildViews();
return;
}
XDebugSessionTab tab = sessionImpl.getSessionTab();
if (tab == null) {
return;
}
XFramesView framesView = tab.getFramesView();
if (framesView == null) {
return;
}
XDebugSessionProxy sessionProxy = XDebugSessionProxyKeeperKt.asProxy(sessionImpl);
framesView
.processSessionEvent(XDebugView.SessionEvent.SETTINGS_CHANGED, sessionProxy);
}
}
}