diff --git a/source/NVDAObjects/UIA/__init__.py b/source/NVDAObjects/UIA/__init__.py index 4c57ae22374..68a12dd7000 100644 --- a/source/NVDAObjects/UIA/__init__.py +++ b/source/NVDAObjects/UIA/__init__.py @@ -122,13 +122,15 @@ def _getControlFieldForObject(self, obj): def _iterUIARangeByUnit(self,rangeObj,unit): tempRange=rangeObj.clone() tempRange.MoveEndpointByRange(UIAHandler.TextPatternRangeEndpoint_End,rangeObj,UIAHandler.TextPatternRangeEndpoint_Start) - while tempRange.MoveEndpointByUnit(UIAHandler.TextPatternRangeEndpoint_End,unit,1)>0: + endRange=tempRange.Clone() + while endRange.Move(unit,1)>0: + tempRange.MoveEndpointByRange(UIAHandler.TextPatternRangeEndpoint_End,endRange,UIAHandler.TextPatternRangeEndpoint_Start) pastEnd=tempRange.CompareEndpoints(UIAHandler.TextPatternRangeEndpoint_End,rangeObj,UIAHandler.TextPatternRangeEndpoint_End)>0 if pastEnd: tempRange.MoveEndpointByRange(UIAHandler.TextPatternRangeEndpoint_End,rangeObj,UIAHandler.TextPatternRangeEndpoint_End) yield tempRange.clone() if pastEnd: - break + return tempRange.MoveEndpointByRange(UIAHandler.TextPatternRangeEndpoint_Start,tempRange,UIAHandler.TextPatternRangeEndpoint_End) # Ensure that we always reach the end of the outer range, even if the units seem to stop somewhere inside if tempRange.CompareEndpoints(UIAHandler.TextPatternRangeEndpoint_End,rangeObj,UIAHandler.TextPatternRangeEndpoint_End)<0: @@ -149,6 +151,8 @@ def _getFormatFieldsAndText(self,tempRange,formatConfig): elif annotationTypes==UIAHandler.handler.ReservedMixedAttributeValue: for r in self._iterUIARangeByUnit(tempRange,UIAHandler.TextUnit_Word): text=r.GetText(-1) + if not text: + continue r.MoveEndpointByRange(UIAHandler.TextPatternRangeEndpoint_End,r,UIAHandler.TextPatternRangeEndpoint_Start) r.ExpandToEnclosingUnit(UIAHandler.TextUnit_Character) try: diff --git a/source/appModules/powerpnt.py b/source/appModules/powerpnt.py index 182a4fa2f60..317ce2d74f9 100644 --- a/source/appModules/powerpnt.py +++ b/source/appModules/powerpnt.py @@ -1039,6 +1039,9 @@ def script_slideChange(self,gesture): gesture.send() self.rootNVDAObject.handleSlideChange() +class ReviewableSlideshowTreeInterceptor(ReviewCursorManager,SlideShowTreeInterceptor): + """A TreeInterceptor for Slide show content but with caret navigation via ReviewCursorManager.""" + __gestures={ "kb:space":"slideChange", "kb:enter":"slideChange", @@ -1048,10 +1051,6 @@ def script_slideChange(self,gesture): "kb:control+shift+s":"toggleNotesMode", } -class ReviewableSlideshowTreeInterceptor(ReviewCursorManager,SlideShowTreeInterceptor): - """A TreeInterceptor for Slide show content but with caret navigation via ReivewCursorManager.""" - pass - class SlideShowWindow(PaneClassDC): _lastSlideChangeID=None diff --git a/user_docs/en/changes.t2t b/user_docs/en/changes.t2t index 3b014db10bc..b97d57b6e0f 100644 --- a/user_docs/en/changes.t2t +++ b/user_docs/en/changes.t2t @@ -21,9 +21,10 @@ == Bug Fixes == - Character descriptions are now handled correctly for conjunct characters in certain Indian languages. (#4582) - If the "Trust voice's language when processing characters and symbols" option is enabled, the Punctuation/Symbol pronunciation dialog now correctly uses the voice language. Also, the language for which pronunciation is being edited is shown in the dialog's title. (#4930) --In Internet Explorer and other MSHTML controls, typed characters are no longer inappropriately announced in editable combo boxes such as the Google search field on the Google home page. (#4976) +- In Internet Explorer and other MSHTML controls, typed characters are no longer inappropriately announced in editable combo boxes such as the Google search field on the Google home page. (#4976) - When selecting colors in Microsoft Office applications, color names are now reported. (#3045) - Danish braille output now works again. (#4986) +- pageUp / pageDown can now be used again to change slides within a PowerPoint slide show. (#4850) == Changes for Developers ==