[orca/gnome-3-36] Chromium: Don't speak child position for popup menus



commit aea5177fe47dc8923491c138463c53be0bd22f25
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 fccef8c35..57ca64e99 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -3929,6 +3929,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 d7ddf3798..25eb7ba13 100644
--- a/src/orca/scripts/toolkits/Chromium/script_utilities.py
+++ b/src/orca/scripts/toolkits/Chromium/script_utilities.py
@@ -234,6 +234,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 cdd2848ef..ddfcab849 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -2193,8 +2193,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]