[orca] Web: Eliminate some more unnecessary calls to _getDocumentsEmbeddedBy()
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Web: Eliminate some more unnecessary calls to _getDocumentsEmbeddedBy()
- Date: Tue, 8 Jun 2021 15:10:28 +0000 (UTC)
commit dfa0c66de23f4de0bd0f3c326cd9bc4c0d69e39d
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Tue Jun 8 17:05:26 2021 +0200
Web: Eliminate some more unnecessary calls to _getDocumentsEmbeddedBy()
This is ongoing performance work being done in small chunks so that we
can catch unexpected side effects.
src/orca/scripts/web/braille_generator.py | 3 ++-
src/orca/scripts/web/script.py | 41 +++++++++++++++++++------------
src/orca/scripts/web/script_utilities.py | 6 ++---
src/orca/scripts/web/speech_generator.py | 3 ++-
4 files changed, 31 insertions(+), 22 deletions(-)
---
diff --git a/src/orca/scripts/web/braille_generator.py b/src/orca/scripts/web/braille_generator.py
index fda12b1b8..3d028af4b 100644
--- a/src/orca/scripts/web/braille_generator.py
+++ b/src/orca/scripts/web/braille_generator.py
@@ -266,7 +266,8 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
result = []
contents = self._script.utilities.filterContentsForPresentation(contents, True)
- obj, offset = self._script.utilities.getCaretContext(documentFrame=None)
+ document = args.get("documentFrame")
+ obj, offset = self._script.utilities.getCaretContext(documentFrame=document)
index = self._script.utilities.findObjectInContents(obj, offset, contents)
lastRegion = None
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 62f948458..9dfea04e2 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -892,7 +892,8 @@ class Script(default.Script):
super().sayCharacter(obj)
return
- obj, offset = self.utilities.getCaretContext(documentFrame=None)
+ document = self.utilities.getTopLevelDocumentForObject(obj)
+ obj, offset = self.utilities.getCaretContext(documentFrame=document)
if not obj:
return
@@ -928,7 +929,8 @@ class Script(default.Script):
super().sayWord(obj)
return
- obj, offset = self.utilities.getCaretContext(documentFrame=None)
+ document = self.utilities.getTopLevelDocumentForObject(obj)
+ obj, offset = self.utilities.getCaretContext(documentFrame=document)
keyString, mods = self.utilities.lastKeyAndModifiers()
if keyString == "Right":
offset -= 1
@@ -947,11 +949,12 @@ class Script(default.Script):
super().sayLine(obj)
return
+ document = self.utilities.getTopLevelDocumentForObject(obj)
priorObj = None
if self._lastCommandWasCaretNav or isEditable:
- priorObj, priorOffset = self.utilities.getPriorContext()
+ priorObj, priorOffset = self.utilities.getPriorContext(documentFrame=document)
- obj, offset = self.utilities.getCaretContext(documentFrame=None)
+ obj, offset = self.utilities.getCaretContext(documentFrame=document)
contents = self.utilities.getLineContentsAtOffset(obj, offset, useCache=True)
self.speakContents(contents, priorObj=priorObj)
self.pointOfReference["lastTextUnitSpoken"] = "line"
@@ -1003,7 +1006,8 @@ class Script(default.Script):
debug.println(debug.LEVEL_INFO, "BRAILLE: disabled", True)
return
- if not self.utilities.inDocumentContent(obj):
+ document = args.get("documentFrame", self.utilities.getTopLevelDocumentForObject(obj))
+ if not document:
msg = "WEB: updating braille for non-document object %s" % obj
debug.println(debug.LEVEL_INFO, msg, True)
super().updateBraille(obj, **args)
@@ -1021,16 +1025,16 @@ class Script(default.Script):
super().updateBraille(obj, **args)
return
- obj, offset = self.utilities.getCaretContext(documentFrame=None, getZombieReplicant=True)
+ obj, offset = self.utilities.getCaretContext(documentFrame=document, getZombieReplicant=True)
if offset > 0 and isContentEditable:
text = self.utilities.queryNonEmptyText(obj)
if text:
offset = min(offset, text.characterCount)
contents = self.utilities.getLineContentsAtOffset(obj, offset)
- self.displayContents(contents)
+ self.displayContents(contents, documentFrame=document)
- def displayContents(self, contents):
+ def displayContents(self, contents, **args):
"""Displays contents in braille."""
if not _settingsManager.getSetting('enableBraille') \
@@ -1039,7 +1043,8 @@ class Script(default.Script):
return
line = self.getNewBrailleLine(clearBraille=True, addLine=True)
- contents = self.brailleGenerator.generateContents(contents)
+ document = args.get("documentFrame")
+ contents = self.brailleGenerator.generateContents(contents, documentFrame=document)
if not contents:
return
@@ -1229,8 +1234,8 @@ class Script(default.Script):
self.presentMessage(messages.MODE_OBJECT)
_settingsManager.setSetting('layoutMode', layoutMode)
- def togglePresentationMode(self, inputEvent):
- [obj, characterOffset] = self.utilities.getCaretContext()
+ def togglePresentationMode(self, inputEvent, documentFrame=None):
+ [obj, characterOffset] = self.utilities.getCaretContext(documentFrame)
if self._inFocusMode:
try:
parentRole = obj.parent.getRole()
@@ -1262,7 +1267,11 @@ class Script(default.Script):
debug.println(debug.LEVEL_INFO, msg, True)
return True
- if not self.utilities.inDocumentContent(newFocus):
+ document = self.utilities.getTopLevelDocumentForObject(newFocus)
+ if not document and self.utilities.isDocument(newFocus):
+ document = newFocus
+
+ if not document:
msg = "WEB: Locus of focus changed to non-document obj"
self._madeFindAnnouncement = False
self._inFocusMode = False
@@ -1275,7 +1284,7 @@ class Script(default.Script):
caretOffset = 0
if self.utilities.inFindContainer(oldFocus) \
or (self.utilities.isDocument(newFocus) and oldFocus == orca_state.activeWindow):
- contextObj, contextOffset = self.utilities.getCaretContext()
+ contextObj, contextOffset = self.utilities.getCaretContext(documentFrame=document)
if contextObj and not self.utilities.isZombie(contextObj):
newFocus, caretOffset = contextObj, contextOffset
@@ -1288,8 +1297,8 @@ class Script(default.Script):
if text and (0 <= text.caretOffset <= text.characterCount):
caretOffset = text.caretOffset
- self.utilities.setCaretContext(newFocus, caretOffset)
- self.updateBraille(newFocus)
+ self.utilities.setCaretContext(newFocus, caretOffset, document)
+ self.updateBraille(newFocus, documentFrame=document)
orca.emitRegionChanged(newFocus, caretOffset)
if self._lastCommandWasMouseButton and event \
@@ -1357,7 +1366,7 @@ class Script(default.Script):
if not self._focusModeIsSticky \
and not self._browseModeIsSticky \
and self.useFocusMode(newFocus, oldFocus) != self._inFocusMode:
- self.togglePresentationMode(None)
+ self.togglePresentationMode(None, document)
return True
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index be5ad6aae..0d1c832fb 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -5089,8 +5089,7 @@ class Utilities(script_utilities.Utilities):
return obj, 0
# If we're here, start looking up the tree, up to the document.
- documentFrame = self.documentFrame()
- if self.isSameObject(obj, documentFrame):
+ if self.isTopLevelDocument(obj):
return None, -1
while obj and obj.parent:
@@ -5155,8 +5154,7 @@ class Utilities(script_utilities.Utilities):
return obj, 0
# If we're here, start looking up the tree, up to the document.
- documentFrame = self.documentFrame()
- if self.isSameObject(obj, documentFrame):
+ if self.isTopLevelDocument(obj):
return None, -1
while obj and obj.parent:
diff --git a/src/orca/scripts/web/speech_generator.py b/src/orca/scripts/web/speech_generator.py
index 2fe6aed32..0134078a9 100644
--- a/src/orca/scripts/web/speech_generator.py
+++ b/src/orca/scripts/web/speech_generator.py
@@ -782,7 +782,8 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
oldRole = self._overrideRole(self._getAlternativeRole(obj, **args), args)
if not 'priorObj' in args:
- args['priorObj'] = self._script.utilities.getPriorContext()[0]
+ document = self._script.utilities.getTopLevelDocumentForObject(obj)
+ args['priorObj'] = self._script.utilities.getPriorContext(document)[0]
if not result:
result = list(filter(lambda x: x, super().generateSpeech(obj, **args)))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]