IDEA-134432 Set value collapses the whole tree

This commit is contained in:
Egor.Ushakov
2014-12-29 19:57:10 +03:00
parent 840b66255a
commit ac5e81d816
2 changed files with 15 additions and 7 deletions
@@ -55,7 +55,7 @@ import java.util.ArrayList;
import java.util.List;
public class XDebugSessionTab extends DebuggerSessionTabBase {
private static final DataKey<XDebugSessionTab> TAB_KEY = DataKey.create("XDebugSessionTab");
public static final DataKey<XDebugSessionTab> TAB_KEY = DataKey.create("XDebugSessionTab");
private XWatchesViewImpl myWatchesView;
private final List<XDebugView> myViews = new ArrayList<XDebugView>();
@@ -16,6 +16,7 @@
package com.intellij.xdebugger.impl.ui.tree;
import com.intellij.codeInsight.hint.HintManager;
import com.intellij.ide.DataManager;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.ui.Messages;
import com.intellij.ui.AppUIUtil;
@@ -24,6 +25,7 @@ import com.intellij.xdebugger.frame.XValueModifier;
import com.intellij.xdebugger.frame.presentation.XValuePresentation;
import com.intellij.xdebugger.impl.XDebuggerUtilImpl;
import com.intellij.xdebugger.impl.breakpoints.XExpressionImpl;
import com.intellij.xdebugger.impl.ui.XDebugSessionTab;
import com.intellij.xdebugger.impl.ui.XDebuggerUIConstants;
import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl;
import com.intellij.xdebugger.impl.ui.tree.nodes.XValuePresentationUtil;
@@ -104,12 +106,14 @@ public class SetValueInplaceEditor extends XDebuggerTreeInplaceEditor {
myModifier.setValue(myExpressionEditor.getExpression().getExpression(), new XValueModifier.XModificationCallback() {
@Override
public void valueModified() {
AppUIUtil.invokeOnEdt(new Runnable() {
@Override
public void run() {
myTree.rebuildAndRestore(treeState);
}
});
if (isDetachedTree(myTree)) {
AppUIUtil.invokeOnEdt(new Runnable() {
@Override
public void run() {
myTree.rebuildAndRestore(treeState);
}
});
}
XDebuggerUtilImpl.rebuildAllSessionsViews(getProject());
}
@@ -131,6 +135,10 @@ public class SetValueInplaceEditor extends XDebuggerTreeInplaceEditor {
});
XDebuggerUtilImpl.rebuildAllSessionsViews(getProject());
}
boolean isDetachedTree(XDebuggerTree tree) {
return XDebugSessionTab.TAB_KEY.getData(DataManager.getInstance().getDataContext(tree)) == null;
}
});
super.doOKAction();
}