[orca] Chromium: Improve responsiveness of text selection in large objects



commit 84641c8bc8c3e832bce0d3de0952247a8e4bf35a
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Mar 13 14:01:49 2020 -0400

    Chromium: Improve responsiveness of text selection in large objects
    
    Filter out static text leafs when getting the subtree so we don't
    include them when sorting by path.

 src/orca/script_utilities.py             | 9 +++++++--
 src/orca/scripts/web/script_utilities.py | 2 --
 2 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index c41a2d312..2ce9a6753 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -5460,11 +5460,16 @@ class Utilities:
         if not (startObj and endObj):
             return []
 
+        _include = lambda x: x
+        _exclude = self.isStaticTextLeaf
+
         subtree = []
         for i in range(startObj.getIndexInParent(), startObj.parent.childCount):
             child = startObj.parent[i]
+            if self.isStaticTextLeaf(child):
+                continue
             subtree.append(child)
-            subtree.extend(self.findAllDescendants(child, lambda x: x))
+            subtree.extend(self.findAllDescendants(child, _include, _exclude))
             if endObj in subtree:
                 break
 
@@ -5473,7 +5478,7 @@ class Utilities:
 
         if endObj not in subtree:
             subtree.append(endObj)
-            subtree.extend(self.findAllDescendants(endObj, lambda x: x))
+            subtree.extend(self.findAllDescendants(endObj, _include, _exclude))
 
         try:
             lastObj = endObj.parent[endObj.getIndexInParent() + 1]
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index b0186e12f..584ed952f 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -1837,8 +1837,6 @@ class Utilities(script_utilities.Utilities):
 
         descendants = sorted(set(oldSubtree).union(newSubtree), key=functools.cmp_to_key(_cmp))
         for descendant in descendants:
-            if self.isStaticTextLeaf(descendant):
-                continue
             if descendant not in (oldStart, oldEnd, start, end) \
                and pyatspi.findAncestor(descendant, lambda x: x in descendants):
                 super().updateCachedTextSelection(descendant)


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