mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-131712 Debugger is showing current position on evaluate
This commit is contained in:
@@ -68,6 +68,7 @@ public class XFramesView extends XDebugView {
|
||||
private final Wrapper myThreadsPanel;
|
||||
private boolean myThreadsCalculated = false;
|
||||
private final TransferToEDTQueue<Runnable> myLaterInvocator = TransferToEDTQueue.createRunnableMerger("XFramesView later invocator", 50);
|
||||
private boolean myRefresh = false;
|
||||
|
||||
public XFramesView(@NotNull Project project) {
|
||||
myMainPanel = new JPanel(new BorderLayout());
|
||||
@@ -77,7 +78,7 @@ public class XFramesView extends XDebugView {
|
||||
@Override
|
||||
public void valueChanged(ListSelectionEvent e) {
|
||||
if (myListenersEnabled && !e.getValueIsAdjusting() && mySelectedFrameIndex != myFramesList.getSelectedIndex()) {
|
||||
processFrameSelection(getSession(e));
|
||||
processFrameSelection(getSession(e), true);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -87,7 +88,7 @@ public class XFramesView extends XDebugView {
|
||||
if (myListenersEnabled) {
|
||||
int i = myFramesList.locationToIndex(e.getPoint());
|
||||
if (i != -1 && myFramesList.isSelectedIndex(i)) {
|
||||
processFrameSelection(getSession(e));
|
||||
processFrameSelection(getSession(e), true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -201,6 +202,8 @@ public class XFramesView extends XDebugView {
|
||||
|
||||
@Override
|
||||
public void processSessionEvent(@NotNull final SessionEvent event) {
|
||||
myRefresh = event == SessionEvent.SETTINGS_CHANGED;
|
||||
|
||||
if (event == SessionEvent.BEFORE_RESUME) {
|
||||
return;
|
||||
}
|
||||
@@ -297,12 +300,14 @@ public class XFramesView extends XDebugView {
|
||||
return myMainPanel;
|
||||
}
|
||||
|
||||
private void processFrameSelection(XDebugSession session) {
|
||||
private void processFrameSelection(XDebugSession session, boolean force) {
|
||||
mySelectedFrameIndex = myFramesList.getSelectedIndex();
|
||||
Object selected = myFramesList.getSelectedValue();
|
||||
if (selected instanceof XStackFrame) {
|
||||
if (session != null) {
|
||||
session.setCurrentStackFrame(mySelectedStack, (XStackFrame)selected, mySelectedFrameIndex == 0);
|
||||
if (force || !myRefresh) {
|
||||
session.setCurrentStackFrame(mySelectedStack, (XStackFrame)selected, mySelectedFrameIndex == 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -409,7 +414,7 @@ public class XFramesView extends XDebugView {
|
||||
myFramesList.getElementCount() > mySelectedFrameIndex &&
|
||||
myFramesList.getModel().get(mySelectedFrameIndex) != null) {
|
||||
myFramesList.setSelectedIndex(mySelectedFrameIndex);
|
||||
processFrameSelection(mySession);
|
||||
processFrameSelection(mySession, false);
|
||||
myListenersEnabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user