IDEA-163697 Debugger shows wrong values for TreeMap entries

This commit is contained in:
Egor.Ushakov
2016-11-09 18:01:32 +03:00
parent 7de46bd758
commit da36599adc
3 changed files with 8 additions and 1 deletions
@@ -129,4 +129,8 @@ public class RendererConfiguration implements Cloneable, JDOMExternalizable {
public int getRendererCount() {
return myRepresentationNodes.size();
}
public boolean contains(NodeRenderer renderer) {
return myRepresentationNodes.contains(renderer);
}
}
@@ -86,6 +86,7 @@ public class CustomFieldInplaceEditor extends XDebuggerTreeInplaceEditor {
Renderer lastRenderer = descriptor.getLastRenderer();
if (lastRenderer instanceof CompoundNodeRenderer &&
NodeRendererSettings.getInstance().getCustomRenderers().contains((NodeRenderer)lastRenderer) &&
!(((CompoundNodeRenderer)lastRenderer).getChildrenRenderer() instanceof ExpressionChildrenRenderer)) {
((CompoundNodeRenderer)lastRenderer).setChildrenRenderer(enumerationChildrenRenderer);
}
@@ -22,6 +22,7 @@ import com.intellij.debugger.engine.evaluation.EvaluateException;
import com.intellij.debugger.engine.evaluation.EvaluationContext;
import com.intellij.debugger.engine.evaluation.TextWithImports;
import com.intellij.debugger.impl.descriptors.data.UserExpressionData;
import com.intellij.debugger.settings.NodeRendererSettings;
import com.intellij.debugger.ui.impl.watch.ValueDescriptorImpl;
import com.intellij.debugger.ui.tree.*;
import com.intellij.openapi.util.InvalidDataException;
@@ -149,7 +150,8 @@ public final class EnumerationChildrenRenderer extends TypeRenderer implements C
@Nullable
public static EnumerationChildrenRenderer getCurrent(ValueDescriptorImpl valueDescriptor) {
Renderer renderer = valueDescriptor.getLastRenderer();
if (renderer instanceof CompoundNodeRenderer) {
if (renderer instanceof CompoundNodeRenderer &&
NodeRendererSettings.getInstance().getCustomRenderers().contains((NodeRenderer)renderer)) {
ChildrenRenderer childrenRenderer = ((CompoundNodeRenderer)renderer).getChildrenRenderer();
if (childrenRenderer instanceof EnumerationChildrenRenderer) {
return (EnumerationChildrenRenderer)childrenRenderer;