[orca] Update location when zombie replicant is announced to us via focus change



commit 32818df482728048d24e989348ffb523d039aea7
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Mon Feb 13 05:11:05 2017 -0500

    Update location when zombie replicant is announced to us via focus change

 src/orca/scripts/web/script.py           |   20 +++++++++++++-------
 src/orca/scripts/web/script_utilities.py |    6 +++---
 2 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 930b9c6..0858260 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -1599,6 +1599,19 @@ class Script(default.Script):
             orca.setLocusOfFocus(event, event.source)
             return True
 
+        obj, offset = self.utilities.getCaretContext()
+        if obj and self.utilities.isZombie(obj):
+            msg = "WEB: Clearing context - obj is zombie"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            self.utilities.clearCaretContext()
+
+            obj, offset = self.utilities.searchForCaretContext(event.source)
+            if obj:
+                msg = "WEB: Updating focus and context to %s, %i" % (obj, offset)
+                debug.println(debug.LEVEL_INFO, msg, True)
+                orca.setLocusOfFocus(event, obj, False)
+                self.utilities.setCaretContext(obj, offset)
+
         if self._lastCommandWasCaretNav:
             msg = "WEB: Event ignored: Last command was caret nav"
             debug.println(debug.LEVEL_INFO, msg, True)
@@ -1620,13 +1633,6 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, msg, True)
             return False
 
-        obj, offset = self.utilities.getCaretContext(event.source)
-        if obj and self.utilities.isZombie(obj):
-            msg = "WEB: Clearing context - obj is zombie"
-            debug.println(debug.LEVEL_INFO, msg, True)
-            self.utilities.clearCaretContext()
-            obj, offset = self.utilities.getCaretContext(event.source)
-
         if not obj:
             msg = "WEB: Unable to get non-null, non-zombie context object"
             debug.println(debug.LEVEL_INFO, msg, True)
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index c4ad57e..c4de59f 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -3013,7 +3013,7 @@ class Utilities(script_utilities.Utilities):
 
         return role in doNotDescend
 
-    def _searchForCaretContext(self, obj):
+    def searchForCaretContext(self, obj):
         contextObj, contextOffset = None, -1
         while obj:
             try:
@@ -3056,13 +3056,13 @@ class Utilities(script_utilities.Utilities):
 
         context = self._caretContexts.get(hash(documentFrame.parent))
         if not context:
-            obj, offset = self._searchForCaretContext(documentFrame)
+            obj, offset = self.searchForCaretContext(documentFrame)
         elif not getZombieReplicant:
             return context
         elif self.isZombie(context[0]):
             obj, offset = self.findContextReplicant()
             if obj:
-                caretObj, caretOffset = self._searchForCaretContext(obj.parent)
+                caretObj, caretOffset = self.searchForCaretContext(obj.parent)
                 if caretObj and not self.isZombie(caretObj):
                     obj, offset = caretObj, caretOffset
         else:


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