Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Zarna2009-12-07 16:04:51 +0000
committerTomasz Zarna2009-12-07 16:04:51 +0000
commit8952b2f2bbe4401d893c24d01215df0a9b7f1166 (patch)
tree58ea17d154918c444c261b848e278aa47b50546e
parent76ae3cddf096425658251c967983ff4d8f9f576f (diff)
downloadeclipse.platform.team-8952b2f2bbe4401d893c24d01215df0a9b7f1166.tar.gz
eclipse.platform.team-8952b2f2bbe4401d893c24d01215df0a9b7f1166.tar.xz
eclipse.platform.team-8952b2f2bbe4401d893c24d01215df0a9b7f1166.zip
bug 296580: [compare] Java Compare Editor: 'Copy Current Change from Right to Left' garbles contents
-rw-r--r--bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java30
1 files changed, 19 insertions, 11 deletions
diff --git a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
index 95543c348..ef292c32d 100644
--- a/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
+++ b/bundles/org.eclipse.compare/plugins/org.eclipse.compare/compare/org/eclipse/compare/contentmergeviewer/TextMergeViewer.java
@@ -760,13 +760,7 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
if (document == null)
return;
- // Add a position updater to the document
- document.addPositionCategory(DIFF_RANGE_CATEGORY);
- if (this.fViewer.fPositionUpdater == null)
- this.fViewer.fPositionUpdater= this.fViewer.new ChildPositionUpdater(DIFF_RANGE_CATEGORY);
- else
- document.removePositionUpdater(this.fViewer.fPositionUpdater);
- document.addPositionUpdater(this.fViewer.fPositionUpdater);
+ connectPositionUpdater(document);
// install new document
tp.setRegion(range);
@@ -781,6 +775,15 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
tp.rememberDocument(document);
}
+
+ void connectPositionUpdater(IDocument document) {
+ document.addPositionCategory(DIFF_RANGE_CATEGORY);
+ if (this.fViewer.fPositionUpdater == null)
+ this.fViewer.fPositionUpdater= this.fViewer.new ChildPositionUpdater(DIFF_RANGE_CATEGORY);
+ else
+ document.removePositionUpdater(this.fViewer.fPositionUpdater);
+ document.addPositionUpdater(this.fViewer.fPositionUpdater);
+ }
private void unsetDocument(MergeSourceViewer tp) {
IDocument oldDoc= internalGetDocument(tp);
@@ -2821,9 +2824,9 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
fAncestorContributor.setEncodingIfAbsent(fLeftContributor);
if (!isConfigured) {
- configureSourceViewer(fAncestor.getSourceViewer(), false);
- configureSourceViewer(fLeft.getSourceViewer(), cc.isLeftEditable() && cp.isLeftEditable(input));
- configureSourceViewer(fRight.getSourceViewer(), cc.isRightEditable() && cp.isRightEditable(input));
+ configureSourceViewer(fAncestor.getSourceViewer(), false, null);
+ configureSourceViewer(fLeft.getSourceViewer(), cc.isLeftEditable() && cp.isLeftEditable(input), fLeftContributor);
+ configureSourceViewer(fRight.getSourceViewer(), cc.isRightEditable() && cp.isRightEditable(input), fRightContributor);
isConfigured = true; // configure once
}
@@ -2878,9 +2881,14 @@ public class TextMergeViewer extends ContentMergeViewer implements IAdaptable {
}
- private void configureSourceViewer(SourceViewer sourceViewer, boolean editable) {
+ private void configureSourceViewer(SourceViewer sourceViewer, boolean editable, ContributorInfo contributor) {
setEditable(sourceViewer, editable);
configureTextViewer(sourceViewer);
+ if (editable && contributor != null) {
+ IDocument document = sourceViewer.getDocument();
+ if (document != null)
+ contributor.connectPositionUpdater(document);
+ }
if (!isCursorLinePainterInstalled(sourceViewer))
getSourceViewerDecorationSupport(sourceViewer).install(fPreferenceStore);
}

Back to the top