[orca] Try to handle more cases of CSSed text being exposed as one char per line
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Try to handle more cases of CSSed text being exposed as one char per line
- Date: Wed, 24 Jul 2019 00:19:17 +0000 (UTC)
commit cbd7e10aa3923331be14b6b0b3a27ee641b87b0b
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Tue Jul 23 20:18:17 2019 -0400
Try to handle more cases of CSSed text being exposed as one char per line
src/orca/scripts/web/script_utilities.py | 41 ++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
---
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 7c61f7e8b..7b3995cc4 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -72,6 +72,7 @@ class Utilities(script_utilities.Utilities):
self._isOffScreenLabel = {}
self._isOffScreenLink = {}
self._isOffScreenTextBlockElement = {}
+ self._elementLinesAreSingleChars= {}
self._hasExplicitName = {}
self._hasNoSize = {}
self._hasLongDesc = {}
@@ -150,6 +151,7 @@ class Utilities(script_utilities.Utilities):
self._isOffScreenLabel = {}
self._isOffScreenLink = {}
self._isOffScreenTextBlockElement = {}
+ self._elementLinesAreSingleChars= {}
self._hasExplicitName = {}
self._hasNoSize = {}
self._hasLongDesc = {}
@@ -1261,6 +1263,16 @@ class Utilities(script_utilities.Utilities):
debug.println(debug.LEVEL_INFO, msg, True)
boundary = None
+ if self.elementLinesAreSingleChars(obj):
+ if obj.name:
+ msg = "WEB: Returning name as contents for %s (single-char lines)" % obj
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return [[obj, 0, len(obj.name), obj.name]]
+
+ msg = "WEB: Returning all text as contents for %s (single-char lines)" % obj
+ debug.println(debug.LEVEL_INFO, msg, True)
+ boundary = None
+
role = obj.getRole()
if role == pyatspi.ROLE_INTERNAL_FRAME and obj.childCount == 1:
return self._getContentsForObj(obj[0], 0, boundary)
@@ -2679,6 +2691,35 @@ class Utilities(script_utilities.Utilities):
self._isOffScreenLink[hash(obj)] = rv
return rv
+ def elementLinesAreSingleChars(self, obj):
+ if not (obj and self.inDocumentContent(obj)):
+ return False
+
+ rv = self._elementLinesAreSingleChars.get(hash(obj))
+ if rv is not None:
+ return rv
+
+ text = self.queryNonEmptyText(obj)
+ if not text:
+ return False
+
+ try:
+ nChars = text.characterCount
+ except:
+ return False
+
+ boundary = pyatspi.TEXT_BOUNDARY_LINE_START
+ for i in range(nChars):
+ string, start, end = text.getTextAtOffset(i, boundary)
+ if len(string) > 1:
+ rv = False
+ break
+ else:
+ rv = True
+
+ self._elementLinesAreSingleChars[hash(obj)] = rv
+ return rv
+
def isOffScreenLabel(self, obj):
if not (obj and self.inDocumentContent(obj)):
return False
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]