diff options
author | Dani Megert | 2003-11-20 15:34:08 +0000 |
---|---|---|
committer | Dani Megert | 2003-11-20 15:34:08 +0000 |
commit | 8cb3bf00b59e48aacf1617bb1b26fc99a9c2fde3 (patch) | |
tree | a16d6c1059e9175c23dac91d7653e4c24ac860e1 /org.eclipse.jface.text | |
parent | 46c6f18b01c4a421c3afe26f9cdbacce6524b21d (diff) | |
download | eclipse.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.java | 25 |
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)); + } } } |