[orca] Web: Announce when rows, columns get reordered due to aria-sort changing



commit bdb0fd3eae8d3fb955c5cc27c7fb7e3cfbd99bf2
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Aug 7 11:40:35 2020 +0200

    Web: Announce when rows, columns get reordered due to aria-sort changing
    
    Note: This support requires browsers to emit the expected signals.
    Chromium will soon; Firefox doesn't yet.

 src/orca/scripts/toolkits/Chromium/script.py | 20 ++++++++++++++++
 src/orca/scripts/toolkits/Gecko/script.py    | 20 ++++++++++++++++
 src/orca/scripts/web/script.py               | 34 ++++++++++++++++++++++++++++
 3 files changed, 74 insertions(+)
---
diff --git a/src/orca/scripts/toolkits/Chromium/script.py b/src/orca/scripts/toolkits/Chromium/script.py
index 5cd9147d5..1c5fd77ab 100644
--- a/src/orca/scripts/toolkits/Chromium/script.py
+++ b/src/orca/scripts/toolkits/Chromium/script.py
@@ -165,6 +165,16 @@ class Script(web.Script):
         debug.println(debug.LEVEL_INFO, msg, True)
         default.Script.onCheckedChanged(self, event)
 
+    def onColumnReordered(self, event):
+        """Callback for object:column-reordered accessibility events."""
+
+        if super().onColumnReordered(event):
+            return
+
+        msg = "CHROMIUM: Passing along event to default script"
+        debug.println(debug.LEVEL_INFO, msg, True)
+        default.Script.onColumnReordered(self, event)
+
     def onChildrenAdded(self, event):
         """Callback for object:children-changed:add accessibility events."""
 
@@ -299,6 +309,16 @@ class Script(web.Script):
         debug.println(debug.LEVEL_INFO, msg, True)
         default.Script.onNameChanged(self, event)
 
+    def onRowReordered(self, event):
+        """Callback for object:row-reordered accessibility events."""
+
+        if super().onRowReordered(event):
+            return
+
+        msg = "CHROMIUM: Passing along event to default script"
+        debug.println(debug.LEVEL_INFO, msg, True)
+        default.Script.onRowReordered(self, event)
+
     def onSelectedChanged(self, event):
         """Callback for object:state-changed:selected accessibility events."""
 
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index d75b96ecc..4ff369f5b 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -131,6 +131,16 @@ class Script(web.Script):
         debug.println(debug.LEVEL_INFO, msg, True)
         default.Script.onCheckedChanged(self, event)
 
+    def onColumnReordered(self, event):
+        """Callback for object:column-reordered accessibility events."""
+
+        if super().onColumnReordered(event):
+            return
+
+        msg = "GECKO: Passing along event to default script"
+        debug.println(debug.LEVEL_INFO, msg, True)
+        default.Script.onColumnReordered(self, event)
+
     def onChildrenAdded(self, event):
         """Callback for object:children-changed:add accessibility events."""
 
@@ -255,6 +265,16 @@ class Script(web.Script):
         debug.println(debug.LEVEL_INFO, msg, True)
         default.Script.onNameChanged(self, event)
 
+    def onRowReordered(self, event):
+        """Callback for object:row-reordered accessibility events."""
+
+        if super().onRowReordered(event):
+            return
+
+        msg = "GECKO: Passing along event to default script"
+        debug.println(debug.LEVEL_INFO, msg, True)
+        default.Script.onRowReordered(self, event)
+
     def onSelectedChanged(self, event):
         """Callback for object:state-changed:selected accessibility events."""
 
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index e84682347..eadaf2eba 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -1792,6 +1792,23 @@ class Script(default.Script):
 
         return False
 
+    def onColumnReordered(self, event):
+        """Callback for object:column-reordered accessibility events."""
+
+        if not self.utilities.inDocumentContent(event.source):
+            msg = "WEB: Event source is not in document content"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        if event.source != self.utilities.getTable(orca_state.locusOfFocus):
+            msg = "WEB: locusOfFocus (%s) is not in this table" % orca_state.locusOfFocus
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        self.pointOfReference['last-table-sort-time'] = time.time()
+        self.presentMessage(messages.TABLE_REORDERED_COLUMNS)
+        return True
+
     def onDocumentLoadComplete(self, event):
         """Callback for document:load-complete accessibility events."""
 
@@ -2006,6 +2023,23 @@ class Script(default.Script):
 
         return True
 
+    def onRowReordered(self, event):
+        """Callback for object:row-reordered accessibility events."""
+
+        if not self.utilities.inDocumentContent(event.source):
+            msg = "WEB: Event source is not in document content"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        if event.source != self.utilities.getTable(orca_state.locusOfFocus):
+            msg = "WEB: locusOfFocus (%s) is not in this table" % orca_state.locusOfFocus
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return False
+
+        self.pointOfReference['last-table-sort-time'] = time.time()
+        self.presentMessage(messages.TABLE_REORDERED_ROWS)
+        return True
+
     def onSelectedChanged(self, event):
         """Callback for object:state-changed:selected accessibility events."""
 


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