Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2003-11-20 15:34:08 +0000
committerDani Megert2003-11-20 15:34:08 +0000
commit8cb3bf00b59e48aacf1617bb1b26fc99a9c2fde3 (patch)
treea16d6c1059e9175c23dac91d7653e4c24ac860e1 /org.eclipse.jface.text
parent46c6f18b01c4a421c3afe26f9cdbacce6524b21d (diff)
downloadeclipse.platform.text-8cb3bf00b59e48aacf1617bb1b26fc99a9c2fde3.tar.gz
eclipse.platform.text-8cb3bf00b59e48aacf1617bb1b26fc99a9c2fde3.tar.xz
eclipse.platform.text-8cb3bf00b59e48aacf1617bb1b26fc99a9c2fde3.zip
Fixed bug 47007: respect layer when drawing background highlight for annotations
Diffstat (limited to 'org.eclipse.jface.text')
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java25
1 files changed, 16 insertions, 9 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
index 87d8dd5e1e4..867d1539855 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java
@@ -287,16 +287,23 @@ public class AnnotationPainter implements IPainter, PaintListener, IAnnotationMo
*/
public synchronized void applyTextPresentation(TextPresentation tp) {
IRegion region= tp.getExtent();
-
- for (Iterator iter= fHighlightedDecorations.iterator(); iter.hasNext();) {
-
- Decoration pp = (Decoration)iter.next();
- Position p= pp.fPosition;
- if (!fSourceViewer.overlapsWithVisibleRegion(p.offset, p.length))
- continue;
- if (p.getOffset() + p.getLength() >= region.getOffset() && region.getOffset() + region.getLength() > p.getOffset())
- tp.mergeStyleRange(new StyleRange(p.getOffset(), p.getLength(), null, pp.fColor));
+ for (int layer= 0, maxLayer= 1; layer < maxLayer; layer++) {
+
+ for (Iterator iter= fHighlightedDecorations.iterator(); iter.hasNext();) {
+
+ Decoration pp = (Decoration)iter.next();
+ maxLayer= Math.max(maxLayer, pp.fLayer + 1); // dynamically update layer maximum
+ if (pp.fLayer != layer) // wrong layer: skip annotation
+ continue;
+
+ Position p= pp.fPosition;
+ if (!fSourceViewer.overlapsWithVisibleRegion(p.offset, p.length))
+ continue;
+
+ if (p.getOffset() + p.getLength() >= region.getOffset() && region.getOffset() + region.getLength() > p.getOffset())
+ tp.mergeStyleRange(new StyleRange(p.getOffset(), p.getLength(), null, pp.fColor));
+ }
}
}

Back to the top