Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jface.text/META-INF/MANIFEST.MF2
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java39
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java30
-rw-r--r--org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java22
-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
-rw-r--r--org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF1
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java27
-rw-r--r--org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java2
9 files changed, 69 insertions, 79 deletions
diff --git a/org.eclipse.jface.text/META-INF/MANIFEST.MF b/org.eclipse.jface.text/META-INF/MANIFEST.MF
index a93103f3ce4..be9cac0084c 100644
--- a/org.eclipse.jface.text/META-INF/MANIFEST.MF
+++ b/org.eclipse.jface.text/META-INF/MANIFEST.MF
@@ -35,7 +35,7 @@ Export-Package:
Require-Bundle:
org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)",
org.eclipse.text;bundle-version="[3.5.0,4.0.0)";visibility:=reexport,
- org.eclipse.swt;bundle-version="[3.103.0,4.0.0)",
+ org.eclipse.swt;bundle-version="[3.107.0,4.0.0)",
org.eclipse.jface;bundle-version="[3.5.0,4.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.ibm.icu.text
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java
index f0518cf6769..d03195acc2f 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextUtil.java
@@ -420,30 +420,27 @@ public final class JFaceTextUtil {
* @since 3.5
*/
public static int getOffsetForCursorLocation(ITextViewer viewer) {
+ StyledText text= viewer.getTextWidget();
+ if (text == null || text.isDisposed())
+ return -1;
- try {
- StyledText text= viewer.getTextWidget();
- if (text == null || text.isDisposed())
- return -1;
-
- Display display= text.getDisplay();
- Point absolutePosition= display.getCursorLocation();
- Point relativePosition= text.toControl(absolutePosition);
-
- int widgetOffset= text.getOffsetAtLocation(relativePosition);
- Point p= text.getLocationAtOffset(widgetOffset);
- if (p.x > relativePosition.x)
- widgetOffset--;
-
- if (viewer instanceof ITextViewerExtension5) {
- ITextViewerExtension5 extension= (ITextViewerExtension5)viewer;
- return extension.widgetOffset2ModelOffset(widgetOffset);
- }
-
- return widgetOffset + viewer.getVisibleRegion().getOffset();
+ Display display= text.getDisplay();
+ Point absolutePosition= display.getCursorLocation();
+ Point relativePosition= text.toControl(absolutePosition);
- } catch (IllegalArgumentException e) {
+ int widgetOffset= text.getOffsetAtPoint(relativePosition);
+ if (widgetOffset == -1) {
return -1;
}
+ Point p= text.getLocationAtOffset(widgetOffset);
+ if (p.x > relativePosition.x)
+ widgetOffset--;
+
+ if (viewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension= (ITextViewerExtension5)viewer;
+ return extension.widgetOffset2ModelOffset(widgetOffset);
+ }
+
+ return widgetOffset + viewer.getVisibleRegion().getOffset();
}
}
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java
index 45ddb92c4bf..9a3aa225743 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java
@@ -259,25 +259,21 @@ class TextViewerHoverManager extends AbstractHoverInformationControlManager impl
* @return the document offset corresponding to the given point
*/
private int computeOffsetAtLocation(int x, int y) {
-
- try {
-
- StyledText styledText= fTextViewer.getTextWidget();
- int widgetOffset= styledText.getOffsetAtLocation(new Point(x, y));
- Point p= styledText.getLocationAtOffset(widgetOffset);
- if (p.x > x)
- widgetOffset--;
-
- if (fTextViewer instanceof ITextViewerExtension5) {
- ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer;
- return extension.widgetOffset2ModelOffset(widgetOffset);
- }
-
- return widgetOffset + fTextViewer._getVisibleRegionOffset();
-
- } catch (IllegalArgumentException e) {
+ StyledText styledText= fTextViewer.getTextWidget();
+ int widgetOffset= styledText.getOffsetAtPoint(new Point(x, y));
+ if (widgetOffset == -1) {
return -1;
}
+ Point p= styledText.getLocationAtOffset(widgetOffset);
+ if (p.x > x)
+ widgetOffset--;
+
+ if (fTextViewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer;
+ return extension.widgetOffset2ModelOffset(widgetOffset);
+ }
+
+ return widgetOffset + fTextViewer._getVisibleRegionOffset();
}
@Override
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
index 475b82a2abe..06a2ceeca06 100644
--- a/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
+++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/WhitespaceCharacterPainter.java
@@ -250,13 +250,10 @@ public class WhitespaceCharacterPainter implements IPainter, PaintListener {
// Y-coordinate of line
int y= fTextWidget.getLinePixel(line);
// compute first visible char offset
- int startOffset;
- try {
- startOffset= fTextWidget.getOffsetAtLocation(new Point(x, y)) - 1;
- if (startOffset - 2 <= lineOffset) {
- startOffset= lineOffset;
- }
- } catch (IllegalArgumentException iae) {
+ int startOffset = fTextWidget.getOffsetAtPoint(new Point(x, y)) - 1;
+ if (startOffset == -1) {
+ startOffset= lineOffset;
+ } else if (startOffset - 2 <= lineOffset) {
startOffset= lineOffset;
}
// compute last visible char offset
@@ -265,12 +262,11 @@ public class WhitespaceCharacterPainter implements IPainter, PaintListener {
// line end is visible
endOffset= lineEndOffset;
} else {
- try {
- endOffset= fTextWidget.getOffsetAtLocation(new Point(x + w - 1, y)) + 1;
- if (endOffset + 2 >= lineEndOffset) {
- endOffset= lineEndOffset;
- }
- } catch (IllegalArgumentException iae) {
+ endOffset= fTextWidget.getOffsetAtPoint(new Point(x + w - 1, y)) + 1;
+ if (endOffset == -1) {
+ endOffset= lineEndOffset;
+ }
+ if (endOffset + 2 >= lineEndOffset) {
endOffset= lineEndOffset;
}
}
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
diff --git a/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF b/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
index 4ab2c9ddb1d..a10ac23747e 100644
--- a/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
+++ b/org.eclipse.ui.workbench.texteditor/META-INF/MANIFEST.MF
@@ -26,6 +26,7 @@ Require-Bundle:
org.eclipse.compare.core;bundle-version="[3.5.0,4.0.0)",
org.eclipse.core.expressions;bundle-version="[3.4.100,4.0.0)",
org.eclipse.jface.text;bundle-version="[3.8.0,4.0.0)",
+ org.eclipse.swt;bundle-version="[3.107.0,4.0.0)",
org.eclipse.ui;bundle-version="[3.5.0,4.0.0)"
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: com.ibm.icu.text
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
index 0ad4a48a3d0..965f311ccd8 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java
@@ -1902,21 +1902,20 @@ public abstract class AbstractTextEditor extends EditorPart implements ITextEdit
if (document == null)
return -1;
- try {
- int widgetOffset= styledText.getOffsetAtLocation(new Point(x, y));
- Point p= styledText.getLocationAtOffset(widgetOffset);
- if (p.x > x)
- widgetOffset--;
-
- if (textViewer instanceof ITextViewerExtension5) {
- ITextViewerExtension5 extension= (ITextViewerExtension5) textViewer;
- return extension.widgetOffset2ModelOffset(widgetOffset);
- }
- IRegion visibleRegion= textViewer.getVisibleRegion();
- return widgetOffset + visibleRegion.getOffset();
- } catch (IllegalArgumentException e) {
+ int widgetOffset = styledText.getOffsetAtPoint(new Point(x, y));
+ if (widgetOffset == -1) {
return -1;
}
+ Point p = styledText.getLocationAtOffset(widgetOffset);
+ if (p.x > x)
+ widgetOffset--;
+
+ if (textViewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension = (ITextViewerExtension5) textViewer;
+ return extension.widgetOffset2ModelOffset(widgetOffset);
+ }
+ IRegion visibleRegion = textViewer.getVisibleRegion();
+ return widgetOffset + visibleRegion.getOffset();
}
}
@@ -3534,7 +3533,7 @@ public abstract class AbstractTextEditor extends EditorPart implements ITextEdit
if (isBlockSelectionModeEnabled())
return false;
- int offset= st.getOffsetAtLocation(point);
+ int offset = st.getOffsetAtPoint(point);
Point p= st.getLocationAtOffset(offset);
if (p.x > point.x)
offset--;
diff --git a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java
index 04987fc3b24..d0e0a2a0b44 100644
--- a/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java
+++ b/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/AbstractTemplatesPage.java
@@ -1572,7 +1572,7 @@ public abstract class AbstractTemplatesPage extends Page implements ITemplatesPa
if (fViewer instanceof ITextViewerExtension5) {
ITextViewerExtension5 ext= (ITextViewerExtension5) fViewer;
try {
- return ext.widgetOffset2ModelOffset(textWidget.getOffsetAtLocation(point));
+ return ext.widgetOffset2ModelOffset(textWidget.getOffsetAtPoint(point));
} catch (IllegalArgumentException e) {
int docLineIndex= ext.widgetLine2ModelLine(textWidget.getLineIndex(point.y));
String lineDelimiter= document.getLineDelimiter(docLineIndex);

Back to the top