This is an automated email from the ASF dual-hosted git repository. ardovm pushed a commit to branch AOO42X in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit 636491ffbdbd1e0cf8ddfd8b9f1182475f3d96b8 Author: Arrigo Marchiori <[email protected]> AuthorDate: Fri Mar 29 21:25:07 2024 +0100 Search forward or backward for a visible slide Fixes bug #60859 (cherry picked from commit 4ac3bde70fd91802a5ddff308c1ad71e97d33629) --- main/sd/source/ui/slideshow/slideshowimpl.cxx | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/main/sd/source/ui/slideshow/slideshowimpl.cxx b/main/sd/source/ui/slideshow/slideshowimpl.cxx index ef000f8d7b..0c18b3b676 100644 --- a/main/sd/source/ui/slideshow/slideshowimpl.cxx +++ b/main/sd/source/ui/slideshow/slideshowimpl.cxx @@ -238,13 +238,23 @@ AnimationSlideController::AnimationSlideController( Reference< XIndexAccess > xS void AnimationSlideController::setStartSlideNumber( sal_Int32 nSlideNumber ) { - while( ( !maSlideVisible[nSlideNumber] ) - || ( nSlideNumber > maSlideVisible.size() ) ) nSlideNumber++; - - if(nSlideNumber > maSlideVisible.size()) - mnStartSlideNumber = 0; - else - mnStartSlideNumber = nSlideNumber; + mnStartSlideNumber = nSlideNumber; + if ( maSlideVisible[mnStartSlideNumber] ) + return; + // Search forward for the first visible slide + for ( ; ( (size_t)mnStartSlideNumber < maSlideVisible.size() ) ; + mnStartSlideNumber++ ) { + if ( maSlideVisible[mnStartSlideNumber] ) + return; + } + // Search backward for the first visible slide + for (mnStartSlideNumber = nSlideNumber ; + ( mnStartSlideNumber >= 0 ) ; mnStartSlideNumber-- ) { + if ( maSlideVisible[mnStartSlideNumber] ) + return; + } + // No visible slides! Surrender to the request + mnStartSlideNumber = nSlideNumber; } sal_Int32 AnimationSlideController::getStartSlideIndex() const
