[orca] Call language logic in default _generateCurrentLineText()



commit 38acd26f32ffcfca71831586161885da9de6441d
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Jan 7 17:59:42 2022 +0100

    Call language logic in default _generateCurrentLineText()
    
    This change should not impact the end-user experience. It is a precursor
    to implementing support for on-the-fly language switching.

 src/orca/speech_generator.py | 31 +++++++++++++++++++++----------
 1 file changed, 21 insertions(+), 10 deletions(-)
---
diff --git a/src/orca/speech_generator.py b/src/orca/speech_generator.py
index 803855cd2..7d6b99281 100644
--- a/src/orca/speech_generator.py
+++ b/src/orca/speech_generator.py
@@ -1224,21 +1224,32 @@ class SpeechGenerator(generator.Generator):
         if args.get('inMouseReview') and obj.getState().contains(pyatspi.STATE_EDITABLE):
             return []
 
-        result = generator.Generator._generateCurrentLineText(self, obj, **args)
-        if not (result and result[0]):
+        result = self._generateSubstring(obj, **args)
+        if result and result[0]:
+            return result
+
+        [text, caretOffset, startOffset] = self._script.getTextLineAtCaret(obj)
+        if self._script.EMBEDDED_OBJECT_CHARACTER in text:
             return []
 
-        if result == ['\n'] and _settingsManager.getSetting('speakBlankLines') \
+        if text == '\n' and _settingsManager.getSetting('speakBlankLines') \
            and not self._script.inSayAll() and args.get('total', 1) == 1:
             result = [messages.BLANK]
+            result.extend(self.voice(string=text, obj=obj, **args))
+            return result
 
-        result[0] = self._script.utilities.adjustForRepeats(result[0])
-
-        if self._script.utilities.shouldVerbalizeAllPunctuation(obj):
-            result[0] = self._script.utilities.verbalizeAllPunctuation(result[0])
-
-        if len(result) == 1:
-            result.extend(self.voice(DEFAULT, obj=obj, **args))
+        result = []
+        endOffset = startOffset + len(text)
+        split = self._script.utilities.splitSubstringByLanguage(obj, startOffset, endOffset)
+        for start, end, string, language, dialect in split:
+            if not string:
+                continue
+            args["language"], args["dialect"] = language, dialect
+            voice = self.voice(string=string, obj=obj, **args)
+            string = self._script.utilities.adjustForLinks(obj, string, start)
+            rv = [self._script.utilities.adjustForRepeats(string)]
+            rv.extend(voice)
+            result.append(rv)
 
         return result
 


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