[orca/gnome-3-16] Update position in Gecko content when SayAll is interrupted



commit 0ee77ef2d2500d5ed54598c7a43c2e2feaef1c54
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Sun Mar 8 14:16:33 2015 -0400

    Update position in Gecko content when SayAll is interrupted

 src/orca/scripts/toolkits/Gecko/script.py          |   11 +++++++----
 .../scripts/toolkits/Gecko/script_utilities.py     |   12 ++++++++++--
 2 files changed, 17 insertions(+), 6 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index de15891..e52e5a4 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -876,7 +876,7 @@ class Script(default.Script):
         return True
 
     def __sayAllProgressCallback(self, context, progressType):
-        if not self.inDocumentContent():
+        if not self.inDocumentContent() or self._inFocusMode:
             default.Script.__sayAllProgressCallback(self, context, progressType)
             return
 
@@ -888,14 +888,17 @@ class Script(default.Script):
                     return
                 elif lastKey == "Up" and self._rewindSayAll(context):
                     return
+                elif not self._lastCommandWasStructNav:
+                    self.setCaretPosition(context.obj, context.currentOffset)
+                    self.updateBraille(context.obj)
 
             self._inSayAll = False
             self._sayAllContents = []
             self._sayAllContexts = []
+            return
 
-        if not self._lastCommandWasStructNav:
-            orca.setLocusOfFocus(None, context.obj, notifyScript=False)
-            self.setCaretContext(context.obj, context.currentOffset)
+        orca.setLocusOfFocus(None, context.obj, notifyScript=False)
+        self.setCaretContext(context.obj, context.currentOffset)
 
     def onCaretMoved(self, event):
         """Callback for object:text-caret-moved accessibility events."""
diff --git a/src/orca/scripts/toolkits/Gecko/script_utilities.py 
b/src/orca/scripts/toolkits/Gecko/script_utilities.py
index 22a4538..9d3e4dd 100644
--- a/src/orca/scripts/toolkits/Gecko/script_utilities.py
+++ b/src/orca/scripts/toolkits/Gecko/script_utilities.py
@@ -585,7 +585,11 @@ class Utilities(script_utilities.Utilities):
 
         treatAsWhole = self._treatTextObjectAsWhole(obj)
         if not treatAsWhole and boundary == pyatspi.TEXT_BOUNDARY_SENTENCE_START:
-            if obj.getRole() in [pyatspi.ROLE_LIST_ITEM, pyatspi.ROLE_HEADING] \
+            state = obj.getState()
+            if state.contains(pyatspi.STATE_EDITABLE) \
+               and state.contains(pyatspi.STATE_FOCUSED):
+                treatAsWhole = False
+            elif obj.getRole() in [pyatspi.ROLE_LIST_ITEM, pyatspi.ROLE_HEADING] \
                or not self.isTextBlockElement(obj):
                 treatAsWhole = True
 
@@ -677,6 +681,10 @@ class Utilities(script_utilities.Utilities):
 
         boundary = pyatspi.TEXT_BOUNDARY_SENTENCE_START
         objects = self._getContentsForObj(obj, offset, boundary)
+        state = obj.getState()
+        if state.contains(pyatspi.STATE_EDITABLE) \
+           and state.contains(pyatspi.STATE_FOCUSED):
+            return objects
 
         def _treatAsSentenceEnd(x):
             xObj, xStart, xEnd, xString = x
@@ -862,7 +870,7 @@ class Utilities(script_utilities.Utilities):
 
     def justEnteredObject(self, obj, startOffset, endOffset):
         lastKey, mods = self.lastKeyAndModifiers()
-        if lastKey == "Down" and not mods:
+        if (lastKey == "Down" and not mods) or self._script.inSayAll():
             return startOffset == 0
 
         if lastKey == "Up" and not mods:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]