[orca] Only update locusOfFocus for menu item focus: events if we're not in that menu



commit 84f0db5a3ff498afb2f3ce69da252f8e5d04b8c2
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Nov 27 12:20:55 2015 -0500

    Only update locusOfFocus for menu item focus: events if we're not in that menu

 src/orca/scripts/toolkits/GAIL/script.py |    9 +++++++--
 src/orca/scripts/toolkits/gtk/script.py  |   15 +++++++--------
 2 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/GAIL/script.py b/src/orca/scripts/toolkits/GAIL/script.py
index 1d7bfa8..698e72d 100644
--- a/src/orca/scripts/toolkits/GAIL/script.py
+++ b/src/orca/scripts/toolkits/GAIL/script.py
@@ -101,8 +101,13 @@ class Script(default.Script):
         # selected, we get a focus: event for that menu item, but there is
         # not a state-changed event for that item, nor a selection-changed
         # event for the menu.
-        if role == pyatspi.ROLE_MENU_ITEM:
-            orca.setLocusOfFocus(event, event.source)
+        menuItems = [pyatspi.ROLE_CHECK_MENU_ITEM,
+                     pyatspi.ROLE_MENU_ITEM,
+                     pyatspi.ROLE_RADIO_MENU_ITEM]
+        if role in menuItems:
+            if orca_state.locusOfFocus \
+               and orca_state.locusOfFocus.parent != event.source.parent:
+                orca.setLocusOfFocus(event, event.source)
             return
 
         # Unfiled, but in at least some dialogs, the first time a push
diff --git a/src/orca/scripts/toolkits/gtk/script.py b/src/orca/scripts/toolkits/gtk/script.py
index 088715f..7e16a42 100644
--- a/src/orca/scripts/toolkits/gtk/script.py
+++ b/src/orca/scripts/toolkits/gtk/script.py
@@ -155,14 +155,13 @@ class Script(default.Script):
         # selected, we get a focus: event for that menu item, but there is
         # not a state-changed event for that item, nor a selection-changed
         # event for the menu.
-        if role == pyatspi.ROLE_MENU_ITEM:
-            orca.setLocusOfFocus(event, event.source)
-            return
-
-        # Unfiled seems we're missing object:state-changed events for other
-        # Gtk+ menu items as well.
-        if role in [pyatspi.ROLE_CHECK_MENU_ITEM, pyatspi.ROLE_RADIO_MENU_ITEM]:
-            orca.setLocusOfFocus(event, event.source)
+        menuItems = [pyatspi.ROLE_CHECK_MENU_ITEM,
+                     pyatspi.ROLE_MENU_ITEM,
+                     pyatspi.ROLE_RADIO_MENU_ITEM]
+        if role in menuItems:
+            if orca_state.locusOfFocus \
+               and orca_state.locusOfFocus.parent != event.source.parent:
+                orca.setLocusOfFocus(event, event.source)
             return
 
         # Unfiled. When a canvas item gets focus but is not selected, we


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