diff options
author | zeljko.zurzic | 2019-04-22 09:11:47 +0000 |
---|---|---|
committer | Andrey Loskutov | 2019-04-23 12:55:31 +0000 |
commit | 54ad465f841c2c09437070d0234d1e3166301b89 (patch) | |
tree | 46ab9800da515fff53bf46bd1ac97c0a741e2935 | |
parent | 07d217568ed42667a08d1c1460c8d4c364a9d361 (diff) | |
download | eclipse.platform.text-I20190427-1800.tar.gz eclipse.platform.text-I20190427-1800.tar.xz eclipse.platform.text-I20190427-1800.zip |
Bug 546594 - GUI freeze when using Compare Viewer with large filesI20190429-0240I20190428-1800I20190427-1800I20190426-1800I20190425-1800I20190425-0030I20190424-1800I20190423-1800
Changes the line tracker used for DocumentClone.
If the line delimiters are equal to the default ones, use the
DefaultLineTracker instead of the ConfigurableLineTracker - for
performance improvement
Change-Id: I9b6b570d87eade205f4984f04001ec8170f09c3e
Signed-off-by: zeljko.zurzic <zeljko.zurzic@amiq.com>
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java index ca3d3b4cdcb..84493304b13 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java @@ -71,7 +71,19 @@ class DocumentClone extends AbstractDocument { public DocumentClone(String content, String[] lineDelimiters) { super(); setTextStore(new StringTextStore(content)); - ConfigurableLineTracker tracker= new ConfigurableLineTracker(lineDelimiters); + + boolean hasDefaultDelims= lineDelimiters == null; + if (!hasDefaultDelims && DefaultLineTracker.DELIMITERS.length == lineDelimiters.length) { + hasDefaultDelims= true; + for (int i= 0; i < lineDelimiters.length; i++) { + if (DefaultLineTracker.DELIMITERS[i] != lineDelimiters[i]) { + hasDefaultDelims= false; + break; + } + } + } + + ILineTracker tracker= hasDefaultDelims ? new DefaultLineTracker() : new ConfigurableLineTracker(lineDelimiters); setLineTracker(tracker); getTracker().set(content); completeInitialization(); |