Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarsten Thoms2017-10-13 19:16:55 +0000
committerAlexander Kurtakov2018-01-03 12:41:01 +0000
commit3df8f29f3617867ae37ef815827c463878f4f218 (patch)
treedfd085dcbf5be22aed9ee52bb583b3d317c71386 /org.eclipse.jface.text/src/org/eclipse/jface/text/source
parente76fdc71f32c1c24eb4a7541357fc4ec9309ec75 (diff)
downloadeclipse.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.java12
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java13
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

Back to the top