From 8e37cda74c9ff652594791ac6c99b7e23fadcc1e Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Tue, 26 Apr 2016 18:57:47 +0300 Subject: [PATCH] IDEA-23075 - do not substitute slash-r on value edit --- .../src/com/intellij/ui/EditorTextField.java | 4 +++ .../xdebugger/impl/ui/TextViewer.java | 25 +++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java index 2c6747501971..7ffd5f9fbbfa 100644 --- a/platform/platform-impl/src/com/intellij/ui/EditorTextField.java +++ b/platform/platform-impl/src/com/intellij/ui/EditorTextField.java @@ -574,6 +574,10 @@ public class EditorTextField extends NonOpaquePanel implements DocumentListener, myIsViewer = !enabled; } + public boolean isViewer() { + return myIsViewer; + } + @Override public Color getBackground() { Color color = getBackgroundColor(isEnabled(), EditorColorsUtil.getGlobalOrDefaultColorScheme()); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java index bd32c766e0d8..84590c7c878c 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java @@ -18,6 +18,7 @@ package com.intellij.xdebugger.impl.ui; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.EditorFactory; import com.intellij.openapi.editor.ex.EditorEx; +import com.intellij.openapi.editor.impl.EditorFactoryImpl; import com.intellij.openapi.fileTypes.FileTypes; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.text.StringUtil; @@ -31,7 +32,7 @@ public final class TextViewer extends EditorTextField { private final boolean myEmbeddedIntoDialogWrapper; public TextViewer(@NotNull String initialText, @NotNull Project project, boolean viewer) { - this(createDocument(initialText), project, true, viewer); + this(createDocument(initialText, viewer), project, true, viewer); } public TextViewer(@NotNull String initialText, @NotNull Project project) { @@ -45,17 +46,25 @@ public final class TextViewer extends EditorTextField { setFontInheritedFromLAF(false); } - private static Document createDocument(@NotNull String initialText) { - final Document document = EditorFactory.getInstance().createDocument(StringUtil.convertLineSeparators(initialText)); - //if (document instanceof DocumentImpl) { - // ((DocumentImpl)document).setAcceptSlashR(true); - //} - return document; + private static Document createDocument(@NotNull String initialText, boolean viewer) { + if (needSlashRSupport(initialText, viewer)){ + return ((EditorFactoryImpl)EditorFactory.getInstance()).createDocument(initialText, true, false); + } + else { + return EditorFactory.getInstance().createDocument(StringUtil.convertLineSeparators(initialText)); + } } @Override public void setText(@Nullable String text) { - super.setText(text != null ? StringUtil.convertLineSeparators(text) : null); + if (text != null && !needSlashRSupport(text, isViewer())) { + text = StringUtil.convertLineSeparators(text); + } + super.setText(text); + } + + private static boolean needSlashRSupport(String text, boolean viewer) { + return !viewer && text.contains("\r"); } @Override