Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMickael Istria2019-04-29 12:50:05 +0000
committerMickael Istria - away until Apr 22nd2019-04-29 14:51:37 +0000
commitb26b8782569616fcace8dcbd47a61c13ae694513 (patch)
tree84fd60f11a0c7debe839f9da112df36572b987ca /org.eclipse.jface.text
parent54ad465f841c2c09437070d0234d1e3166301b89 (diff)
downloadeclipse.platform.text-b26b8782569616fcace8dcbd47a61c13ae694513.tar.gz
eclipse.platform.text-b26b8782569616fcace8dcbd47a61c13ae694513.tar.xz
eclipse.platform.text-b26b8782569616fcace8dcbd47a61c13ae694513.zip
Bug 546706 - multi-line code minings rendered erroneouslyI20190429-1800
Change-Id: I1a89962176d2583551e4fcd28b2511a69b62aa23 Signed-off-by: Mickael Istria <mistria@redhat.com>
Diffstat (limited to 'org.eclipse.jface.text')
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/AbstractInlinedAnnotation.java10
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java11
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java2
3 files changed, 16 insertions, 7 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/AbstractInlinedAnnotation.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/AbstractInlinedAnnotation.java
index 8bc3c312b9a..28e80553d42 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/AbstractInlinedAnnotation.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/AbstractInlinedAnnotation.java
@@ -28,6 +28,7 @@ import org.eclipse.jface.text.Position;
import org.eclipse.jface.text.Region;
import org.eclipse.jface.text.source.Annotation;
import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.jface.text.source.projection.ProjectionViewer;
/**
* Abstract class for inlined annotation.
@@ -188,6 +189,15 @@ public abstract class AbstractInlinedAnnotation extends Annotation {
return support.isInVisibleLines(getPosition().getOffset());
}
+ boolean isFirstVisibleOffset(int widgetOffset) {
+ if (fViewer instanceof ProjectionViewer) {
+ IRegion widgetRange= ((ProjectionViewer) fViewer).modelRange2WidgetRange(new Region(position.getOffset(), position.getLength()));
+ return widgetOffset == widgetRange.getOffset();
+ } else {
+ return position.getOffset() == widgetOffset;
+ }
+ }
+
/**
* Return whether the given offset is in visible lines.
*
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
index 5deaad5c5d2..719ff79debe 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/InlinedAnnotationDrawingStrategy.java
@@ -32,16 +32,15 @@ import org.eclipse.jface.text.source.AnnotationPainter.IDrawingStrategy;
class InlinedAnnotationDrawingStrategy implements IDrawingStrategy {
@Override
- public void draw(Annotation annotation, GC gc, StyledText textWidget, int widgetoffset, int length, Color color) {
+ public void draw(Annotation annotation, GC gc, StyledText textWidget, int widgetOffset, int length, Color color) {
if (!(annotation instanceof AbstractInlinedAnnotation)) {
return;
}
- if (!((AbstractInlinedAnnotation) annotation).isInVisibleLines()) {
- // The annotation is not in visible lines, don't draw it.
- return;
+ AbstractInlinedAnnotation inlinedAnnotation= (AbstractInlinedAnnotation) annotation;
+ if (inlinedAnnotation.isInVisibleLines() && inlinedAnnotation.isFirstVisibleOffset(widgetOffset)) {
+ draw((AbstractInlinedAnnotation) annotation, gc, textWidget, widgetOffset, length,
+ color);
}
- draw((AbstractInlinedAnnotation) annotation, gc, textWidget, widgetoffset, length,
- color);
}
/**
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
index 23d4f706805..a7a898b7de9 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/inlined/LineContentAnnotation.java
@@ -151,7 +151,7 @@ public class LineContentAnnotation extends AbstractInlinedAnnotation {
}
boolean drawRightToPreviousChar(int widgetOffset) {
- return getTextWidget().getLineAtOffset(widgetOffset) == getTextWidget().getLineAtOffset(widgetOffset - 1);
+ return widgetOffset > 0 && getTextWidget().getLineAtOffset(widgetOffset) == getTextWidget().getLineAtOffset(widgetOffset - 1);
}
}

Back to the top