diff options
author | Mickael Istria | 2018-06-25 22:57:21 +0000 |
---|---|---|
committer | Lakshmi Shanmugam | 2018-07-03 06:53:57 +0000 |
commit | d502cb4c54e2f70232c12c94487c9c59164fc133 (patch) | |
tree | 22cd3040e701bff2a7937742226fef9ad1a4bbe7 /bundles/org.eclipse.swt | |
parent | 2d97bff877801cf8e8caf48f1b7724d28fa4004f (diff) | |
download | eclipse.platform.swt-d502cb4c54e2f70232c12c94487c9c59164fc133.tar.gz eclipse.platform.swt-d502cb4c54e2f70232c12c94487c9c59164fc133.tar.xz eclipse.platform.swt-d502cb4c54e2f70232c12c94487c9c59164fc133.zip |
Bug 536234 - [syntax highlighting] single char update not rendered
Change-Id: Ib8fcfc46e8e7ce2716e742c15da9cbb4338807c8
Signed-off-by: Mickael Istria <mistria@redhat.com>
Diffstat (limited to 'bundles/org.eclipse.swt')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java index 651869e8b9..cba08a72c0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java @@ -10156,24 +10156,24 @@ private SortedSet<Integer> computeModifiedLines(int[] referenceRanges, StyleRang while (currentOffset < content.getCharCount() && (referenceRangeIndex < referenceStyles.length || newRangeIndex < newRanges.length)) { int nextMilestoneOffset = Integer.MAX_VALUE; // next new range start/end after current offset - while (referenceRangeIndex < referenceStyles.length && lastRangeOffset(referenceRanges, referenceRangeIndex) < currentOffset) { + while (referenceRangeIndex < referenceStyles.length && endRangeOffset(referenceRanges, referenceRangeIndex) <= currentOffset) { referenceRangeIndex++; } StyleRange referenceStyleAtCurrentOffset = defaultStyle; if (isInRange(referenceRanges, referenceRangeIndex, currentOffset)) { // has styling referenceStyleAtCurrentOffset = referenceStyles[referenceRangeIndex]; - nextMilestoneOffset = Math.min(nextMilestoneOffset, lastRangeOffset(referenceRanges, referenceRangeIndex) + 1); //just after current range + nextMilestoneOffset = Math.min(nextMilestoneOffset, endRangeOffset(referenceRanges, referenceRangeIndex)); } else if (referenceRangeIndex + 1 < referenceStyles.length) { // no range, default styling nextMilestoneOffset = referenceRanges[2 * (referenceRangeIndex + 1)]; // beginning of next range } - while (newRangeIndex < newStyles.length && lastRangeOffset(newRanges, newRangeIndex) < currentOffset) { + while (newRangeIndex < newStyles.length && endRangeOffset(newRanges, newRangeIndex) <= currentOffset) { newRangeIndex++; } StyleRange newStyleAtCurrentOffset = defaultStyle; if (isInRange(newRanges, newRangeIndex, currentOffset)) { newStyleAtCurrentOffset = newStyles[newRangeIndex]; - nextMilestoneOffset = Math.min(nextMilestoneOffset, lastRangeOffset(newRanges, newRangeIndex) + 1); + nextMilestoneOffset = Math.min(nextMilestoneOffset, endRangeOffset(newRanges, newRangeIndex)); } else if (newRangeIndex + 1 < newStyles.length) { nextMilestoneOffset = newRanges[2 * (newRangeIndex + 1)]; } @@ -10207,10 +10207,16 @@ private boolean isInRange(int[] ranges, int styleIndex, int offset) { } int start = ranges[2 * styleIndex]; int length = ranges[2 * styleIndex + 1]; - return offset >= start && offset <= start + length; + return offset >= start && offset < start + length; } -private int lastRangeOffset(int[] ranges, int styleIndex) { +/** + * The offset on which the range ends (excluded) + * @param ranges + * @param styleIndex + * @return + */ +private int endRangeOffset(int[] ranges, int styleIndex) { if (styleIndex < 0 || 2 * styleIndex > ranges.length) { throw new IllegalArgumentException(); } |