IDEA-23075 - do not substitute slash-r on value edit
authorEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 26 Apr 2016 15:57:47 +0000 (18:57 +0300)
committerEgor.Ushakov <egor.ushakov@jetbrains.com>
Tue, 26 Apr 2016 15:59:18 +0000 (18:59 +0300)
platform/platform-impl/src/com/intellij/ui/EditorTextField.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/TextViewer.java

index 2c6747501971d58bfe97dad6daa0b4011b23fc08..7ffd5f9fbbfa4d7824c1f5b8b8add147b66a7d89 100644 (file)
@@ -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());
index bd32c766e0d8cfc6d2b8aaeaa3f5318600a3b48c..84590c7c878ce34bad50af0f09045e3f647eede3 100644 (file)
@@ -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