summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-02-14 09:11:33 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-02-15 07:51:48 +0100
commitb104e6e979bab16605840c2a14914917d5e552b3 (patch)
treec06984224bafa77c6f2825da572094c4a498f005
parentfcdfb94ac11cd4832ad68c896c706fb3cb376ce4 (diff)
loplugin:flatten in sd/source/ui/slideshow
Change-Id: Id820f0f7ac51928ba1a783615c3e9d6c268affdd Reviewed-on: https://gerrit.libreoffice.org/67831 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--sd/source/ui/slideshow/PaneHider.cxx5
-rw-r--r--sd/source/ui/slideshow/SlideShowRestarter.cxx78
-rw-r--r--sd/source/ui/slideshow/showwin.cxx24
-rw-r--r--sd/source/ui/slideshow/slideshow.cxx278
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx640
-rw-r--r--sd/source/ui/slideshow/slideshowviewimpl.cxx50
6 files changed, 548 insertions, 527 deletions
diff --git a/sd/source/ui/slideshow/PaneHider.cxx b/sd/source/ui/slideshow/PaneHider.cxx
index 2c80e67f2f50..d4265dbbb80f 100644
--- a/sd/source/ui/slideshow/PaneHider.cxx
+++ b/sd/source/ui/slideshow/PaneHider.cxx
@@ -45,7 +45,10 @@ PaneHider::PaneHider (const ViewShell& rViewShell, SlideshowImpl* pSlideShow)
{
// Hide the left and right pane windows when a slideshow exists and is
// not full screen.
- if (pSlideShow!=nullptr && !pSlideShow->isFullScreen()) try
+ if (pSlideShow==nullptr || pSlideShow->isFullScreen())
+ return;
+
+ try
{
Reference<XControllerManager> xControllerManager (
mrViewShell.GetViewShellBase().GetController(), UNO_QUERY_THROW);
diff --git a/sd/source/ui/slideshow/SlideShowRestarter.cxx b/sd/source/ui/slideshow/SlideShowRestarter.cxx
index 597f30ddb1cc..957ad4496af0 100644
--- a/sd/source/ui/slideshow/SlideShowRestarter.cxx
+++ b/sd/source/ui/slideshow/SlideShowRestarter.cxx
@@ -81,46 +81,46 @@ void SlideShowRestarter::Restart (bool bForce)
IMPL_LINK_NOARG(SlideShowRestarter, EndPresentation, void*, void)
{
mnEventId = nullptr;
- if (mpSlideShow.is())
+ if (!mpSlideShow.is())
+ return;
+
+ if (mnDisplayCount == static_cast<sal_Int32>(Application::GetScreenCount()))
+ return;
+
+ bool bIsExitAfterPresenting = mpSlideShow->IsExitAfterPresenting();
+ mpSlideShow->SetExitAfterPresenting(false);
+ mpSlideShow->end();
+ mpSlideShow->SetExitAfterPresenting(bIsExitAfterPresenting);
+
+ // The following piece of code should not be here because the
+ // slide show should be aware of the existence of the presenter
+ // console (which is displayed in the FullScreenPane). But the
+ // timing has to be right and I did not find a better place for
+ // it.
+
+ // Wait for the full screen pane, which displays the presenter
+ // console, to disappear. Only when it is gone, call
+ // InitiatePresenterStart(), in order to begin the asynchronous
+ // restart of the slide show.
+ if (mpViewShellBase == nullptr)
+ return;
+
+ ::std::shared_ptr<FrameworkHelper> pHelper(
+ FrameworkHelper::Instance(*mpViewShellBase));
+ if (pHelper->GetConfigurationController()->getResource(
+ FrameworkHelper::CreateResourceId(FrameworkHelper::msFullScreenPaneURL)).is())
{
- if (mnDisplayCount != static_cast<sal_Int32>(Application::GetScreenCount()))
- {
- bool bIsExitAfterPresenting = mpSlideShow->IsExitAfterPresenting();
- mpSlideShow->SetExitAfterPresenting(false);
- mpSlideShow->end();
- mpSlideShow->SetExitAfterPresenting(bIsExitAfterPresenting);
-
- // The following piece of code should not be here because the
- // slide show should be aware of the existence of the presenter
- // console (which is displayed in the FullScreenPane). But the
- // timing has to be right and I did not find a better place for
- // it.
-
- // Wait for the full screen pane, which displays the presenter
- // console, to disappear. Only when it is gone, call
- // InitiatePresenterStart(), in order to begin the asynchronous
- // restart of the slide show.
- if (mpViewShellBase != nullptr)
- {
- ::std::shared_ptr<FrameworkHelper> pHelper(
- FrameworkHelper::Instance(*mpViewShellBase));
- if (pHelper->GetConfigurationController()->getResource(
- FrameworkHelper::CreateResourceId(FrameworkHelper::msFullScreenPaneURL)).is())
- {
- ::sd::framework::ConfigurationController::Lock aLock (
- pHelper->GetConfigurationController());
-
- pHelper->RunOnConfigurationEvent(
- FrameworkHelper::msConfigurationUpdateEndEvent,
- ::std::bind(&SlideShowRestarter::StartPresentation, shared_from_this()));
- pHelper->UpdateConfiguration();
- }
- else
- {
- StartPresentation();
- }
- }
- }
+ ::sd::framework::ConfigurationController::Lock aLock (
+ pHelper->GetConfigurationController());
+
+ pHelper->RunOnConfigurationEvent(
+ FrameworkHelper::msConfigurationUpdateEndEvent,
+ ::std::bind(&SlideShowRestarter::StartPresentation, shared_from_this()));
+ pHelper->UpdateConfiguration();
+ }
+ else
+ {
+ StartPresentation();
}
}
diff --git a/sd/source/ui/slideshow/showwin.cxx b/sd/source/ui/slideshow/showwin.cxx
index 9af16e40e4a6..952dcd960478 100644
--- a/sd/source/ui/slideshow/showwin.cxx
+++ b/sd/source/ui/slideshow/showwin.cxx
@@ -294,21 +294,21 @@ void ShowWindow::LoseFocus()
void ShowWindow::SetEndMode()
{
- if( ( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView() )
- {
- DeleteWindowFromPaintView();
- meShowWindowMode = SHOWWINDOWMODE_END;
- maShowBackground = Wallpaper( COL_BLACK );
+ if( !(( SHOWWINDOWMODE_NORMAL == meShowWindowMode ) && mpViewShell && mpViewShell->GetView()) )
+ return;
- // hide navigator if it is visible
- if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
- {
- mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, false );
- mbShowNavigatorAfterSpecialMode = true;
- }
+ DeleteWindowFromPaintView();
+ meShowWindowMode = SHOWWINDOWMODE_END;
+ maShowBackground = Wallpaper( COL_BLACK );
- Invalidate();
+ // hide navigator if it is visible
+ if( mpViewShell->GetViewFrame()->GetChildWindow( SID_NAVIGATOR ) )
+ {
+ mpViewShell->GetViewFrame()->ShowChildWindow( SID_NAVIGATOR, false );
+ mbShowNavigatorAfterSpecialMode = true;
}
+
+ Invalidate();
}
bool ShowWindow::SetPauseMode( sal_Int32 nTimeout, Graphic const * pLogo )
diff --git a/sd/source/ui/slideshow/slideshow.cxx b/sd/source/ui/slideshow/slideshow.cxx
index 864cc4a8b2bb..ccb2924e7a08 100644
--- a/sd/source/ui/slideshow/slideshow.cxx
+++ b/sd/source/ui/slideshow/slideshow.cxx
@@ -650,135 +650,135 @@ void SAL_CALL SlideShow::end()
mbIsInStartup = false;
rtl::Reference< SlideshowImpl > xController( mxController );
- if( xController.is() )
+ if( !xController.is() )
+ return;
+
+ mxController.clear();
+
+ if( mpFullScreenFrameView )
{
- mxController.clear();
+ delete mpFullScreenFrameView;
+ mpFullScreenFrameView = nullptr;
+ }
- if( mpFullScreenFrameView )
- {
- delete mpFullScreenFrameView;
- mpFullScreenFrameView = nullptr;
- }
+ ViewShellBase* pFullScreenViewShellBase = mpFullScreenViewShellBase;
+ mpFullScreenViewShellBase = nullptr;
- ViewShellBase* pFullScreenViewShellBase = mpFullScreenViewShellBase;
- mpFullScreenViewShellBase = nullptr;
+ // dispose before fullscreen window changes screens
+ // (potentially). If this needs to be moved behind
+ // pWorkWindow->StartPresentationMode() again, read issue
+ // pWorkWindow->i94007 & implement the solution outlined
+ // there.
+ xController->dispose();
- // dispose before fullscreen window changes screens
- // (potentially). If this needs to be moved behind
- // pWorkWindow->StartPresentationMode() again, read issue
- // pWorkWindow->i94007 & implement the solution outlined
- // there.
- xController->dispose();
+ if( pFullScreenViewShellBase )
+ {
+ PresentationViewShell* pShell = dynamic_cast<PresentationViewShell*>(pFullScreenViewShellBase->GetMainViewShell().get());
- if( pFullScreenViewShellBase )
+ if( pShell && pShell->GetViewFrame() )
{
- PresentationViewShell* pShell = dynamic_cast<PresentationViewShell*>(pFullScreenViewShellBase->GetMainViewShell().get());
-
- if( pShell && pShell->GetViewFrame() )
+ WorkWindow* pWorkWindow = dynamic_cast<WorkWindow*>(pShell->GetViewFrame()->GetFrame().GetWindow().GetParent());
+ if( pWorkWindow )
{
- WorkWindow* pWorkWindow = dynamic_cast<WorkWindow*>(pShell->GetViewFrame()->GetFrame().GetWindow().GetParent());
- if( pWorkWindow )
- {
- pWorkWindow->StartPresentationMode( (mxController.is() && mxController->maPresSettings.mbAlwaysOnTop)
- ? PresentationFlags::HideAllApps : PresentationFlags::NONE );
- }
+ pWorkWindow->StartPresentationMode( (mxController.is() && mxController->maPresSettings.mbAlwaysOnTop)
+ ? PresentationFlags::HideAllApps : PresentationFlags::NONE );
}
}
+ }
- if( pFullScreenViewShellBase )
+ if( pFullScreenViewShellBase )
+ {
+ PresentationViewShell* pShell = nullptr;
{
- PresentationViewShell* pShell = nullptr;
- {
- // Get the shell pointer in its own scope to be sure that
- // the shared_ptr to the shell is released before DoClose()
- // is called.
- ::std::shared_ptr<ViewShell> pSharedView (pFullScreenViewShellBase->GetMainViewShell());
- pShell = dynamic_cast<PresentationViewShell*>(pSharedView.get());
- }
- if( pShell && pShell->GetViewFrame() )
- pShell->GetViewFrame()->DoClose();
+ // Get the shell pointer in its own scope to be sure that
+ // the shared_ptr to the shell is released before DoClose()
+ // is called.
+ ::std::shared_ptr<ViewShell> pSharedView (pFullScreenViewShellBase->GetMainViewShell());
+ pShell = dynamic_cast<PresentationViewShell*>(pSharedView.get());
}
- else if( mpCurrentViewShellBase )
+ if( pShell && pShell->GetViewFrame() )
+ pShell->GetViewFrame()->DoClose();
+ }
+ else if( mpCurrentViewShellBase )
+ {
+ ViewShell* pViewShell = mpCurrentViewShellBase->GetMainViewShell().get();
+
+ if( pViewShell )
{
- ViewShell* pViewShell = mpCurrentViewShellBase->GetMainViewShell().get();
+ FrameView* pFrameView = pViewShell->GetFrameView();
- if( pViewShell )
+ if( pFrameView && (pFrameView->GetPresentationViewShellId() != SID_VIEWSHELL0) )
{
- FrameView* pFrameView = pViewShell->GetFrameView();
-
- if( pFrameView && (pFrameView->GetPresentationViewShellId() != SID_VIEWSHELL0) )
- {
- ViewShell::ShellType ePreviousType (pFrameView->GetPreviousViewShellType());
- pFrameView->SetPreviousViewShellType(ViewShell::ST_NONE);
+ ViewShell::ShellType ePreviousType (pFrameView->GetPreviousViewShellType());
+ pFrameView->SetPreviousViewShellType(ViewShell::ST_NONE);
- pFrameView->SetPresentationViewShellId(SID_VIEWSHELL0);
- pFrameView->SetPreviousViewShellType(pViewShell->GetShellType());
+ pFrameView->SetPresentationViewShellId(SID_VIEWSHELL0);
+ pFrameView->SetPreviousViewShellType(pViewShell->GetShellType());
- framework::FrameworkHelper::Instance(*mpCurrentViewShellBase)->RequestView(
- framework::FrameworkHelper::GetViewURL(ePreviousType),
- framework::FrameworkHelper::msCenterPaneURL);
+ framework::FrameworkHelper::Instance(*mpCurrentViewShellBase)->RequestView(
+ framework::FrameworkHelper::GetViewURL(ePreviousType),
+ framework::FrameworkHelper::msCenterPaneURL);
- pViewShell->GetViewFrame()->GetBindings().InvalidateAll( true );
- }
+ pViewShell->GetViewFrame()->GetBindings().InvalidateAll( true );
}
}
+ }
- if( mpCurrentViewShellBase )
+ if( mpCurrentViewShellBase )
+ {
+ ViewShell* pViewShell = mpCurrentViewShellBase->GetMainViewShell().get();
+ if( pViewShell )
{
- ViewShell* pViewShell = mpCurrentViewShellBase->GetMainViewShell().get();
- if( pViewShell )
- {
- // invalidate the view shell so the presentation slot will be re-enabled
- // and the rehearsing will be updated
- pViewShell->Invalidate();
+ // invalidate the view shell so the presentation slot will be re-enabled
+ // and the rehearsing will be updated
+ pViewShell->Invalidate();
- if( xController->meAnimationMode ==ANIMATIONMODE_SHOW )
+ if( xController->meAnimationMode ==ANIMATIONMODE_SHOW )
+ {
+ // switch to the previously visible Slide
+ DrawViewShell* pDrawViewShell = dynamic_cast<DrawViewShell*>( pViewShell );
+ if( pDrawViewShell )
+ pDrawViewShell->SwitchPage( static_cast<sal_uInt16>(xController->getRestoreSlide()) );
+ else
{
- // switch to the previously visible Slide
- DrawViewShell* pDrawViewShell = dynamic_cast<DrawViewShell*>( pViewShell );
- if( pDrawViewShell )
- pDrawViewShell->SwitchPage( static_cast<sal_uInt16>(xController->getRestoreSlide()) );
- else
- {
- Reference<XDrawView> xDrawView (
- Reference<XWeak>(&mpCurrentViewShellBase->GetDrawController()), UNO_QUERY);
- if (xDrawView.is())
- xDrawView->setCurrentPage(
- Reference<XDrawPage>(
- mpDoc->GetSdPage(xController->getRestoreSlide(), PageKind::Standard)->getUnoPage(),
- UNO_QUERY));
- }
+ Reference<XDrawView> xDrawView (
+ Reference<XWeak>(&mpCurrentViewShellBase->GetDrawController()), UNO_QUERY);
+ if (xDrawView.is())
+ xDrawView->setCurrentPage(
+ Reference<XDrawPage>(
+ mpDoc->GetSdPage(xController->getRestoreSlide(), PageKind::Standard)->getUnoPage(),
+ UNO_QUERY));
}
+ }
+
+ if( pViewShell->GetDoc()->IsExitAfterPresenting() )
+ {
+ pViewShell->GetDoc()->SetExitAfterPresenting( false );
- if( pViewShell->GetDoc()->IsExitAfterPresenting() )
+ Reference<frame::XDispatchProvider> xProvider(pViewShell->GetViewShellBase().GetController()->getFrame(),
+ UNO_QUERY);
+ if( xProvider.is() )
{
- pViewShell->GetDoc()->SetExitAfterPresenting( false );
+ util::URL aURL;
+ aURL.Complete = ".uno:CloseFrame";
- Reference<frame::XDispatchProvider> xProvider(pViewShell->GetViewShellBase().GetController()->getFrame(),
- UNO_QUERY);
- if( xProvider.is() )
+ uno::Reference< frame::XDispatch > xDispatch(
+ xProvider->queryDispatch(
+ aURL, OUString(), 0));
+ if( xDispatch.is() )
{
- util::URL aURL;
- aURL.Complete = ".uno:CloseFrame";
-
- uno::Reference< frame::XDispatch > xDispatch(
- xProvider->queryDispatch(
- aURL, OUString(), 0));
- if( xDispatch.is() )
- {
- xDispatch->dispatch(aURL,
- uno::Sequence< beans::PropertyValue >());
- }
+ xDispatch->dispatch(aURL,
+ uno::Sequence< beans::PropertyValue >());
}
}
}
- //Fire the acc focus event when focus is switched back. The above method mpCurrentViewShellBase->GetWindow()->GrabFocus() will
- //set focus to WorkWindow instead of the sd::window, so here call Shell's method to fire the focus event
- if (pViewShell)
- pViewShell->SwitchActiveViewFireFocus();
}
- mpCurrentViewShellBase = nullptr;
+ //Fire the acc focus event when focus is switched back. The above method mpCurrentViewShellBase->GetWindow()->GrabFocus() will
+ //set focus to WorkWindow instead of the sd::window, so here call Shell's method to fire the focus event
+ if (pViewShell)
+ pViewShell->SwitchActiveViewFireFocus();
}
+ mpCurrentViewShellBase = nullptr;
}
void SAL_CALL SlideShow::rehearseTimings()
@@ -1083,25 +1083,25 @@ void SlideShow::StartInPlacePresentation()
CreateController( nullptr, nullptr, mxCurrentSettings->mpParentWindow );
}
- if( mxController.is() )
+ if( !mxController.is() )
+ return;
+
+ bool bSuccess = false;
+ if( mxCurrentSettings.get() && mxCurrentSettings->mbPreview )
{
- bool bSuccess = false;
- if( mxCurrentSettings.get() && mxCurrentSettings->mbPreview )
- {
- bSuccess = mxController->startPreview(mxCurrentSettings->mxStartPage, mxCurrentSettings->mxAnimationNode, mxCurrentSettings->mpParentWindow );
- }
- else
- {
- bSuccess = mxController->startShow(mxCurrentSettings.get());
- }
+ bSuccess = mxController->startPreview(mxCurrentSettings->mxStartPage, mxCurrentSettings->mxAnimationNode, mxCurrentSettings->mpParentWindow );
+ }
+ else
+ {
+ bSuccess = mxController->startShow(mxCurrentSettings.get());
+ }
- if( !bSuccess )
- end();
- else
- {
- if( mpCurrentViewShellBase && ( !mxCurrentSettings.get() || ( mxCurrentSettings.get() && !mxCurrentSettings->mbPreview ) ) )
- mpCurrentViewShellBase->GetWindow()->GrabFocus();
- }
+ if( !bSuccess )
+ end();
+ else
+ {
+ if( mpCurrentViewShellBase && ( !mxCurrentSettings.get() || ( mxCurrentSettings.get() && !mxCurrentSettings->mbPreview ) ) )
+ mpCurrentViewShellBase->GetWindow()->GrabFocus();
}
}
@@ -1120,34 +1120,34 @@ void SlideShow::StartFullscreenPresentation( )
pWorkWindow->StartPresentationMode( true, mpDoc->getPresentationSettings().mbAlwaysOnTop ? PresentationFlags::HideAllApps : PresentationFlags::NONE, nDisplay);
// pWorkWindow->ShowFullScreenMode(sal_False, nDisplay);
- if (pWorkWindow->IsVisible())
- {
- // Initialize the new presentation view shell with a copy of the
- // frame view of the current view shell. This avoids that
- // changes made by the presentation have an effect on the other
- // view shells.
- FrameView* pOriginalFrameView = nullptr;
- ::std::shared_ptr<ViewShell> xShell(mpCurrentViewShellBase->GetMainViewShell());
- if (xShell.get())
- pOriginalFrameView = xShell->GetFrameView();
-
- delete mpFullScreenFrameView;
- mpFullScreenFrameView = new FrameView(mpDoc, pOriginalFrameView);
-
- // The new frame is created hidden. To make it visible and activate the
- // new view shell--a prerequisite to process slot calls and initialize
- // its panes--a GrabFocus() has to be called later on.
- SfxFrame* pNewFrame = SfxFrame::CreateHidden( *mpDoc->GetDocSh(), *pWorkWindow, PRESENTATION_FACTORY_ID );
- pNewFrame->SetPresentationMode(true);
+ if (!pWorkWindow->IsVisible())
+ return;
- mpFullScreenViewShellBase = static_cast<ViewShellBase*>(pNewFrame->GetCurrentViewFrame()->GetViewShell());
- if(mpFullScreenViewShellBase != nullptr)
- {
- // The following GrabFocus() is responsible for activating the
- // new view shell. Without it the screen remains blank (under
- // Windows and some Linux variants.)
- mpFullScreenViewShellBase->GetWindow()->GrabFocus();
- }
+ // Initialize the new presentation view shell with a copy of the
+ // frame view of the current view shell. This avoids that
+ // changes made by the presentation have an effect on the other
+ // view shells.
+ FrameView* pOriginalFrameView = nullptr;
+ ::std::shared_ptr<ViewShell> xShell(mpCurrentViewShellBase->GetMainViewShell());
+ if (xShell.get())
+ pOriginalFrameView = xShell->GetFrameView();
+
+ delete mpFullScreenFrameView;
+ mpFullScreenFrameView = new FrameView(mpDoc, pOriginalFrameView);
+
+ // The new frame is created hidden. To make it visible and activate the
+ // new view shell--a prerequisite to process slot calls and initialize
+ // its panes--a GrabFocus() has to be called later on.
+ SfxFrame* pNewFrame = SfxFrame::CreateHidden( *mpDoc->GetDocSh(), *pWorkWindow, PRESENTATION_FACTORY_ID );
+ pNewFrame->SetPresentationMode(true);
+
+ mpFullScreenViewShellBase = static_cast<ViewShellBase*>(pNewFrame->GetCurrentViewFrame()->GetViewShell());
+ if(mpFullScreenViewShellBase != nullptr)
+ {
+ // The following GrabFocus() is responsible for activating the
+ // new view shell. Without it the screen remains blank (under
+ // Windows and some Linux variants.)
+ mpFullScreenViewShellBase->GetWindow()->GrabFocus();
}
}
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index 330e37b24c6c..30229e0cfeb9 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -444,42 +444,42 @@ void AnimationSlideController::displayCurrentSlide( const Reference< XSlideShow
{
const sal_Int32 nCurrentSlideNumber = getCurrentSlideNumber();
- if( xShow.is() && (nCurrentSlideNumber != -1 ) )
- {
- Reference< XDrawPage > xSlide;
- Reference< XAnimationNode > xAnimNode;
- ::std::vector<PropertyValue> aProperties;
+ if( !(xShow.is() && (nCurrentSlideNumber != -1 )) )
+ return;
- const sal_Int32 nNextSlideNumber = getNextSlideNumber();
- if( getSlideAPI( nNextSlideNumber, xSlide, xAnimNode ) )
- {
- Sequence< Any > aValue(2);
- aValue[0] <<= xSlide;
- aValue[1] <<= xAnimNode;
- aProperties.emplace_back( "Prefetch" ,
- -1,
- Any(aValue),
- PropertyState_DIRECT_VALUE);
- }
- if (bSkipAllMainSequenceEffects)
- {
- // Add one property that prevents the slide transition from being
- // shown (to speed up the transition to the previous slide) and
- // one to show all main sequence effects so that the user can
- // continue to undo effects.
- aProperties.emplace_back( "SkipAllMainSequenceEffects",
- -1,
- Any(true),
- PropertyState_DIRECT_VALUE);
- aProperties.emplace_back("SkipSlideTransition",
- -1,
- Any(true),
- PropertyState_DIRECT_VALUE);
- }
+ Reference< XDrawPage > xSlide;
+ Reference< XAnimationNode > xAnimNode;
+ ::std::vector<PropertyValue> aProperties;
- if( getSlideAPI( nCurrentSlideNumber, xSlide, xAnimNode ) )
- xShow->displaySlide( xSlide, xDrawPages, xAnimNode, comphelper::containerToSequence(aProperties) );
+ const sal_Int32 nNextSlideNumber = getNextSlideNumber();
+ if( getSlideAPI( nNextSlideNumber, xSlide, xAnimNode ) )
+ {
+ Sequence< Any > aValue(2);
+ aValue[0] <<= xSlide;
+ aValue[1] <<= xAnimNode;
+ aProperties.emplace_back( "Prefetch" ,
+ -1,
+ Any(aValue),
+ PropertyState_DIRECT_VALUE);
+ }
+ if (bSkipAllMainSequenceEffects)
+ {
+ // Add one property that prevents the slide transition from being
+ // shown (to speed up the transition to the previous slide) and
+ // one to show all main sequence effects so that the user can
+ // continue to undo effects.
+ aProperties.emplace_back( "SkipAllMainSequenceEffects",
+ -1,
+ Any(true),
+ PropertyState_DIRECT_VALUE);
+ aProperties.emplace_back("SkipSlideTransition",
+ -1,
+ Any(true),
+ PropertyState_DIRECT_VALUE);
}
+
+ if( getSlideAPI( nCurrentSlideNumber, xSlide, xAnimNode ) )
+ xShow->displaySlide( xSlide, xDrawPages, xAnimNode, comphelper::containerToSequence(aProperties) );
}
static constexpr OUStringLiteral gsOnClick( "OnClick" );
@@ -1196,7 +1196,10 @@ bool SlideshowImpl::longpress(const CommandLongPressData &rLongPressData)
void SlideshowImpl::removeShapeEvents()
{
- if( mxShow.is() && mxListenerProxy.is() ) try
+ if( !(mxShow.is() && mxListenerProxy.is()) )
+ return;
+
+ try
{
for( const auto& rEntry : maShapeEventMap )
{
@@ -1215,7 +1218,10 @@ void SlideshowImpl::removeShapeEvents()
void SlideshowImpl::registerShapeEvents(sal_Int32 nSlideNumber)
{
- if( nSlideNumber >= 0 ) try
+ if( nSlideNumber < 0 )
+ return;
+
+ try
{
Reference< XDrawPagesSupplier > xDrawPages( mxModel, UNO_QUERY_THROW );
Reference< XIndexAccess > xPages( xDrawPages->getDrawPages(), UNO_QUERY_THROW );
@@ -1362,7 +1368,10 @@ void SAL_CALL SlideshowImpl::pause()
{
SolarMutexGuard aSolarGuard;
- if( !mbIsPaused ) try
+ if( mbIsPaused )
+ return;
+
+ try
{
mbIsPaused = true;
if( mxShow.is() )
@@ -1845,75 +1854,75 @@ IMPL_LINK( SlideshowImpl, EventListenerHdl, VclSimpleEvent&, rSimpleEvent, void
if( !mxShow.is() || mbInputFreeze )
return;
- if( (rSimpleEvent.GetId() == VclEventId::WindowCommand) && static_cast<VclWindowEvent*>(&rSimpleEvent)->GetData() )
- {
- const CommandEvent& rEvent = *static_cast<const CommandEvent*>(static_cast<VclWindowEvent*>(&rSimpleEvent)->GetData());
+ if( !((rSimpleEvent.GetId() == VclEventId::WindowCommand) && static_cast<VclWindowEvent*>(&rSimpleEvent)->GetData()) )
+ return;
- if( rEvent.GetCommand() == CommandEventId::Media )
- {
- CommandMediaData* pMediaData = rEvent.GetMediaData();
- pMediaData->SetPassThroughToOS(false);
- switch (pMediaData->GetMediaId())
- {
+ const CommandEvent& rEvent = *static_cast<const CommandEvent*>(static_cast<VclWindowEvent*>(&rSimpleEvent)->GetData());
+
+ if( rEvent.GetCommand() != CommandEventId::Media )
+ return;
+
+ CommandMediaData* pMediaData = rEvent.GetMediaData();
+ pMediaData->SetPassThroughToOS(false);
+ switch (pMediaData->GetMediaId())
+ {
#if defined( MACOSX )
- case MediaCommand::Menu:
- if( !mnContextMenuEvent )
- {
- if( mpShowWindow )
- maPopupMousePos = mpShowWindow->GetPointerState().maPos;
- mnContextMenuEvent = Application::PostUserEvent( LINK( this, SlideshowImpl, ContextMenuHdl ) );
- }
- break;
- case MediaCommand::VolumeDown:
- gotoPreviousSlide();
- break;
- case MediaCommand::VolumeUp:
- gotoNextEffect();
- break;
+ case MediaCommand::Menu:
+ if( !mnContextMenuEvent )
+ {
+ if( mpShowWindow )
+ maPopupMousePos = mpShowWindow->GetPointerState().maPos;
+ mnContextMenuEvent = Application::PostUserEvent( LINK( this, SlideshowImpl, ContextMenuHdl ) );
+ }
+ break;
+ case MediaCommand::VolumeDown:
+ gotoPreviousSlide();
+ break;
+ case MediaCommand::VolumeUp:
+ gotoNextEffect();
+ break;
#endif
- case MediaCommand::NextTrack:
- gotoNextEffect();
- break;
- case MediaCommand::Pause:
- if( !mbIsPaused )
- blankScreen(0);
- break;
- case MediaCommand::Play:
- if( mbIsPaused )
- resume();
- break;
+ case MediaCommand::NextTrack:
+ gotoNextEffect();
+ break;
+ case MediaCommand::Pause:
+ if( !mbIsPaused )
+ blankScreen(0);
+ break;
+ case MediaCommand::Play:
+ if( mbIsPaused )
+ resume();
+ break;
- case MediaCommand::PlayPause:
- if( mbIsPaused )
- resume();
- else
- blankScreen(0);
- break;
- case MediaCommand::PreviousTrack:
- gotoPreviousSlide();
- break;
- case MediaCommand::NextTrackHold:
- gotoLastSlide();
- break;
+ case MediaCommand::PlayPause:
+ if( mbIsPaused )
+ resume();
+ else
+ blankScreen(0);
+ break;
+ case MediaCommand::PreviousTrack:
+ gotoPreviousSlide();
+ break;
+ case MediaCommand::NextTrackHold:
+ gotoLastSlide();
+ break;
- case MediaCommand::Rewind:
- gotoFirstSlide();
- break;
- case MediaCommand::Stop:
- // in case the user cancels the presentation, switch to current slide
- // in edit mode
- if( mpSlideController.get() && (ANIMATIONMODE_SHOW == meAnimationMode) )
- {
- if( mpSlideController->getCurrentSlideNumber() != -1 )
- mnRestoreSlide = mpSlideController->getCurrentSlideNumber();
- }
- endPresentation();
- break;
- default:
- pMediaData->SetPassThroughToOS(true);
- break;
- }
+ case MediaCommand::Rewind:
+ gotoFirstSlide();
+ break;
+ case MediaCommand::Stop:
+ // in case the user cancels the presentation, switch to current slide
+ // in edit mode
+ if( mpSlideController.get() && (ANIMATIONMODE_SHOW == meAnimationMode) )
+ {
+ if( mpSlideController->getCurrentSlideNumber() != -1 )
+ mnRestoreSlide = mpSlideController->getCurrentSlideNumber();
}
+ endPresentation();
+ break;
+ default:
+ pMediaData->SetPassThroughToOS(true);
+ break;
}
}
@@ -2225,83 +2234,83 @@ void SlideshowImpl::createSlideList( bool bAll, const OUString& rPresSlide )
{
const sal_uInt16 nSlideCount = mpDoc->GetSdPageCount( PageKind::Standard );
- if( nSlideCount )
- {
- SdCustomShow* pCustomShow;
+ if( !nSlideCount )
+ return;
- if( mpDoc->GetCustomShowList() && maPresSettings.mbCustomShow )
- pCustomShow = mpDoc->GetCustomShowList()->GetCurObject();
- else
- pCustomShow = nullptr;
+ SdCustomShow* pCustomShow;
- // create animation slide controller
- AnimationSlideController::Mode eMode =
- ( pCustomShow && !pCustomShow->PagesVector().empty() ) ? AnimationSlideController::CUSTOM :
- (bAll ? AnimationSlideController::ALL : AnimationSlideController::FROM);
+ if( mpDoc->GetCustomShowList() && maPresSettings.mbCustomShow )
+ pCustomShow = mpDoc->GetCustomShowList()->GetCurObject();
+ else
+ pCustomShow = nullptr;
- Reference< XDrawPagesSupplier > xDrawPages( mpDoc->getUnoModel(), UNO_QUERY_THROW );
- Reference< XIndexAccess > xSlides( xDrawPages->getDrawPages(), UNO_QUERY_THROW );
- mpSlideController.reset( new AnimationSlideController( xSlides, eMode ) );
+ // create animation slide controller
+ AnimationSlideController::Mode eMode =
+ ( pCustomShow && !pCustomShow->PagesVector().empty() ) ? AnimationSlideController::CUSTOM :
+ (bAll ? AnimationSlideController::ALL : AnimationSlideController::FROM);
+
+ Reference< XDrawPagesSupplier > xDrawPages( mpDoc->getUnoModel(), UNO_QUERY_THROW );
+ Reference< XIndexAccess > xSlides( xDrawPages->getDrawPages(), UNO_QUERY_THROW );
+ mpSlideController.reset( new AnimationSlideController( xSlides, eMode ) );
- if( eMode != AnimationSlideController::CUSTOM )
+ if( eMode != AnimationSlideController::CUSTOM )
+ {
+ sal_Int32 nFirstVisibleSlide = 0;
+
+ // normal presentation
+ if( !rPresSlide.isEmpty() )
{
- sal_Int32 nFirstVisibleSlide = 0;
+ sal_Int32 nSlide;
+ bool bTakeNextAvailable = false;
- // normal presentation
- if( !rPresSlide.isEmpty() )
+ for( nSlide = 0, nFirstVisibleSlide = -1;
+ ( nSlide < nSlideCount ) && ( -1 == nFirstVisibleSlide ); nSlide++ )
{
- sal_Int32 nSlide;
- bool bTakeNextAvailable = false;
+ SdPage* pTestSlide = mpDoc->GetSdPage( static_cast<sal_uInt16>(nSlide), PageKind::Standard );
- for( nSlide = 0, nFirstVisibleSlide = -1;
- ( nSlide < nSlideCount ) && ( -1 == nFirstVisibleSlide ); nSlide++ )
+ if( pTestSlide->GetName() == rPresSlide )
{
- SdPage* pTestSlide = mpDoc->GetSdPage( static_cast<sal_uInt16>(nSlide), PageKind::Standard );
-
- if( pTestSlide->GetName() == rPresSlide )
- {
- if( pTestSlide->IsExcluded() )
- bTakeNextAvailable = true;
- else
- nFirstVisibleSlide = nSlide;
- }
- else if( bTakeNextAvailable && !pTestSlide->IsExcluded() )
+ if( pTestSlide->IsExcluded() )
+ bTakeNextAvailable = true;
+ else
nFirstVisibleSlide = nSlide;
}
-
- if( -1 == nFirstVisibleSlide )
- nFirstVisibleSlide = 0;
+ else if( bTakeNextAvailable && !pTestSlide->IsExcluded() )
+ nFirstVisibleSlide = nSlide;
}
- for( sal_Int32 i = 0; i < nSlideCount; i++ )
- {
- bool bVisible = ! mpDoc->GetSdPage( static_cast<sal_uInt16>(i), PageKind::Standard )->IsExcluded();
- if( bVisible || (eMode == AnimationSlideController::ALL) )
- mpSlideController->insertSlideNumber( i, bVisible );
- }
+ if( -1 == nFirstVisibleSlide )
+ nFirstVisibleSlide = 0;
+ }
- mpSlideController->setStartSlideNumber( nFirstVisibleSlide );
+ for( sal_Int32 i = 0; i < nSlideCount; i++ )
+ {
+ bool bVisible = ! mpDoc->GetSdPage( static_cast<sal_uInt16>(i), PageKind::Standard )->IsExcluded();
+ if( bVisible || (eMode == AnimationSlideController::ALL) )
+ mpSlideController->insertSlideNumber( i, bVisible );
}
- else
+
+ mpSlideController->setStartSlideNumber( nFirstVisibleSlide );
+ }
+ else
+ {
+ if( meAnimationMode != ANIMATIONMODE_SHOW && !rPresSlide.isEmpty() )
{
- if( meAnimationMode != ANIMATIONMODE_SHOW && !rPresSlide.isEmpty() )
- {
- sal_Int32 nSlide;
- for( nSlide = 0; nSlide < nSlideCount; nSlide++ )
- if( rPresSlide == mpDoc->GetSdPage( static_cast<sal_uInt16>(nSlide), PageKind::Standard )->GetName() )
- break;
+ sal_Int32 nSlide;
+ for( nSlide = 0; nSlide < nSlideCount; nSlide++ )
+ if( rPresSlide == mpDoc->GetSdPage( static_cast<sal_uInt16>(nSlide), PageKind::Standard )->GetName() )
+ break;
- if( nSlide < nSlideCount )
- mpSlideController->insertSlideNumber( static_cast<sal_uInt16>(nSlide) );
- }
+ if( nSlide < nSlideCount )
+ mpSlideController->insertSlideNumber( static_cast<sal_uInt16>(nSlide) );
+ }
- for( const auto& rpPage : pCustomShow->PagesVector() )
- {
- const sal_uInt16 nSdSlide = ( rpPage->GetPageNum() - 1 ) / 2;
+ for( const auto& rpPage : pCustomShow->PagesVector() )
+ {
+ const sal_uInt16 nSdSlide = ( rpPage->GetPageNum() - 1 ) / 2;
- if( ! mpDoc->GetSdPage( nSdSlide, PageKind::Standard )->IsExcluded())
- mpSlideController->insertSlideNumber( nSdSlide );
- }
+ if( ! mpDoc->GetSdPage( nSdSlide, PageKind::Standard )->IsExcluded())
+ mpSlideController->insertSlideNumber( nSdSlide );
}
}
}
@@ -2325,22 +2334,22 @@ void SlideshowImpl::hideChildWindows()
{
mnChildMask = 0;
- if( ANIMATIONMODE_SHOW == meAnimationMode )
+ if( ANIMATIONMODE_SHOW != meAnimationMode )
+ return;
+
+ SfxViewFrame* pViewFrame = getViewFrame();
+
+ if( !pViewFrame )
+ return;
+
+ for( sal_uLong i = 0; i < SAL_N_ELEMENTS( aShowChildren ); i++ )
{
- SfxViewFrame* pViewFrame = getViewFrame();
+ const sal_uInt16 nId = ( *aShowChildren[ i ] )();
- if( pViewFrame )
+ if( pViewFrame->GetChildWindow( nId ) )
{
- for( sal_uLong i = 0; i < SAL_N_ELEMENTS( aShowChildren ); i++ )
- {
- const sal_uInt16 nId = ( *aShowChildren[ i ] )();
-
- if( pViewFrame->GetChildWindow( nId ) )
- {
- pViewFrame->SetChildWindow( nId, false );
- mnChildMask |= 1 << i;
- }
- }
+ pViewFrame->SetChildWindow( nId, false );
+ mnChildMask |= 1 << i;
}
}
}
@@ -2402,32 +2411,32 @@ void SlideshowImpl::setActiveXToolbarsVisible( bool bVisible )
{
// in case of ActiveX control the toolbars should not be visible if slide show runs in window mode
// actually it runs always in window mode in case of ActiveX control
- if ( !maPresSettings.mbFullScreen && mpDocSh && mpDocSh->GetMedium() )
+ if ( !(!maPresSettings.mbFullScreen && mpDocSh && mpDocSh->GetMedium()) )
+ return;
+
+ const SfxBoolItem* pItem = SfxItemSet::GetItem<SfxBoolItem>(mpDocSh->GetMedium()->GetItemSet(), SID_VIEWONLY, false);
+ if ( !(pItem && pItem->GetValue()) )
+ return;
+
+ // this is a plugin/activex mode, no toolbars should be visible during slide show
+ // after the end of slide show they should be visible again
+ SfxViewFrame* pViewFrame = getViewFrame();
+ if( !pViewFrame )
+ return;
+
+ try
{
- const SfxBoolItem* pItem = SfxItemSet::GetItem<SfxBoolItem>(mpDocSh->GetMedium()->GetItemSet(), SID_VIEWONLY, false);
- if ( pItem && pItem->GetValue() )
+ Reference< frame::XLayoutManager > xLayoutManager;
+ Reference< beans::XPropertySet > xFrameProps( pViewFrame->GetFrame().GetFrameInterface(), UNO_QUERY_THROW );
+ if ( ( xFrameProps->getPropertyValue( "LayoutManager" )
+ >>= xLayoutManager )
+ && xLayoutManager.is() )
{
- // this is a plugin/activex mode, no toolbars should be visible during slide show
- // after the end of slide show they should be visible again
- SfxViewFrame* pViewFrame = getViewFrame();
- if( pViewFrame )
- {
- try
- {
- Reference< frame::XLayoutManager > xLayoutManager;
- Reference< beans::XPropertySet > xFrameProps( pViewFrame->GetFrame().GetFrameInterface(), UNO_QUERY_THROW );
- if ( ( xFrameProps->getPropertyValue( "LayoutManager" )
- >>= xLayoutManager )
- && xLayoutManager.is() )
- {
- xLayoutManager->setVisible( bVisible );
- }
- }
- catch( uno::Exception& )
- {}
- }
+ xLayoutManager->setVisible( bVisible );
}
}
+ catch( uno::Exception& )
+ {}
}
void SAL_CALL SlideshowImpl::activate()
@@ -2436,37 +2445,37 @@ void SAL_CALL SlideshowImpl::activate()
maDeactivateTimer.Stop();
- if( !mbActive && mxShow.is() )
+ if( !(!mbActive && mxShow.is()) )
+ return;
+
+ mbActive = true;
+
+ if( ANIMATIONMODE_SHOW == meAnimationMode )
{
- mbActive = true;
+ if( mbAutoSaveWasOn )
+ setAutoSaveState( false );
- if( ANIMATIONMODE_SHOW == meAnimationMode )
+ if( mpShowWindow )
{
- if( mbAutoSaveWasOn )
- setAutoSaveState( false );
-
- if( mpShowWindow )
- {
- SfxViewFrame* pViewFrame = getViewFrame();
- SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : nullptr;
+ SfxViewFrame* pViewFrame = getViewFrame();
+ SfxDispatcher* pDispatcher = pViewFrame ? pViewFrame->GetDispatcher() : nullptr;
- hideChildWindows();
+ hideChildWindows();
- if( pDispatcher )
- {
- // filter all forbidden slots
- pDispatcher->SetSlotFilter( SfxSlotFilterState::ENABLED, pAllowed );
- }
+ if( pDispatcher )
+ {
+ // filter all forbidden slots
+ pDispatcher->SetSlotFilter( SfxSlotFilterState::ENABLED, pAllowed );
+ }
- if( getBindings() )
- getBindings()->InvalidateAll(true);
+ if( getBindings() )
+ getBindings()->InvalidateAll(true);
- mpShowWindow->GrabFocus();
- }
+ mpShowWindow->GrabFocus();
}
-
- resume();
}
+
+ resume();
}
void SAL_CALL SlideshowImpl::deactivate()
@@ -2481,21 +2490,21 @@ void SAL_CALL SlideshowImpl::deactivate()
IMPL_LINK_NOARG(SlideshowImpl, deactivateHdl, Timer *, void)
{
- if( mbActive && mxShow.is() )
- {
- mbActive = false;
+ if( !(mbActive && mxShow.is()) )
+ return;
- pause();
+ mbActive = false;
- if( ANIMATIONMODE_SHOW == meAnimationMode )
- {
- if( mbAutoSaveWasOn )
- setAutoSaveState( true );
+ pause();
- if( mpShowWindow )
- {
- showChildWindows();
- }
+ if( ANIMATIONMODE_SHOW == meAnimationMode )
+ {
+ if( mbAutoSaveWasOn )
+ setAutoSaveState( true );
+
+ if( mpShowWindow )
+ {
+ showChildWindows();
}
}
}
@@ -2629,7 +2638,10 @@ void SAL_CALL SlideshowImpl::setUsePen( sal_Bool bMouseAsPen )
{
SolarMutexGuard aSolarGuard;
mbUsePen = bMouseAsPen;
- if( mxShow.is() ) try
+ if( !mxShow.is() )
+ return;
+
+ try
{
// For Pencolor;
Any aValue;
@@ -2690,21 +2702,24 @@ void SAL_CALL SlideshowImpl::setPenColor( sal_Int32 nColor )
void SlideshowImpl::setEraseAllInk(bool bEraseAllInk)
{
- if( bEraseAllInk )
+ if( !bEraseAllInk )
+ return;
+
+ SolarMutexGuard aSolarGuard;
+ if( !mxShow.is() )
+ return;
+
+ try
{
- SolarMutexGuard aSolarGuard;
- if( mxShow.is() ) try
- {
- beans::PropertyValue aPenPropEraseAllInk;
- aPenPropEraseAllInk.Name = "EraseAllInk";
- aPenPropEraseAllInk.Value <<= bEraseAllInk;
- mxShow->setProperty( aPenPropEraseAllInk );
- }
- catch( Exception& )
- {
- SAL_WARN( "sd.slideshow", "sd::SlideshowImpl::setEraseAllInk(), "
- "exception caught: " << comphelper::anyToString( cppu::getCaughtException() ));
- }
+ beans::PropertyValue aPenPropEraseAllInk;
+ aPenPropEraseAllInk.Name = "EraseAllInk";
+ aPenPropEraseAllInk.Value <<= bEraseAllInk;
+ mxShow->setProperty( aPenPropEraseAllInk );
+ }
+ catch( Exception& )
+ {
+ SAL_WARN( "sd.slideshow", "sd::SlideshowImpl::setEraseAllInk(), "
+ "exception caught: " << comphelper::anyToString( cppu::getCaughtException() ));
}
}
@@ -2719,25 +2734,25 @@ void SAL_CALL SlideshowImpl::gotoNextEffect( )
{
SolarMutexGuard aSolarGuard;
- if( mxShow.is() && mpSlideController.get() && mpShowWindow )
- {
- if( mbIsPaused )
- resume();
+ if( !(mxShow.is() && mpSlideController.get() && mpShowWindow) )
+ return;
- const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
- if( eMode == SHOWWINDOWMODE_END )
- {
- endPresentation();
- }
- else if( (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) )
- {
- mpShowWindow->RestartShow();
- }
- else
- {
- mxShow->nextEffect();
- update();
- }
+ if( mbIsPaused )
+ resume();
+
+ const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
+ if( eMode == SHOWWINDOWMODE_END )
+ {
+ endPresentation();
+ }
+ else if( (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) )
+ {
+ mpShowWindow->RestartShow();
+ }
+ else
+ {
+ mxShow->nextEffect();
+ update();
}
}
@@ -2745,21 +2760,21 @@ void SAL_CALL SlideshowImpl::gotoPreviousEffect( )
{
SolarMutexGuard aSolarGuard;
- if( mxShow.is() && mpSlideController.get() && mpShowWindow )
- {
- if( mbIsPaused )
- resume();
+ if( !(mxShow.is() && mpSlideController.get() && mpShowWindow) )
+ return;
- const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
- if( (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) )
- {
- mpShowWindow->RestartShow();
- }
- else
- {
- mxShow->previousEffect();
- update();
- }
+ if( mbIsPaused )
+ resume();
+
+ const ShowWindowMode eMode = mpShowWindow->GetShowWindowMode();
+ if( (eMode == SHOWWINDOWMODE_PAUSE) || (eMode == SHOWWINDOWMODE_BLANK) )
+ {
+ mpShowWindow->RestartShow();
+ }
+ else
+ {
+ mxShow->previousEffect();
+ update();
}
}
@@ -2767,20 +2782,20 @@ void SAL_CALL SlideshowImpl::gotoFirstSlide( )
{
SolarMutexGuard aSolarGuard;
- if( mpShowWindow && mpSlideController.get() )
- {
- if( mbIsPaused )
- resume();
+ if( !(mpShowWindow && mpSlideController.get()) )
+ return;
- if( mpShowWindow->GetShowWindowMode() == SHOWWINDOWMODE_END )
- {
- if( mpSlideController->getSlideIndexCount() )
- mpShowWindow->RestartShow( 0);
- }
- else
- {
- displaySlideIndex( 0 );
- }
+ if( mbIsPaused )
+ resume();
+
+ if( mpShowWindow->GetShowWindowMode() == SHOWWINDOWMODE_END )
+ {
+ if( mpSlideController->getSlideIndexCount() )
+ mpShowWindow->RestartShow( 0);
+ }
+ else
+ {
+ displaySlideIndex( 0 );
}
}
@@ -2864,7 +2879,10 @@ void SlideshowImpl::gotoPreviousSlide (const bool bSkipAllMainSequenceEffects)
{
SolarMutexGuard aSolarGuard;
- if( mxShow.is() && mpSlideController.get() ) try
+ if( !(mxShow.is() && mpSlideController.get()) )
+ return;
+
+ try
{
if( mbIsPaused )
resume();
@@ -2909,22 +2927,22 @@ void SAL_CALL SlideshowImpl::gotoLastSlide()
{
SolarMutexGuard aSolarGuard;
- if( mpSlideController.get() )
- {
- if( mbIsPaused )
- resume();
+ if( !mpSlideController.get() )
+ return;
- const sal_Int32 nLastSlideIndex = mpSlideController->getSlideIndexCount() - 1;
- if( nLastSlideIndex >= 0 )
+ if( mbIsPaused )
+ resume();
+
+ const sal_Int32 nLastSlideIndex = mpSlideController->getSlideIndexCount() - 1;
+ if( nLastSlideIndex >= 0 )
+ {
+ if( mpShowWindow->GetShowWindowMode() == SHOWWINDOWMODE_END )
{
- if( mpShowWindow->GetShowWindowMode() == SHOWWINDOWMODE_END )
- {
- mpShowWindow->RestartShow( nLastSlideIndex );
- }
- else
- {
- displaySlideIndex( nLastSlideIndex );
- }
+ mpShowWindow->RestartShow( nLastSlideIndex );
+ }
+ else
+ {
+ displaySlideIndex( nLastSlideIndex );
}
}
}
@@ -2945,18 +2963,18 @@ void SAL_CALL SlideshowImpl::gotoSlide( const Reference< XDrawPage >& xSlide )
{
SolarMutexGuard aSolarGuard;
- if( mpSlideController.get() && xSlide.is() )
- {
- if( mbIsPaused )
- resume();
+ if( !(mpSlideController.get() && xSlide.is()) )
+ return;
- const sal_Int32 nSlideCount = mpSlideController->getSlideNumberCount();
- for( sal_Int32 nSlide = 0; nSlide < nSlideCount; nSlide++ )
+ if( mbIsPaused )
+ resume();
+
+ const sal_Int32 nSlideCount = mpSlideController->getSlideNumberCount();
+ for( sal_Int32 nSlide = 0; nSlide < nSlideCount; nSlide++ )
+ {
+ if( mpSlideController->getSlideByNumber( nSlide ) == xSlide )
{
- if( mpSlideController->getSlideByNumber( nSlide ) == xSlide )
- {
- displaySlideNumber( nSlide );
- }
+ displaySlideNumber( nSlide );
}
}
}
diff --git a/sd/source/ui/slideshow/slideshowviewimpl.cxx b/sd/source/ui/slideshow/slideshowviewimpl.cxx
index dc14d5735af8..fd54279e18ed 100644
--- a/sd/source/ui/slideshow/slideshowviewimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowviewimpl.cxx
@@ -487,22 +487,22 @@ awt::Rectangle SAL_CALL SlideShowView::getCanvasArea( )
void SlideShowView::updateimpl( ::osl::ClearableMutexGuard& rGuard, SlideshowImpl* pSlideShow )
{
- if( pSlideShow )
+ if( !pSlideShow )
+ return;
+
+ ::rtl::Reference< SlideshowImpl > aSLGuard( pSlideShow );
+
+ if( mbFirstPaint )
{
- ::rtl::Reference< SlideshowImpl > aSLGuard( pSlideShow );
+ mbFirstPaint = false;
+ SlideshowImpl* pTmpSlideShow = mpSlideShow;
+ rGuard.clear();
+ if( pTmpSlideShow )
+ pTmpSlideShow->onFirstPaint();
+ } else
+ rGuard.clear();
- if( mbFirstPaint )
- {
- mbFirstPaint = false;
- SlideshowImpl* pTmpSlideShow = mpSlideShow;
- rGuard.clear();
- if( pTmpSlideShow )
- pTmpSlideShow->onFirstPaint();
- } else
- rGuard.clear();
-
- pSlideShow->startUpdateTimer();
- }
+ pSlideShow->startUpdateTimer();
}
// XWindowListener methods
@@ -662,18 +662,18 @@ void SlideShowView::init()
// #i48939# only switch on kind of hacky scroll optimization, when
// running fullscreen. this minimizes the probability that other
// windows partially cover the show.
- if( mbFullScreen )
+ if( !mbFullScreen )
+ return;
+
+ try
+ {
+ Reference< beans::XPropertySet > xCanvasProps( getCanvas(),
+ uno::UNO_QUERY_THROW );
+ xCanvasProps->setPropertyValue("UnsafeScrolling",
+ uno::makeAny( true ) );
+ }
+ catch( uno::Exception& )
{
- try
- {
- Reference< beans::XPropertySet > xCanvasProps( getCanvas(),
- uno::UNO_QUERY_THROW );
- xCanvasProps->setPropertyValue("UnsafeScrolling",
- uno::makeAny( true ) );
- }
- catch( uno::Exception& )
- {
- }
}
}