diff options
-rw-r--r-- | doc/ScintillaHistory.html | 5 | ||||
-rw-r--r-- | src/Editor.cxx | 4 | ||||
-rw-r--r-- | src/Editor.h | 1 | ||||
-rw-r--r-- | win32/ScintillaWin.cxx | 5 |
4 files changed, 15 insertions, 0 deletions
diff --git a/doc/ScintillaHistory.html b/doc/ScintillaHistory.html index eb8127af4..517d3ae6a 100644 --- a/doc/ScintillaHistory.html +++ b/doc/ScintillaHistory.html @@ -529,6 +529,11 @@ Fixed bug on Win32 that allowed resizing autocompletion from bottom when it was located above the caret. </li> + <li> + On Win32, when using a screen reader and selecting text using Shift+Arrow, + fix bug when scrolling made the caret stay at the same screen location + so the screen reader did not speak the added or removed selection. + </li> </ul> <h3> <a href="http://www.scintilla.org/scite365.zip">Release 3.6.5</a> diff --git a/src/Editor.cxx b/src/Editor.cxx index 9a41bab09..125399622 100644 --- a/src/Editor.cxx +++ b/src/Editor.cxx @@ -828,6 +828,7 @@ void Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, } ShowCaretAtCurrentPosition(); + NotifyCaretMove(); ClaimSelection(); SetHoverIndicatorPosition(sel.MainCaret()); @@ -1437,6 +1438,9 @@ void Editor::InvalidateCaret() { UpdateSystemCaret(); } +void Editor::NotifyCaretMove() { +} + void Editor::UpdateSystemCaret() { } diff --git a/src/Editor.h b/src/Editor.h index c1545d34b..93a86fa39 100644 --- a/src/Editor.h +++ b/src/Editor.h @@ -365,6 +365,7 @@ protected: // ScintillaBase subclass needs access to much of Editor void DropCaret(); void CaretSetPeriod(int period); void InvalidateCaret(); + virtual void NotifyCaretMove(); virtual void UpdateSystemCaret(); bool Wrapping() const; diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx index 3c7cd45be..3ed249ca0 100644 --- a/win32/ScintillaWin.cxx +++ b/win32/ScintillaWin.cxx @@ -325,6 +325,7 @@ class ScintillaWin : virtual void SetTrackMouseLeaveEvent(bool on); virtual bool PaintContains(PRectangle rc); virtual void ScrollText(int linesToMove); + virtual void NotifyCaretMove(); virtual void UpdateSystemCaret(); virtual void SetVerticalScrollPos(); virtual void SetHorizontalScrollPos(); @@ -1838,6 +1839,10 @@ void ScintillaWin::ScrollText(int /* linesToMove */) { UpdateSystemCaret(); } +void ScintillaWin::NotifyCaretMove() { + NotifyWinEvent(EVENT_OBJECT_LOCATIONCHANGE, MainHWND(), OBJID_CARET, CHILDID_SELF); +} + void ScintillaWin::UpdateSystemCaret() { if (hasFocus) { if (HasCaretSizeChanged()) { |