diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java index cdfb0cbb3b2d..4fb2b75c13a0 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java @@ -68,6 +68,7 @@ public class XFramesView extends XDebugView { private final Wrapper myThreadsPanel; private boolean myThreadsCalculated = false; private final TransferToEDTQueue 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; } }