[orca] Handle more instances of objects going defunct on us



commit 6607349b38a7ef078d7408f92db8d2a9cb510cf5
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Wed Jul 1 14:02:35 2020 +0200

    Handle more instances of objects going defunct on us

 src/orca/eventsynthesizer.py             | 2 +-
 src/orca/scripts/default.py              | 3 ++-
 src/orca/scripts/web/script.py           | 3 +++
 src/orca/scripts/web/script_utilities.py | 5 ++++-
 src/orca/structural_navigation.py        | 2 ++
 5 files changed, 12 insertions(+), 3 deletions(-)
---
diff --git a/src/orca/eventsynthesizer.py b/src/orca/eventsynthesizer.py
index b0d5d95a3..6e632c8a9 100644
--- a/src/orca/eventsynthesizer.py
+++ b/src/orca/eventsynthesizer.py
@@ -237,7 +237,7 @@ def _scrollSubstringToLocation(obj, location, startOffset, endOffset):
         debug.println(debug.LEVEL_INFO, msg, True)
         return False
     except:
-        msg = "ERROR: Exception scrolling %s (%i,%i) to %s." % \
+        msg = "ERROR: Exception scrolling %s (%s,%s) to %s." % \
             (obj, startOffset, endOffset, location)
         debug.println(debug.LEVEL_INFO, msg, True)
         return False
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index ce80fb723..4881fa8ef 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -779,10 +779,11 @@ class Script(script.Script):
         # gains focus, even though the caret has not actually moved.
         try:
             text = obj.queryText()
+            caretOffset = text.caretOffset
         except:
             pass
         else:
-            self._saveLastCursorPosition(obj, max(0, text.caretOffset))
+            self._saveLastCursorPosition(obj, max(0, caretOffset))
             self.utilities.updateCachedTextSelection(obj)
 
         # We want to save the current row and column of a newly focused
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 96bc2f13d..ba056851f 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -808,6 +808,9 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, msg, True)
             return False
 
+        if prevObj and self.utilities.isDead(prevObj):
+            prevObj = None
+
         if not _settingsManager.getSetting('caretNavTriggersFocusMode') \
            and self._lastCommandWasCaretNav \
            and not self.utilities.isNavigableToolTipDescendant(prevObj):
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index d93b33723..ac2b6ab30 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -970,6 +970,9 @@ class Utilities(script_utilities.Utilities):
         if not (obj and self.inDocumentContent(obj)) or self._script.browseModeIsSticky():
             return super().queryNonEmptyText(obj)
 
+        if self.isDead(obj):
+            return None
+
         if hash(obj) in self._text:
             return self._text.get(hash(obj))
 
@@ -2640,7 +2643,7 @@ class Utilities(script_utilities.Utilities):
     def filterContentsForPresentation(self, contents, inferLabels=False):
         def _include(x):
             obj, start, end, string = x
-            if not obj:
+            if not obj or self.isDead(obj):
                 return False
 
             rv = self._shouldFilter.get(hash(obj))
diff --git a/src/orca/structural_navigation.py b/src/orca/structural_navigation.py
index b984c03da..676efc808 100644
--- a/src/orca/structural_navigation.py
+++ b/src/orca/structural_navigation.py
@@ -943,6 +943,8 @@ class StructuralNavigation:
             matches.reverse()
 
         def _isValidMatch(obj):
+            if self._script.utilities.isDead(obj):
+                return False
             if self._script.utilities.isHidden(obj) or self._script.utilities.isEmpty(obj):
                 return False
             if not criteria.applyPredicate:


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