[orca] Chromium: Don't speak child position for popup menus



commit 084ab43ecb31c8319ddcd29dffe181b6dffb160f
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Apr 3 13:01:48 2020 -0400

    Chromium: Don't speak child position for popup menus
    
    Popup menus for some reason live in a menu bar. This was causing us to
    speak "1 of 1" each time a popup menu was announced and speak child
    position enabled.

 src/orca/script_utilities.py                           | 6 ++++++
 src/orca/scripts/toolkits/Chromium/script_utilities.py | 6 ++++++
 src/orca/speech_generator.py                           | 3 +--
 3 files changed, 13 insertions(+), 2 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index b719ddc66..056496cc5 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -3982,6 +3982,12 @@ class Utilities:
 
         return obj.parent and obj.parent.getRole() in self._contextMenuParentRoles()
 
+    def isTopLevelMenu(self, obj):
+        if obj.getRole() == pyatspi.ROLE_MENU:
+            return obj.parent == self.topLevelObject(obj)
+
+        return False
+
     def isEntryCompletionPopupItem(self, obj):
         return False
 
diff --git a/src/orca/scripts/toolkits/Chromium/script_utilities.py 
b/src/orca/scripts/toolkits/Chromium/script_utilities.py
index e7e3a364b..d82375004 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -241,6 +241,12 @@ class Utilities(web.Utilities):
 
         return False
 
+    def isTopLevelMenu(self, obj):
+        if obj.getRole() == pyatspi.ROLE_MENU:
+            return self.isFrameForPopupMenu(self.topLevelObject(obj))
+
+        return False
+
     def popupMenuForFrame(self, obj):
         if not self.isFrameForPopupMenu(obj):
             return None
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 25713200a..8e1f7ebd0 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -2199,8 +2199,7 @@ class SpeechGenerator(generator.Generator):
                    or args.get('forceList', False)):
             return []
 
-        if obj.getRole() == pyatspi.ROLE_MENU \
-           and obj.parent == self._script.utilities.topLevelObject(obj):
+        if self._script.utilities.isTopLevelMenu(obj):
             return []
 
         if self._script.utilities.isEditableComboBox(obj):


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