Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDani Megert2009-05-19 12:17:26 +0000
committerDani Megert2009-05-19 12:17:26 +0000
commit909dc07e3c06e3a87920ed6002855abedddaca97 (patch)
tree08406285fabfe0cb8da01b4ce4cf1a9b90734937
parentcee75d52a88d5326e4cfbcfe8f40748ae2c8e711 (diff)
downloadeclipse.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.java15
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);

Back to the top