diff options
author | Carolyn MacLeod <carolyn> | 2010-08-30 18:05:54 +0000 |
---|---|---|
committer | Carolyn MacLeod <carolyn> | 2010-08-30 18:05:54 +0000 |
commit | e949ec797eb0c2d7f336d5afc972edb402a4ee72 (patch) | |
tree | 013fc35a7ffdd388a6ba8ca5e692529f9bf3a3af /bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | |
parent | 84396e176bd0032b35bba22ba30ad33c8e276523 (diff) | |
download | eclipse.platform.swt-e949ec797eb0c2d7f336d5afc972edb402a4ee72.tar.gz eclipse.platform.swt-e949ec797eb0c2d7f336d5afc972edb402a4ee72.tar.xz eclipse.platform.swt-e949ec797eb0c2d7f336d5afc972edb402a4ee72.zip |
Bug 323995 - [Accessibility] StyledText selection incorrect after caret moved event
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java')
-rwxr-xr-x | bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java index 03965640d7..58c5113e9f 100755 --- a/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java +++ b/bundles/org.eclipse.swt/Eclipse SWT Custom Widgets/common/org/eclipse/swt/custom/StyledText.java @@ -167,6 +167,7 @@ public class StyledText extends Canvas { int lineSpacing; int alignmentMargin; int newOrientation = SWT.NONE; + int accCaretOffset; //block selection boolean blockSelection; @@ -2407,6 +2408,7 @@ void doBlockSelection(boolean sendEvent) { if (sendEvent) { sendSelectionEvent(); } + sendAccessibleTextCaretMoved(); } /** * Replaces the selection with the character or insert the character at the @@ -3215,6 +3217,7 @@ void doSelection(int direction) { internalRedrawRange(redrawStart, redrawEnd - redrawStart); sendSelectionEvent(); } + sendAccessibleTextCaretMoved(); } /** * Moves the caret to the next character or to the beginning of the @@ -7795,6 +7798,7 @@ void resetCache(int firstLine, int count) { void resetSelection() { selection.x = selection.y = caretOffset; selectionAnchor = -1; + sendAccessibleTextCaretMoved(); } public void scroll(int destX, int destY, int x, int y, int width, int height, boolean all) { @@ -7929,6 +7933,12 @@ void scrollText(int srcY, int destY) { super.redraw(leftMargin, clientAreaHeight - bottomMargin, scrollWidth, bottomMargin, false); } } +void sendAccessibleTextCaretMoved() { + if (caretOffset != accCaretOffset) { + accCaretOffset = caretOffset; + getAccessible().textCaretMoved(caretOffset); + } +} void sendAccessibleTextChanged(int start, int newCharCount, int replaceCharCount) { Accessible accessible = getAccessible(); if (replaceCharCount != 0) { @@ -8435,7 +8445,6 @@ void setCaretOffset(int offset, int alignment) { event.end = caretOffset; notifyListeners(CaretMoved, event); } - getAccessible().textCaretMoved(caretOffset); } if (alignment != SWT.DEFAULT) { caretAlignment = alignment; @@ -9480,6 +9489,7 @@ void setSelection(int start, int length, boolean sendEvent, boolean doBlock) { setCaretOffset(end, PREVIOUS_OFFSET_TRAILING); } internalRedrawRange(selection.x, selection.y - selection.x); + sendAccessibleTextCaretMoved(); } } } |