diff options
-rw-r--r-- | sd/source/ui/unoidl/DrawController.cxx | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/sd/source/ui/unoidl/DrawController.cxx b/sd/source/ui/unoidl/DrawController.cxx index 011bfe939858..8ae76e58e66b 100644 --- a/sd/source/ui/unoidl/DrawController.cxx +++ b/sd/source/ui/unoidl/DrawController.cxx @@ -182,8 +182,27 @@ sal_Bool SAL_CALL DrawController::suspend( sal_Bool Suspend ) { // do not allow suspend if a slideshow needs this controller! rtl::Reference< SlideShow > xSlideShow( SlideShow::GetSlideShow( *pViewShellBase ) ); - if( xSlideShow.is() && xSlideShow->dependsOn(pViewShellBase) ) - return false; + if (xSlideShow.is()) + { + if (SlideShow::IsInteractiveSlideshow()) + { + // IASS mode: If preview mode, end it + if (xSlideShow->isInteractiveSetup()) + xSlideShow->endInteractivePreview(); + + // end the SlideShow + xSlideShow->end(); + + // use SfxBaseController::suspend( Suspend ) below + // for normal processing and return value + } + else + { + // original reaction - prevent exit + if (xSlideShow->dependsOn(pViewShellBase)) + return false; + } + } } } |