Skip to content

Commit

Permalink
Revert "UIA in Win Console: fix setEndPoint/compareEndPoints (PR nvac…
Browse files Browse the repository at this point in the history
…cess#10057)"

This reverts commit 39d20e2.
  • Loading branch information
codeofdusk authored Aug 13, 2019
1 parent 26485a0 commit 9a3afa6
Showing 1 changed file with 3 additions and 37 deletions.
40 changes: 3 additions & 37 deletions source/NVDAObjects/UIA/winConsoleUIA.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,48 +153,14 @@ def expand(self, unit):
else:
return super(consoleUIATextInfo, self).expand(unit)

def compareEndPoints(self, other, which):
def _get_isCollapsed(self):
"""Works around a UIA bug on Windows 10 1803 and later."""
# Even when a console textRange's start and end have been moved to the
# same position, the console incorrectly reports the end as being
# past the start.
# Compare to the start (not the end) when collapsed.
selfEndPoint, otherEndPoint = which.split("To")
if selfEndPoint == "end" and not self._isCollapsed():
selfEndPoint = "start"
if otherEndPoint == "End" and not other._isCollapsed():
otherEndPoint = "Start"
which = f"{selfEndPoint}To{otherEndPoint}"
return super().compareEndPoints(other, which=which)

def setEndPoint(self, other, which):
"""Override of L{textInfos.TextInfo.setEndPoint}.
Works around a UIA bug on Windows 10 1803 and later that means we can
not trust the "end" endpoint of a collapsed (empty) text range
for comparisons.
"""
selfEndPoint, otherEndPoint = which.split("To")
# In this case, there is no need to check if self is collapsed
# since the point of this method is to change its text range, modifying the "end" endpoint of a collapsed
# text range is fine.
if otherEndPoint == "End" and not other._isCollapsed():
otherEndPoint = "Start"
which = f"{selfEndPoint}To{otherEndPoint}"
return super().setEndPoint(other, which=which)

def _isCollapsed(self):
"""Works around a UIA bug on Windows 10 1803 and later that means we
cannot trust the "end" endpoint of a collapsed (empty) text range
for comparisons.
Instead we check to see if we can get the first character from the
text range. A collapsed range will not have any characters
and will return an empty string."""
return not bool(self._rangeObj.getText(1))

def _get_isCollapsed(self):
# To decide if the textRange is collapsed,
# Therefore to decide if the textRange is collapsed,
# Check if it has no text.
return self._isCollapsed
return not bool(self._rangeObj.getText(1))

def _getCurrentOffsetInThisLine(self, lineInfo):
"""
Expand Down

0 comments on commit 9a3afa6

Please sign in to comment.