diff options
author | Dani Megert | 2009-05-19 12:17:26 +0000 |
---|---|---|
committer | Dani Megert | 2009-05-19 12:17:26 +0000 |
commit | 909dc07e3c06e3a87920ed6002855abedddaca97 (patch) | |
tree | 08406285fabfe0cb8da01b4ce4cf1a9b90734937 | |
parent | cee75d52a88d5326e4cfbcfe8f40748ae2c8e711 (diff) | |
download | eclipse.platform.text-909dc07e3c06e3a87920ed6002855abedddaca97.tar.gz eclipse.platform.text-909dc07e3c06e3a87920ed6002855abedddaca97.tar.xz eclipse.platform.text-909dc07e3c06e3a87920ed6002855abedddaca97.zip |
Fixed bug 276345: block selection: getSelectionRanges() should be avoided if possible
-rw-r--r-- | org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java index 7ba53363128..62e34c247fd 100644 --- a/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java +++ b/org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java @@ -2521,9 +2521,9 @@ public class TextViewer extends Viewer implements */ public ISelection getSelection() { if (fTextWidget != null && fTextWidget.getBlockSelection()) { - int[] ranges= fTextWidget.getSelectionRanges(); - int startOffset= ranges[0]; - int endOffset= ranges[ranges.length - 2] + ranges[ranges.length - 1]; + Point sel = fTextWidget.getSelection(); + int startOffset= sel.x; + int endOffset= sel.y; // getBlockSelectionBounds returns pixel coordinates relative to document Rectangle bounds= fTextWidget.getBlockSelectionBounds(); @@ -3755,9 +3755,12 @@ public class TextViewer extends Viewer implements return; } - if (fTextWidget.getBlockSelection() && fTextWidget.getSelectionRanges().length > 2 && (e.text == null || e.text.length() < 2)) { - verifyEventInBlockSelection(e); - return; + if (fTextWidget.getBlockSelection() && (e.text == null || e.text.length() < 2)) { + Point sel = fTextWidget.getSelection(); + if (fTextWidget.getLineAtOffset(sel.x) != fTextWidget.getLineAtOffset(sel.y)) { + verifyEventInBlockSelection(e); + return; + } } IRegion modelRange= event2ModelRange(e); |