Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2018-06-25 22:57:21 +0000
committerLakshmi Shanmugam2018-07-03 06:53:57 +0000
commitd502cb4c54e2f70232c12c94487c9c59164fc133 (patch)
tree22cd3040e701bff2a7937742226fef9ad1a4bbe7 /bundles/org.eclipse.swt
parent2d97bff877801cf8e8caf48f1b7724d28fa4004f (diff)
downloadeclipse.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.java18
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();
}

Back to the top