From da36599adc7439600731302524a7b2025222ca4d Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Wed, 9 Nov 2016 18:00:27 +0300 Subject: [PATCH] IDEA-163697 Debugger shows wrong values for TreeMap entries --- .../com/intellij/debugger/settings/RendererConfiguration.java | 4 ++++ .../debugger/ui/tree/render/CustomFieldInplaceEditor.java | 1 + .../debugger/ui/tree/render/EnumerationChildrenRenderer.java | 4 +++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/java/debugger/impl/src/com/intellij/debugger/settings/RendererConfiguration.java b/java/debugger/impl/src/com/intellij/debugger/settings/RendererConfiguration.java index 5821bd92ed2c..034017a49c22 100644 --- a/java/debugger/impl/src/com/intellij/debugger/settings/RendererConfiguration.java +++ b/java/debugger/impl/src/com/intellij/debugger/settings/RendererConfiguration.java @@ -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); + } } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/CustomFieldInplaceEditor.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/CustomFieldInplaceEditor.java index 7ecebbcb3f33..757df1460383 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/CustomFieldInplaceEditor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/CustomFieldInplaceEditor.java @@ -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); } diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/EnumerationChildrenRenderer.java b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/EnumerationChildrenRenderer.java index c2f606d7daa7..ca75cbbbd69f 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/EnumerationChildrenRenderer.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/tree/render/EnumerationChildrenRenderer.java @@ -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;