[orca] Add initial support for description change events



commit be2219364cc7fd9ba563c907cf08405966a4575e
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Thu May 7 14:19:21 2020 -0400

    Add initial support for description change events
    
    If the description changes for the locusOfFocus, present the new
    description. We deliberately ignore events from things which are not
    the locusOfFocus due to event spam and irrelevant chattiness.

 src/orca/scripts/default.py | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)
---
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index dcc63fbab..36f560eb7 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -551,6 +551,8 @@ class Script(script.Script):
             self.onMouseButton
         listeners["object:property-change:accessible-name"] = \
             self.onNameChanged
+        listeners["object:property-change:accessible-description"] = \
+            self.onDescriptionChanged
         listeners["object:text-caret-moved"]                = \
             self.onCaretMoved
         listeners["object:text-changed:delete"]             = \
@@ -750,6 +752,7 @@ class Script(script.Script):
             role = obj.getRole()
             state = obj.getState()
             name = obj.name
+            description = obj.description
         except:
             return
 
@@ -767,6 +770,10 @@ class Script(script.Script):
 
         self.pointOfReference['names'] = names
 
+        descriptions = self.pointOfReference.get('descriptions', {})
+        descriptions[hash(obj)] = description
+        self.pointOfReference['descriptions'] = descriptions
+
         # We want to save the offset for text objects because some apps and
         # toolkits emit caret-moved events immediately after a text object
         # gains focus, even though the caret has not actually moved.
@@ -2305,6 +2312,27 @@ class Script(script.Script):
         debug.println(debug.LEVEL_INFO, msg, True)
         self._presentTextAtNewCaretPosition(event)
 
+    def onDescriptionChanged(self, event):
+        """Callback for object:property-change:accessible-description events."""
+
+        obj = event.source
+        descriptions = self.pointOfReference.get('description', {})
+        oldDescription = descriptions.get(hash(obj))
+        if oldDescription == event.any_data:
+            msg = "DEFAULT: Old description (%s) is the same as new one" % oldDescription
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return
+
+        if obj != orca_state.locusOfFocus:
+            msg = "DEFAULT: Event is for object other than the locusOfFocus"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return
+
+        descriptions[hash(obj)] = event.any_data
+        self.pointOfReference['descriptions'] = descriptions
+        if event.any_data:
+            self.presentMessage(event.any_data)
+
     def onDocumentReload(self, event):
         """Callback for document:reload accessibility events."""
 


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