[orca] Web: More work on recovering from focused object being destroyed



commit 75a34cef5b023b52fdc551e674289009cd292f29
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Feb 26 14:17:38 2021 +0100

    Web: More work on recovering from focused object being destroyed
    
    * Preserve context when dumping cache children-changed:add
    * Dump cache (but preserve context) in children-changed:removed
    * Search for caret context in parent when line nav isn't being used

 src/orca/scripts/web/script.py           | 6 +++++-
 src/orca/scripts/web/script_utilities.py | 7 ++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)
---
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 9d902d8f8..e8fa9e58c 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -1735,7 +1735,7 @@ class Script(default.Script):
             elif self.utilities.isDead(orca_state.locusOfFocus):
                 msg = "WEB: Dumping cache and context: dead focus %s" % orca_state.locusOfFocus
                 debug.println(debug.LEVEL_INFO, msg, True)
-                self.utilities.dumpCache(document, preserveContext=False)
+                self.utilities.dumpCache(document, preserveContext=True)
             elif pyatspi.findAncestor(orca_state.locusOfFocus, lambda x: x == event.source):
                 msg = "WEB: Dumping cache: source is ancestor of focus %s" % orca_state.locusOfFocus
                 debug.println(debug.LEVEL_INFO, msg, True)
@@ -1844,6 +1844,10 @@ class Script(default.Script):
                 msg = "WEB: Dumping cache and context: source is focus %s" % orca_state.locusOfFocus
                 debug.println(debug.LEVEL_INFO, msg, True)
                 self.utilities.dumpCache(document, preserveContext=False)
+            elif self.utilities.isDead(orca_state.locusOfFocus):
+                msg = "WEB: Dumping cache and context: dead focus %s" % orca_state.locusOfFocus
+                debug.println(debug.LEVEL_INFO, msg, True)
+                self.utilities.dumpCache(document, preserveContext=True)
             elif pyatspi.findAncestor(orca_state.locusOfFocus, lambda x: x == event.source):
                 msg = "WEB: Dumping cache: source is ancestor of focus %s" % orca_state.locusOfFocus
                 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 b2c9369b1..ca59e9249 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -4760,6 +4760,7 @@ class Utilities(script_utilities.Utilities):
             return False
 
         obj, offset = None, -1
+        notify = True
         keyString, mods = self.lastKeyAndModifiers()
         if keyString == "Up":
             if event.detail1 >= event.source.childCount:
@@ -4793,9 +4794,13 @@ class Utilities(script_utilities.Utilities):
                 debug.println(debug.LEVEL_INFO, msg, True)
                 obj, offset = self.nextContext(nextObj, -1)
 
+        else:
+            notify = False
+            obj, offset = self.searchForCaretContext(event.source)
+
         if obj:
             msg = "WEB: Setting locusOfFocus and context to: %s, %i" % (obj, offset)
-            orca.setLocusOfFocus(event, obj, True)
+            orca.setLocusOfFocus(event, obj, notify)
             self.setCaretContext(obj, offset)
             return True
 


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