1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 09:46:02 +02:00

Fix for bugzilla bug 24648 - Editor displaying text in reverse on Eclipse 2.1 platform

This commit is contained in:
Judy N. Green 2002-12-11 15:37:31 +00:00
parent d783a4c703
commit 4d7d5904b5
2 changed files with 138 additions and 123 deletions

View file

@ -1,3 +1,11 @@
2002-12-11 Judy N Green
* src/org/eclipse/cdt/internal/ui/text/BufferedDocumentScanner.java
Fix for the backwards display of typed text when the CDT ran within
Eclipse 2.1.
Patch submitted by Ed Burnette.
Tested on M1, 2.1 (20021204 integration build) and 2.0.1
Bugzilla Bug 24648
2002-12-11 Alain Magloire
Fix PR 27937. NPE in the C Editor preference page.

View file

@ -45,19 +45,24 @@ public final class BufferedDocumentScanner implements ICharacterScanner {
}
/**
* Fills the buffer with the contens of the document starting at the given offset.
* Fills the buffer with the contents of the document starting at the given offset.
*
* @param offset the document offset at which the buffer starts
*/
private final void updateBuffer(int offset) {
fBufferOffset= offset;
// Clamp at start of the file document range
if (offset < 0)
offset = 0;
if (fBufferOffset + fBuffer.length > fRangeLength)
fBufferLength= fRangeLength - fBufferOffset;
else
fBufferOffset= offset;
fBufferLength= fBuffer.length;
// assert(offset >= fRangeOffset && offset < fRangeOffset + fRangeLength);
if (fBufferOffset + fBufferLength > fRangeOffset + fRangeLength)
fBufferLength= fRangeOffset + fRangeLength - fBufferOffset;
try {
final String content= fDocument.get(fBufferOffset, fBufferLength);
content.getChars(0, fBufferLength, fBuffer, 0);
@ -79,6 +84,10 @@ public final class BufferedDocumentScanner implements ICharacterScanner {
fRangeOffset= offset;
fRangeLength= length;
// Clamp at end of the real document
if (fRangeLength > fDocument.getLength())
fRangeLength = fDocument.getLength();
String[] delimiters= document.getLegalLineDelimiters();
fDelimiters= new char[delimiters.length][];
for (int i= 0; i < delimiters.length; i++)
@ -93,8 +102,8 @@ public final class BufferedDocumentScanner implements ICharacterScanner {
*/
public final int read() {
if (fOffset == fBufferLength) {
if (fBufferOffset + fBufferLength == fDocument.getLength())
if (fOffset >= fBufferLength) {
if (fBufferOffset + fBufferLength >= fRangeOffset + fRangeLength)
return EOF;
else {
updateBuffer(fBufferOffset + fBufferLength);
@ -110,12 +119,12 @@ public final class BufferedDocumentScanner implements ICharacterScanner {
*/
public final void unread() {
if (fOffset == 0) {
if (fBufferOffset == fRangeOffset) {
if (fOffset <= 0) {
if (fBufferOffset <= fRangeOffset) {
// error: BOF
} else {
updateBuffer(fBufferOffset - fBuffer.length);
fOffset= fBuffer.length - 1;
fOffset = fBuffer.length - 1; // should always be a valid place
}
} else {
--fOffset;
@ -148,5 +157,3 @@ public final class BufferedDocumentScanner implements ICharacterScanner {
}
}