[355008] Position updater not updating Semantic Highlighting Positions properly
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
index c2a2b6e..093ec05 100644
--- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
+++ b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/internal/style/SemanticHighlightingPresenter.java
@@ -98,14 +98,19 @@
int length= position.getLength();
int end= offset + length;
- if (offset > eventEnd || (offset == eventOffset && i > 0 && positions[i - 1].overlapsWith(offset, length)))
+ if (offset > eventEnd)
updateWithPrecedingEvent(position, event);
else if (end < eventOffset) {
// do nothing
// updateWithSucceedingEvent(position, event);
}
- else if (offset <= eventOffset && end >= eventEnd)
- updateWithIncludedEvent(position, event);
+ else if (offset <= eventOffset && end >= eventEnd) {
+ // Previous region updated to overlap the beginning of this one; just bump the start.
+ if (i > 0 && positions[i - 1].offset + positions[i - 1].length > offset)
+ updateWithPrecedingEvent(position, event);
+ else
+ updateWithIncludedEvent(position, event);
+ }
else if (offset <= eventOffset)
updateWithOverEndEvent(position, event);
else if (end >= eventEnd)