diff options
author | Karsten Thoms | 2017-10-13 19:16:55 +0000 |
---|---|---|
committer | Alexander Kurtakov | 2018-01-03 12:41:01 +0000 |
commit | 3df8f29f3617867ae37ef815827c463878f4f218 (patch) | |
tree | dfd085dcbf5be22aed9ee52bb583b3d317c71386 /org.eclipse.jface.text/src/org/eclipse/jface/text/source | |
parent | e76fdc71f32c1c24eb4a7541357fc4ec9309ec75 (diff) | |
download | eclipse.platform.text-3df8f29f3617867ae37ef815827c463878f4f218.tar.gz eclipse.platform.text-3df8f29f3617867ae37ef815827c463878f4f218.tar.xz eclipse.platform.text-3df8f29f3617867ae37ef815827c463878f4f218.zip |
Bug 522103 - Refactor usage of StyledText#getOffsetAtLocation(Point)I20180104-2000I20180104-0030I20180103-2000
Refactored usages of StyledText#getOffsetAtLocation(), which throws an
IAE when no character is at the given point. The new method returns -1
as return code, which is evaluated and try-catch blocks are avoided.
Adjusted lower bound for org.eclipse.swt
Change-Id: I1980f14b95926ca0e13044670101caa73ff1dcbd
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
Diffstat (limited to 'org.eclipse.jface.text/src/org/eclipse/jface/text/source')
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java | 12 | ||||
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java | 13 |
2 files changed, 13 insertions, 12 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 0e2beab7300..5aa667f9253 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 @@ -1456,11 +1456,11 @@ public class AnnotationPainter implements IPainter, PaintListener, IAnnotationMo } int widgetOffset; - try { - int widgetClippingStartOffset= fTextWidget.getOffsetAtLocation(new Point(0, event.y)); + int widgetClippingStartOffset= fTextWidget.getOffsetAtPoint(new Point(0, event.y)); + if (widgetClippingStartOffset != -1) { int firstWidgetLine= fTextWidget.getLineAtOffset(widgetClippingStartOffset); widgetOffset= fTextWidget.getOffsetAtLine(firstWidgetLine); - } catch (IllegalArgumentException ex1) { + } else { try { int firstVisibleLine= JFaceTextUtil.getPartialTopIndex(fTextWidget); widgetOffset= fTextWidget.getOffsetAtLine(firstVisibleLine); @@ -1470,11 +1470,11 @@ public class AnnotationPainter implements IPainter, PaintListener, IAnnotationMo } int widgetEndOffset; - try { - int widgetClippingEndOffset= fTextWidget.getOffsetAtLocation(new Point(0, event.y + event.height)); + int widgetClippingEndOffset= fTextWidget.getOffsetAtPoint(new Point(0, event.y + event.height)); + if (widgetClippingEndOffset != -1) { int lastWidgetLine= fTextWidget.getLineAtOffset(widgetClippingEndOffset); widgetEndOffset= fTextWidget.getOffsetAtLine(lastWidgetLine + 1); - } catch (IllegalArgumentException ex1) { + } else { // happens if the editor is not "full", e.g. the last line of the document is visible in the editor try { int lastVisibleLine= JFaceTextUtil.getPartialBottomIndex(fTextWidget); diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java index ee71644cd52..96c48b2dc1a 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java @@ -243,20 +243,21 @@ public class LineNumberRulerColumn implements IVerticalRulerColumn { if (relativePosition.x < 0) offset= lineInfo.getOffset(); else { - try { - int widgetOffset= fCachedTextWidget.getOffsetAtLocation(relativePosition); + int widgetOffset= fCachedTextWidget.getOffsetAtPoint(relativePosition); + if (widgetOffset != -1) { Point p= fCachedTextWidget.getLocationAtOffset(widgetOffset); - if (p.x > relativePosition.x) + if (p.x > relativePosition.x) { widgetOffset--; + } // Convert to model offset if (fCachedTextViewer instanceof ITextViewerExtension5) { ITextViewerExtension5 extension= (ITextViewerExtension5)fCachedTextViewer; offset= extension.widgetOffset2ModelOffset(widgetOffset); - } else + } else { offset= widgetOffset + fCachedTextViewer.getVisibleRegion().getOffset(); - - } catch (IllegalArgumentException ex) { + } + } else { int lineEndOffset= lineInfo.getOffset() + lineInfo.getLength(); // Convert to widget offset |