[orca] Improve presentation of GtkEntryCompletion



commit 6e394d971ef9e66069bfaf76e21b0955639fa0d1
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Mon Nov 16 13:12:29 2015 -0500

    Improve presentation of GtkEntryCompletion

 src/orca/script_utilities.py                      |    3 +++
 src/orca/scripts/toolkits/gtk/script.py           |   13 +++++++++++++
 src/orca/scripts/toolkits/gtk/script_utilities.py |    9 +++++++++
 3 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index 79d8e6f..de7b4c9 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -2754,6 +2754,9 @@ class Utilities:
 
         return child
 
+    def isEntryCompletionPopupItem(self, obj):
+        return False
+
     def _isNonModalPopOver(self, obj):
         return False
 
diff --git a/src/orca/scripts/toolkits/gtk/script.py b/src/orca/scripts/toolkits/gtk/script.py
index 2fa5eee..e5a309b 100644
--- a/src/orca/scripts/toolkits/gtk/script.py
+++ b/src/orca/scripts/toolkits/gtk/script.py
@@ -183,6 +183,19 @@ class Script(default.Script):
             orca.setLocusOfFocus(event, obj)
             return
 
+    def onSelectedChanged(self, event):
+        """Callback for object:state-changed:selected accessibility events."""
+
+        if self.utilities.isEntryCompletionPopupItem(event.source):
+            if event.detail1:
+                orca.setLocusOfFocus(event, event.source)
+                return
+            if orca_state.locusOfFocus == event.source:
+                orca.setLocusOfFocus(event, None)
+                return
+
+        super().onSelectedChanged(event)
+
     def onSelectionChanged(self, event):
         """Callback for object:selection-changed accessibility events."""
 
diff --git a/src/orca/scripts/toolkits/gtk/script_utilities.py 
b/src/orca/scripts/toolkits/gtk/script_utilities.py
index 772f752..593d7e4 100644
--- a/src/orca/scripts/toolkits/gtk/script_utilities.py
+++ b/src/orca/scripts/toolkits/gtk/script_utilities.py
@@ -69,6 +69,15 @@ class Utilities(script_utilities.Utilities):
 
         return False
 
+    def isEntryCompletionPopupItem(self, obj):
+        if obj.getRole() == pyatspi.ROLE_TABLE_CELL:
+            isWindow = lambda x: x and x.getRole() == pyatspi.ROLE_WINDOW
+            window = pyatspi.findAncestor(obj, isWindow)
+            if window:
+                return True
+
+        return False
+
     def _isNonModalPopOver(self, obj):
         try:
             state = obj.getState()


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