diff options
author | Kai Maetzel | 2004-03-23 10:38:06 +0000 |
---|---|---|
committer | Kai Maetzel | 2004-03-23 10:38:06 +0000 |
commit | d57a440730aa0e08f2deb7fd47e44930a7965324 (patch) | |
tree | 5161539886a8d340317c3dd30947a16e34e57502 /org.eclipse.text/projection/org/eclipse/jface | |
parent | 65b441a58bbd578836806a06bf73bf026f07a033 (diff) | |
download | eclipse.platform.text-d57a440730aa0e08f2deb7fd47e44930a7965324.tar.gz eclipse.platform.text-d57a440730aa0e08f2deb7fd47e44930a7965324.tar.xz eclipse.platform.text-d57a440730aa0e08f2deb7fd47e44930a7965324.zip |
bug fixing
Diffstat (limited to 'org.eclipse.text/projection/org/eclipse/jface')
-rw-r--r-- | org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java index 0c90505eb73..88aec1f148b 100644 --- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java +++ b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java @@ -14,7 +14,6 @@ import java.util.ArrayList; import java.util.List; import org.eclipse.jface.text.AbstractDocument; -import org.eclipse.jface.text.Assert; import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.BadPositionCategoryException; import org.eclipse.jface.text.DefaultLineTracker; @@ -225,6 +224,16 @@ public class ProjectionDocument extends AbstractDocument { left= fragment; } + int offsetInSlave= 0; + if (index > 0) { + Fragment fragment= (Fragment) fragments[index - 1]; + Segment segment= fragment.segment; + offsetInSlave= segment.getOffset() + segment.getLength(); + } + + ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, offsetInSlave, 0, fMasterDocument.get(offsetInMaster, lengthInMaster)); + super.fireDocumentAboutToBeChanged(event); + // check for neighboring fragment if (left != null && right != null) { @@ -253,11 +262,6 @@ public class ProjectionDocument extends AbstractDocument { segment.markForStretch(); } - int offsetInSlave= fMapping.toImageOffset(offsetInMaster); - Assert.isTrue(offsetInSlave != -1); - - ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, offsetInSlave, 0, fMasterDocument.get(offsetInMaster, lengthInMaster)); - super.fireDocumentAboutToBeChanged(event); getTracker().replace(event.getOffset(), event.getLength(), event.getText()); super.fireDocumentChanged(event); @@ -307,6 +311,9 @@ public class ProjectionDocument extends AbstractDocument { if (fragment == null) throw new IllegalArgumentException(); + ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, imageRegion.getOffset(), imageRegion.getLength(), null); + super.fireDocumentAboutToBeChanged(event); + if (fragment.getOffset() == offsetInMaster) { fragment.setOffset(offsetInMaster + lengthInMaster); fragment.setLength(fragment.getLength() - lengthInMaster); @@ -338,8 +345,6 @@ public class ProjectionDocument extends AbstractDocument { fragment.segment.setLength(imageRegion.getOffset() - fragment.segment.getOffset()); } - ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, imageRegion.getOffset(), imageRegion.getLength(), null); - super.fireDocumentAboutToBeChanged(event); getTracker().replace(event.getOffset(), event.getLength(), event.getText()); super.fireDocumentChanged(event); @@ -716,7 +721,8 @@ public class ProjectionDocument extends AbstractDocument { public void replaceMasterDocumentRanges(int offsetInMaster, int lengthInMaster) throws BadLocationException { try { - int previousLength= fMapping.getImageLength(); + ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, 0, fMapping.getImageLength(), fMasterDocument.get(offsetInMaster, lengthInMaster)); + super.fireDocumentAboutToBeChanged(event); Position[] fragments= getFragments(); for (int i= 0; i < fragments.length; i++) { @@ -731,11 +737,7 @@ public class ProjectionDocument extends AbstractDocument { fragment.segment= segment; fMasterDocument.addPosition(fFragmentsCategory, fragment); addPosition(fSegmentsCategory, segment); -// segment.setLength(lengthInMaster); - - ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, 0, previousLength, fMasterDocument.get(offsetInMaster, lengthInMaster)); - super.fireDocumentAboutToBeChanged(event); getTracker().set(fMasterDocument.get(offsetInMaster, lengthInMaster)); super.fireDocumentChanged(event); |