[orca] Improve presentation of Calc cells being edited
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Improve presentation of Calc cells being edited
- Date: Fri, 8 Nov 2013 21:13:24 +0000 (UTC)
commit 498df98091324a31a0c7ab32d69cc6be8e7fe438
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Nov 8 15:27:13 2013 -0500
Improve presentation of Calc cells being edited
src/orca/scripts/apps/soffice/script.py | 17 +++++++++------
src/orca/scripts/apps/soffice/script_utilities.py | 22 +++++++++++---------
src/orca/scripts/apps/soffice/speech_generator.py | 11 ++++++++++
3 files changed, 33 insertions(+), 17 deletions(-)
---
diff --git a/src/orca/scripts/apps/soffice/script.py b/src/orca/scripts/apps/soffice/script.py
index a772307..3aa4730 100644
--- a/src/orca/scripts/apps/soffice/script.py
+++ b/src/orca/scripts/apps/soffice/script.py
@@ -902,15 +902,15 @@ class Script(default.Script):
if self.isStructuralNavigationCommand():
return
- role = event.source.getRole()
- if role == pyatspi.ROLE_EXTENDED:
- if event.source.getRoleName() == 'text frame':
- return
+ if not event.detail1:
+ return
+
+ if event.source.getRoleName() == 'text frame':
+ return
parent = event.source.parent
- if parent and parent.getRole() == pyatspi.ROLE_EXTENDED:
- if parent.getRoleName() == 'text frame':
- return
+ if parent and parent.getRoleName() == 'text frame':
+ return
default.Script.onStateChanged(self, event)
@@ -932,6 +932,9 @@ class Script(default.Script):
and self.utilities.isSameObject(obj, event.source):
return
+ if self.utilities.isCellBeingEdited(event.source):
+ orca.setLocusOfFocus(event, event.source.parent)
+
# The lists and combo boxes in the Formatting toolbar emit
# object:active-descendant-changed events which cause us
# to set the locusOfFocus to the list item. If the user then
diff --git a/src/orca/scripts/apps/soffice/script_utilities.py
b/src/orca/scripts/apps/soffice/script_utilities.py
index 4aabc96..271daca 100644
--- a/src/orca/scripts/apps/soffice/script_utilities.py
+++ b/src/orca/scripts/apps/soffice/script_utilities.py
@@ -97,6 +97,17 @@ class Utilities(script_utilities.Utilities):
return readOnly
+ def isCellBeingEdited(self, obj):
+ if not obj:
+ return False
+
+ parent = obj.parent
+ if parent and parent.getRoleName() == 'text frame':
+ if self.spreadSheetCellName(parent):
+ return True
+
+ return False
+
def isSpreadSheetCell(self, obj, startFromTable=False):
"""Return an indication of whether the given obj is a spread sheet
table cell.
@@ -116,16 +127,7 @@ class Utilities(script_utilities.Utilities):
try:
table = obj.queryTable()
except:
- # There really doesn't seem to be a good way to identify
- # when the user is editing a cell because it has a role
- # of paragraph and no table in the ancestry. This hack is
- # a carry-over from the whereAmI code.
- #
- if cell.getRole() == pyatspi.ROLE_PARAGRAPH:
- top = self.topLevelObject(cell)
- return (top and top.name.endswith(" Calc"))
- else:
- return False
+ return self.isCellBeingEdited(cell)
else:
return table.nRows in [65536, 1048576]
diff --git a/src/orca/scripts/apps/soffice/speech_generator.py
b/src/orca/scripts/apps/soffice/speech_generator.py
index 80150e1..885185b 100644
--- a/src/orca/scripts/apps/soffice/speech_generator.py
+++ b/src/orca/scripts/apps/soffice/speech_generator.py
@@ -425,6 +425,14 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
return (speech_generator.SpeechGenerator._generateEndOfTableIndicator(
self, obj, **args))
+ def _generateNewAncestors(self, obj, **args):
+ priorObj = args.get('priorObj', None)
+ if not priorObj or priorObj.getRoleName() == 'text frame':
+ return []
+
+ return speech_generator.SpeechGenerator._generateNewAncestors(
+ self, obj, **args)
+
def _generateOldAncestors(self, obj, **args):
"""Returns an array of strings (and possibly voice and audio
specifications) that represent the text of the ancestors for
@@ -434,6 +442,9 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
if not priorObj:
return []
+ if obj.getRoleName() == 'text frame':
+ return []
+
isTable = lambda x: x and x.getRole() == pyatspi.ROLE_TABLE
oldTable = pyatspi.findAncestor(priorObj, isTable)
if oldTable:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]