IDEA-142629 Evaluation of expression in the debugger resets scroll position in frames appcode/142.3400 clion/142.3401
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 21 Jul 2015 18:17:30 +0000 (21:17 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 21 Jul 2015 18:18:15 +0000 (21:18 +0300)
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XFramesView.java

index 77e154a329c22b2dbe55c7e6ab48b782734757ab..e94fbd666b3d66958f21cec4effdadc6b82cc168 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2009 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -62,6 +62,7 @@ public class XFramesView extends XDebugView {
   private final Set<XExecutionStack> myExecutionStacks = ContainerUtil.newHashSet();
   private XExecutionStack mySelectedStack;
   private int mySelectedFrameIndex;
+  private Rectangle myVisibleRect;
   private boolean myListenersEnabled;
   private final Map<XExecutionStack, StackFramesListBuilder> myBuilders = new HashMap<XExecutionStack, StackFramesListBuilder>();
   private final ActionToolbarImpl myToolbar;
@@ -223,6 +224,10 @@ public class XFramesView extends XDebugView {
     if (event != SessionEvent.SETTINGS_CHANGED) {
       mySelectedFrameIndex = 0;
       mySelectedStack = null;
+      myVisibleRect = null;
+    }
+    else {
+      myVisibleRect = myFramesList.getVisibleRect();
     }
 
     myListenersEnabled = false;
@@ -339,6 +344,9 @@ public class XFramesView extends XDebugView {
           myNextFrameIndex += stackFrames.size();
           myAllFramesLoaded = last;
           if (last) {
+            if (myVisibleRect != null) {
+              myFramesList.scrollRectToVisible(myVisibleRect);
+            }
             myRunning = false;
             myListenersEnabled = true;
           }