[orca] Improve behavior navigating in tables in web-based rich-text editors
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Improve behavior navigating in tables in web-based rich-text editors
- Date: Tue, 21 Apr 2020 20:18:31 +0000 (UTC)
commit d792ba010b6994e0c92a4cffcb9ed17272453e9b
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Tue Apr 21 16:13:36 2020 -0400
Improve behavior navigating in tables in web-based rich-text editors
* Ensure we treat editable table cells as caret-navigable
* Don't read the full row or present row headers for cells when
navigating by line
src/orca/scripts/web/script_utilities.py | 14 ++++++++++----
src/orca/scripts/web/speech_generator.py | 4 +---
2 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 7e8ac57fe..e48f51960 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -913,7 +913,10 @@ class Utilities(script_utilities.Utilities):
elif role == pyatspi.ROLE_LIST_ITEM:
rv = obj.parent.getRole() != pyatspi.ROLE_LIST
elif role == pyatspi.ROLE_TABLE_CELL:
- rv = not self.isTextBlockElement(obj)
+ if obj.getState().contains(pyatspi.STATE_EDITABLE):
+ rv = False
+ else:
+ rv = not self.isTextBlockElement(obj)
self._isNonEntryTextWidget[hash(obj)] = rv
return rv
@@ -1018,6 +1021,10 @@ class Utilities(script_utilities.Utilities):
if role in roles:
return True
+ state = obj.getState()
+ if state.contains(pyatspi.STATE_EDITABLE):
+ return False
+
if role == pyatspi.ROLE_TABLE_CELL:
if self.isFocusModeWidget(obj):
return True
@@ -1029,7 +1036,7 @@ class Utilities(script_utilities.Utilities):
return True
if role == pyatspi.ROLE_COMBO_BOX:
- return not self.isEditableComboBox(obj)
+ return True
if role == pyatspi.ROLE_EMBEDDED:
return not self._script.browseModeIsSticky()
@@ -2727,8 +2734,7 @@ class Utilities(script_utilities.Utilities):
if self.isGridDescendant(obj):
return not self._script.inFocusMode()
- # TODO - JD: This is private.
- if self._script._lastCommandWasCaretNav:
+ if self.lastInputEventWasLineNav():
return False
return True
diff --git a/src/orca/scripts/web/speech_generator.py b/src/orca/scripts/web/speech_generator.py
index 4dd39fe82..6e92669c8 100644
--- a/src/orca/scripts/web/speech_generator.py
+++ b/src/orca/scripts/web/speech_generator.py
@@ -724,9 +724,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
return super()._generateTableCellRow(obj, **args)
def _generateRowHeader(self, obj, **args):
- # TODO - JD: _lastCommandWasCaretNav is private.
- if self._script.utilities.lastInputEventWasLineNav() \
- and self._script._lastCommandWasCaretNav:
+ if self._script.utilities.lastInputEventWasLineNav():
return []
return super()._generateRowHeader(obj)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]