[orca] spd: Make sure sayAll progress callback gets the correct offsets



commit af44e7f258eabce4f9e7a9731b3d3ef9ff9274ba
Author: Colomban Wendling <cwendling hypra fr>
Date:   Fri Oct 7 10:40:30 2022 +0000

    spd: Make sure sayAll progress callback gets the correct offsets

 src/orca/speechdispatcherfactory.py | 2 +-
 src/orca/speechserver.py            | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/src/orca/speechdispatcherfactory.py b/src/orca/speechdispatcherfactory.py
index c6558e29c..b332274cb 100644
--- a/src/orca/speechdispatcherfactory.py
+++ b/src/orca/speechdispatcherfactory.py
@@ -507,7 +507,7 @@ class SpeechServer(speechserver.SpeechServer):
                 elif t == speechserver.SayAllContext.COMPLETED:
                     context.currentOffset = context.endOffset
                     context.currentEndOffset = None
-                GLib.idle_add(orca_callback, context, t)
+                GLib.idle_add(orca_callback, context.copy(), t)
                 if t == speechserver.SayAllContext.COMPLETED:
                     GLib.idle_add(self._say_all, iterator, orca_callback)
             self._speak(context.utterance, acss, callback=callback,
diff --git a/src/orca/speechserver.py b/src/orca/speechserver.py
index 377d81a28..e97bac1df 100644
--- a/src/orca/speechserver.py
+++ b/src/orca/speechserver.py
@@ -90,6 +90,13 @@ class SayAllContext:
         return "SAY ALL: %s '%s' (%i-%i, current: %i)" % \
             (self.obj, self.utterance, self.startOffset, self.endOffset, self.currentOffset)
 
+    def copy(self):
+        new = SayAllContext(self.obj, self.utterance,
+                            self.startOffset, self.endOffset)
+        new.currentOffset = self.currentOffset
+        new.currentEndOffset = self.currentEndOffset
+        return new
+
 
 class SpeechServer(object):
     """Provides speech server abstraction."""


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