diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java index cd6d6455e9dd..3f9f6ca0f2df 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java @@ -55,7 +55,7 @@ import java.util.ArrayList; import java.util.List; public class XDebugSessionTab extends DebuggerSessionTabBase { - private static final DataKey TAB_KEY = DataKey.create("XDebugSessionTab"); + public static final DataKey TAB_KEY = DataKey.create("XDebugSessionTab"); private XWatchesViewImpl myWatchesView; private final List myViews = new ArrayList(); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/SetValueInplaceEditor.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/SetValueInplaceEditor.java index 4f1d43865a52..96acb2134b4d 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/SetValueInplaceEditor.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/SetValueInplaceEditor.java @@ -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(); }