[orca] Prevent children which cannot have context being returned as context
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Prevent children which cannot have context being returned as context
- Date: Sat, 2 May 2020 00:10:47 +0000 (UTC)
commit 17c14a25ca4f486c4b8060e6e0e7914a964cf5d7
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri May 1 20:00:50 2020 -0400
Prevent children which cannot have context being returned as context
find{Next,Previous}CaretInOrder() was returning children which should
be treated as a whole as valid caret context without checking if
said child could actually serve as a caret context. Objects which cannot
serve as a caret context include objects we which to ignore because they
are dead, zombies, empty, hidden, etc., etc.
As a consequence of this bug, we were sometimes wandering into hidden
objects (not good), presenting them (worse), and then getting stuck in
them (doubleplusbad).
This failure seems to be responsible for our getting stuck in Riot in
(at least) Chromium.
src/orca/scripts/web/script_utilities.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
---
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 3ac4bdd93..9cdbf45f1 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -4782,9 +4782,9 @@ class Utilities(script_utilities.Utilities):
allText = text.getText(0, -1)
for i in range(offset + 1, len(allText)):
child = self.getChildAtOffset(obj, i)
- if child and self._treatObjectAsWhole(child):
- return child, 0
if self._canHaveCaretContext(child):
+ if self._treatObjectAsWhole(child):
+ return child, 0
return self.findNextCaretInOrder(child, -1)
if allText[i] not in (self.EMBEDDED_OBJECT_CHARACTER, self.ZERO_WIDTH_NO_BREAK_SPACE):
return obj, i
@@ -4846,9 +4846,9 @@ class Utilities(script_utilities.Utilities):
offset = len(allText)
for i in range(offset - 1, -1, -1):
child = self.getChildAtOffset(obj, i)
- if child and self._treatObjectAsWhole(child):
- return child, 0
if self._canHaveCaretContext(child):
+ if self._treatObjectAsWhole(child):
+ return child, 0
return self.findPreviousCaretInOrder(child, -1)
if allText[i] not in (self.EMBEDDED_OBJECT_CHARACTER, self.ZERO_WIDTH_NO_BREAK_SPACE):
return obj, i
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]