summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2019-02-14 09:11:13 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2019-02-15 08:45:07 +0100
commit8f6a170e4bbb5d0a0bf06d26560189e4ca7ecfb0 (patch)
tree936461ded988c8105845dd7035744d878375fe1d
parent298284f4a6578aefc4268b7f4b5de6c2e4203465 (diff)
loplugin:flatten in sd/source/ui/slidesorter
Change-Id: I001e0957dafee168bb997a0673be64b2e92cb658 Reviewed-on: https://gerrit.libreoffice.org/67830 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx30
-rw-r--r--sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx32
-rw-r--r--sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx84
-rw-r--r--sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx24
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx162
-rw-r--r--sd/source/ui/slidesorter/controller/SlsClipboard.cxx108
-rw-r--r--sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx94
-rw-r--r--sd/source/ui/slidesorter/controller/SlsFocusManager.cxx110
-rw-r--r--sd/source/ui/slidesorter/controller/SlsInsertionIndicatorHandler.cxx35
-rw-r--r--sd/source/ui/slidesorter/controller/SlsListener.cxx136
-rw-r--r--sd/source/ui/slidesorter/controller/SlsPageSelector.cxx88
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx106
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx54
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx170
-rw-r--r--sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx22
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorter.cxx36
-rw-r--r--sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx46
-rw-r--r--sd/source/ui/slidesorter/view/SlideSorterView.cxx144
-rw-r--r--sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx38
-rw-r--r--sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx108
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx56
-rw-r--r--sd/source/ui/slidesorter/view/SlsToolTip.cxx124
22 files changed, 902 insertions, 905 deletions
diff --git a/sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx b/sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx
index 01659b9211aa..ee311d1c13e4 100644
--- a/sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx
+++ b/sd/source/ui/slidesorter/cache/SlsBitmapCache.cxx
@@ -490,27 +490,27 @@ inline sal_Int32 BitmapCache::CacheEntry::GetMemorySize() const
void BitmapCache::CacheEntry::Compress (const std::shared_ptr<BitmapCompressor>& rpCompressor)
{
- if ( ! maPreview.IsEmpty())
+ if ( maPreview.IsEmpty())
+ return;
+
+ if (mpReplacement == nullptr)
{
- if (mpReplacement == nullptr)
- {
- mpReplacement = rpCompressor->Compress(maPreview);
+ mpReplacement = rpCompressor->Compress(maPreview);
#ifdef DEBUG_SD_SLSBITMAPCACHE
- sal_uInt32 nOldSize (maPreview.GetSizeBytes());
- sal_uInt32 nNewSize (mpReplacement.get()!=NULL ? mpReplacement->GetMemorySize() : 0);
- if (nOldSize == 0)
- nOldSize = 1;
- sal_Int32 nRatio (100L * nNewSize / nOldSize);
- SAL_INFO("sd.sls", OSL_THIS_FUNC << ": compressing bitmap for " << %x << " from " << nOldSize << " to " << nNewSize << " bytes (" << nRatio << "%)");
+ sal_uInt32 nOldSize (maPreview.GetSizeBytes());
+ sal_uInt32 nNewSize (mpReplacement.get()!=NULL ? mpReplacement->GetMemorySize() : 0);
+ if (nOldSize == 0)
+ nOldSize = 1;
+ sal_Int32 nRatio (100L * nNewSize / nOldSize);
+ SAL_INFO("sd.sls", OSL_THIS_FUNC << ": compressing bitmap for " << %x << " from " << nOldSize << " to " << nNewSize << " bytes (" << nRatio << "%)");
#endif
- mpCompressor = rpCompressor;
- }
-
- maPreview.SetEmpty();
- maMarkedPreview.SetEmpty();
+ mpCompressor = rpCompressor;
}
+
+ maPreview.SetEmpty();
+ maMarkedPreview.SetEmpty();
}
inline void BitmapCache::CacheEntry::Decompress()
diff --git a/sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx b/sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx
index e1b04310893f..fc45c039f56d 100644
--- a/sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx
+++ b/sd/source/ui/slidesorter/cache/SlsCacheCompactor.cxx
@@ -166,24 +166,24 @@ CacheCompactionByCompression::CacheCompactionByCompression (
void CacheCompactionByCompression::Run()
{
- if (mrCache.GetSize() > mnMaximalCacheSize)
+ if (mrCache.GetSize() <= mnMaximalCacheSize)
+ return;
+
+ SAL_INFO("sd.sls", OSL_THIS_FUNC << ": bitmap cache uses to much space: " << mrCache.GetSize() << " > " << mnMaximalCacheSize);
+
+ ::std::unique_ptr< ::sd::slidesorter::cache::BitmapCache::CacheIndex> pIndex (
+ mrCache.GetCacheIndex());
+ for (const auto& rpIndex : *pIndex)
{
- SAL_INFO("sd.sls", OSL_THIS_FUNC << ": bitmap cache uses to much space: " << mrCache.GetSize() << " > " << mnMaximalCacheSize);
-
- ::std::unique_ptr< ::sd::slidesorter::cache::BitmapCache::CacheIndex> pIndex (
- mrCache.GetCacheIndex());
- for (const auto& rpIndex : *pIndex)
- {
- if (rpIndex == nullptr)
- continue;
-
- mrCache.Compress(rpIndex, mpCompressor);
- if (mrCache.GetSize() < mnMaximalCacheSize)
- break;
- }
- mrCache.ReCalculateTotalCacheSize();
- SAL_INFO("sd.sls", OSL_THIS_FUNC << ": there are now " << mrCache.GetSize() << " bytes occupied");
+ if (rpIndex == nullptr)
+ continue;
+
+ mrCache.Compress(rpIndex, mpCompressor);
+ if (mrCache.GetSize() < mnMaximalCacheSize)
+ break;
}
+ mrCache.ReCalculateTotalCacheSize();
+ SAL_INFO("sd.sls", OSL_THIS_FUNC << ": there are now " << mrCache.GetSize() << " bytes occupied");
}
} // end of anonymous namespace
diff --git a/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx b/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx
index c5a83ec1ebf9..344f72f56cc2 100644
--- a/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx
+++ b/sd/source/ui/slidesorter/cache/SlsGenericPageCache.cxx
@@ -81,27 +81,27 @@ void GenericPageCache::ChangePreviewSize (
const Size& rPreviewSize,
const bool bDoSuperSampling)
{
- if (rPreviewSize!=maPreviewSize || bDoSuperSampling!=mbDoSuperSampling)
- {
- // A large size may indicate an error of the caller. After all we
- // are creating previews.
- DBG_ASSERT (maPreviewSize.Width()<1000 && maPreviewSize.Height()<1000,
- "GenericPageCache<>::GetPreviewBitmap(): bitmap requested with large width. "
- "This may indicate an error.");
+ if (rPreviewSize==maPreviewSize && bDoSuperSampling==mbDoSuperSampling)
+ return;
+
+ // A large size may indicate an error of the caller. After all we
+ // are creating previews.
+ DBG_ASSERT (maPreviewSize.Width()<1000 && maPreviewSize.Height()<1000,
+ "GenericPageCache<>::GetPreviewBitmap(): bitmap requested with large width. "
+ "This may indicate an error.");
- if (mpBitmapCache != nullptr)
+ if (mpBitmapCache != nullptr)
+ {
+ mpBitmapCache = PageCacheManager::Instance()->ChangeSize(
+ mpBitmapCache, maPreviewSize, rPreviewSize);
+ if (mpQueueProcessor != nullptr)
{
- mpBitmapCache = PageCacheManager::Instance()->ChangeSize(
- mpBitmapCache, maPreviewSize, rPreviewSize);
- if (mpQueueProcessor != nullptr)
- {
- mpQueueProcessor->SetPreviewSize(rPreviewSize, bDoSuperSampling);
- mpQueueProcessor->SetBitmapCache(mpBitmapCache);
- }
+ mpQueueProcessor->SetPreviewSize(rPreviewSize, bDoSuperSampling);
+ mpQueueProcessor->SetBitmapCache(mpBitmapCache);
}
- maPreviewSize = rPreviewSize;
- mbDoSuperSampling = bDoSuperSampling;
}
+ maPreviewSize = rPreviewSize;
+ mbDoSuperSampling = bDoSuperSampling;
}
BitmapEx GenericPageCache::GetPreviewBitmap (
@@ -186,20 +186,20 @@ void GenericPageCache::RequestPreviewBitmap (
bIsUpToDate = false;
}
- if ( ! bIsUpToDate)
+ if ( bIsUpToDate)
+ return;
+
+ // No, the bitmap is not up-to-date. Request a new one.
+ RequestPriorityClass ePriorityClass (NOT_VISIBLE);
+ if (mpCacheContext->IsVisible(aKey))
{
- // No, the bitmap is not up-to-date. Request a new one.
- RequestPriorityClass ePriorityClass (NOT_VISIBLE);
- if (mpCacheContext->IsVisible(aKey))
- {
- if (mpBitmapCache->HasBitmap(pPage))
- ePriorityClass = VISIBLE_OUTDATED_PREVIEW;
- else
- ePriorityClass = VISIBLE_NO_PREVIEW;
- }
- maRequestQueue.AddRequest(aKey, ePriorityClass);
- mpQueueProcessor->Start(ePriorityClass);
+ if (mpBitmapCache->HasBitmap(pPage))
+ ePriorityClass = VISIBLE_OUTDATED_PREVIEW;
+ else
+ ePriorityClass = VISIBLE_NO_PREVIEW;
}
+ maRequestQueue.AddRequest(aKey, ePriorityClass);
+ mpQueueProcessor->Start(ePriorityClass);
}
bool GenericPageCache::InvalidatePreviewBitmap (const CacheKey aKey)
@@ -219,20 +219,20 @@ bool GenericPageCache::InvalidatePreviewBitmap (const CacheKey aKey)
void GenericPageCache::InvalidateCache ()
{
- if (mpBitmapCache)
- {
- // When the cache is being invalidated then it makes no sense to
- // continue creating preview bitmaps. However, this may be
- // re-started below.
- mpQueueProcessor->Stop();
- maRequestQueue.Clear();
+ if (!mpBitmapCache)
+ return;
- // Mark the previews in the cache as not being up-to-date anymore.
- // Depending on the given bUpdateCache flag we start to create new
- // preview bitmaps.
- mpBitmapCache->InvalidateCache();
- RequestFactory()(maRequestQueue, mpCacheContext);
- }
+ // When the cache is being invalidated then it makes no sense to
+ // continue creating preview bitmaps. However, this may be
+ // re-started below.
+ mpQueueProcessor->Stop();
+ maRequestQueue.Clear();
+
+ // Mark the previews in the cache as not being up-to-date anymore.
+ // Depending on the given bUpdateCache flag we start to create new
+ // preview bitmaps.
+ mpBitmapCache->InvalidateCache();
+ RequestFactory()(maRequestQueue, mpCacheContext);
}
void GenericPageCache::SetPreciousFlag (
diff --git a/sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx b/sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx
index 3f851b76e508..4d07bd5977b3 100644
--- a/sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx
+++ b/sd/source/ui/slidesorter/cache/SlsRequestQueue.cxx
@@ -229,19 +229,19 @@ void RequestQueue::PopFront()
{
::osl::MutexGuard aGuard (maMutex);
- if ( ! mpRequestQueue->empty())
- {
- Container::const_iterator aIter(mpRequestQueue->begin());
- SdrPage *pPage = const_cast<SdrPage*>(aIter->maKey);
- pPage->RemovePageUser(*this);
- mpRequestQueue->erase(aIter);
+ if ( mpRequestQueue->empty())
+ return;
- // Reset the priority counter if possible.
- if (mpRequestQueue->empty())
- {
- mnMinimumPriority = 0;
- mnMaximumPriority = 1;
- }
+ Container::const_iterator aIter(mpRequestQueue->begin());
+ SdrPage *pPage = const_cast<SdrPage*>(aIter->maKey);
+ pPage->RemovePageUser(*this);
+ mpRequestQueue->erase(aIter);
+
+ // Reset the priority counter if possible.
+ if (mpRequestQueue->empty())
+ {
+ mnMinimumPriority = 0;
+ mnMaximumPriority = 1;
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index 121e0067b891..3e730ac129e5 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -118,20 +118,20 @@ SlideSorterController::SlideSorterController (SlideSorter& rSlideSorter)
{
sd::Window *pWindow (mrSlideSorter.GetContentWindow().get());
OSL_ASSERT(pWindow);
- if (pWindow)
- {
- // The whole background is painted by the view and controls.
- vcl::Window* pParentWindow = pWindow->GetParent();
- OSL_ASSERT(pParentWindow!=nullptr);
- pParentWindow->SetBackground (Wallpaper());
-
- // Connect the view with the window that has been created by our base
- // class.
- pWindow->SetBackground(Wallpaper());
- pWindow->SetCenterAllowed(false);
- pWindow->SetMapMode(MapMode(MapUnit::MapPixel));
- pWindow->SetViewSize(mrView.GetModelArea().GetSize());
- }
+ if (!pWindow)
+ return;
+
+ // The whole background is painted by the view and controls.
+ vcl::Window* pParentWindow = pWindow->GetParent();
+ OSL_ASSERT(pParentWindow!=nullptr);
+ pParentWindow->SetBackground (Wallpaper());
+
+ // Connect the view with the window that has been created by our base
+ // class.
+ pWindow->SetBackground(Wallpaper());
+ pWindow->SetCenterAllowed(false);
+ pWindow->SetMapMode(MapMode(MapUnit::MapPixel));
+ pWindow->SetViewSize(mrView.GetModelArea().GetSize());
}
void SlideSorterController::Init()
@@ -264,21 +264,21 @@ void SlideSorterController::Paint (
const ::tools::Rectangle& rBBox,
vcl::Window* pWindow)
{
- if (mnPaintEntranceCount == 0)
- {
- ++mnPaintEntranceCount;
+ if (mnPaintEntranceCount != 0)
+ return;
- try
- {
- mrView.CompleteRedraw(pWindow, vcl::Region(rBBox));
- }
- catch (const Exception&)
- {
- // Ignore all exceptions.
- }
+ ++mnPaintEntranceCount;
- --mnPaintEntranceCount;
+ try
+ {
+ mrView.CompleteRedraw(pWindow, vcl::Region(rBBox));
}
+ catch (const Exception&)
+ {
+ // Ignore all exceptions.
+ }
+
+ --mnPaintEntranceCount;
}
void SlideSorterController::FuTemporary (SfxRequest& rRequest)
@@ -677,41 +677,41 @@ void SlideSorterController::Rearrange (bool bForce)
mbIsForcedRearrangePending = false;
sd::Window *pWindow (mrSlideSorter.GetContentWindow().get());
- if (pWindow)
- {
- if (bForce)
- mrView.UpdateOrientation();
-
- // Place the scroll bars.
- ::tools::Rectangle aNewContentArea = GetScrollBarManager().PlaceScrollBars(
- maTotalWindowArea,
- mrView.GetOrientation() != view::Layouter::VERTICAL,
- mrView.GetOrientation() != view::Layouter::HORIZONTAL);
-
- bool bSizeHasChanged (false);
- // Only when bForce is not true we have to test for a size change in
- // order to determine whether the window and the view have to be resized.
- if ( ! bForce)
- {
- ::tools::Rectangle aCurrentContentArea (pWindow->GetPosPixel(), pWindow->GetOutputSizePixel());
- bSizeHasChanged = (aNewContentArea != aCurrentContentArea);
- }
- if (bForce || bSizeHasChanged)
- {
- // The browser window gets the remaining space.
- pWindow->SetPosSizePixel (aNewContentArea.TopLeft(), aNewContentArea.GetSize());
- mrView.Resize();
- }
+ if (!pWindow)
+ return;
- // Adapt the scroll bars to the new zoom factor of the browser
- // window and the arrangement of the page objects.
- GetScrollBarManager().UpdateScrollBars(!bForce);
+ if (bForce)
+ mrView.UpdateOrientation();
- // Keep the current slide in the visible area.
- GetVisibleAreaManager().RequestCurrentSlideVisible();
+ // Place the scroll bars.
+ ::tools::Rectangle aNewContentArea = GetScrollBarManager().PlaceScrollBars(
+ maTotalWindowArea,
+ mrView.GetOrientation() != view::Layouter::VERTICAL,
+ mrView.GetOrientation() != view::Layouter::HORIZONTAL);
- mrView.RequestRepaint();
+ bool bSizeHasChanged (false);
+ // Only when bForce is not true we have to test for a size change in
+ // order to determine whether the window and the view have to be resized.
+ if ( ! bForce)
+ {
+ ::tools::Rectangle aCurrentContentArea (pWindow->GetPosPixel(), pWindow->GetOutputSizePixel());
+ bSizeHasChanged = (aNewContentArea != aCurrentContentArea);
+ }
+ if (bForce || bSizeHasChanged)
+ {
+ // The browser window gets the remaining space.
+ pWindow->SetPosSizePixel (aNewContentArea.TopLeft(), aNewContentArea.GetSize());
+ mrView.Resize();
}
+
+ // Adapt the scroll bars to the new zoom factor of the browser
+ // window and the arrangement of the page objects.
+ GetScrollBarManager().UpdateScrollBars(!bForce);
+
+ // Keep the current slide in the visible area.
+ GetVisibleAreaManager().RequestCurrentSlideVisible();
+
+ mrView.RequestRepaint();
}
rtl::Reference<FuPoor> SlideSorterController::CreateSelectionFunction (SfxRequest& rRequest)
@@ -731,32 +731,32 @@ void SlideSorterController::PrepareEditModeChange()
// Before we throw away the page descriptors we prepare for selecting
// descriptors in the other mode and for restoring the current
// selection when switching back to the current mode.
- if (mrModel.GetEditMode() == EditMode::Page)
- {
- maSelectionBeforeSwitch.clear();
-
- // Search for the first selected page and determine the master page
- // used by its page object. It will be selected after the switch.
- // In the same loop the current selection is stored.
- PageEnumeration aSelectedPages (
- PageEnumerationProvider::CreateSelectedPagesEnumeration(mrModel));
- while (aSelectedPages.HasMoreElements())
- {
- SharedPageDescriptor pDescriptor (aSelectedPages.GetNextElement());
- SdPage* pPage = pDescriptor->GetPage();
- // Remember the master page of the first selected descriptor.
- if (pPage!=nullptr && mpEditModeChangeMasterPage==nullptr)
- mpEditModeChangeMasterPage = &static_cast<SdPage&>(
- pPage->TRG_GetMasterPage());
-
- maSelectionBeforeSwitch.push_back(pPage);
- }
+ if (mrModel.GetEditMode() != EditMode::Page)
+ return;
- // Remember the current page.
- if (mrSlideSorter.GetViewShell() != nullptr)
- mnCurrentPageBeforeSwitch = (mrSlideSorter.GetViewShell()->GetViewShellBase()
- .GetMainViewShell()->GetActualPage()->GetPageNum()-1)/2;
+ maSelectionBeforeSwitch.clear();
+
+ // Search for the first selected page and determine the master page
+ // used by its page object. It will be selected after the switch.
+ // In the same loop the current selection is stored.
+ PageEnumeration aSelectedPages (
+ PageEnumerationProvider::CreateSelectedPagesEnumeration(mrModel));
+ while (aSelectedPages.HasMoreElements())
+ {
+ SharedPageDescriptor pDescriptor (aSelectedPages.GetNextElement());
+ SdPage* pPage = pDescriptor->GetPage();
+ // Remember the master page of the first selected descriptor.
+ if (pPage!=nullptr && mpEditModeChangeMasterPage==nullptr)
+ mpEditModeChangeMasterPage = &static_cast<SdPage&>(
+ pPage->TRG_GetMasterPage());
+
+ maSelectionBeforeSwitch.push_back(pPage);
}
+
+ // Remember the current page.
+ if (mrSlideSorter.GetViewShell() != nullptr)
+ mnCurrentPageBeforeSwitch = (mrSlideSorter.GetViewShell()->GetViewShellBase()
+ .GetMainViewShell()->GetActualPage()->GetPageNum()-1)/2;
}
void SlideSorterController::ChangeEditMode (EditMode eEditMode)
diff --git a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
index 18d2608841f0..00a13cf106b8 100644
--- a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx
@@ -236,19 +236,19 @@ void Clipboard::DoPaste ()
{
SdTransferable* pClipTransferable = SD_MOD()->pTransferClip;
- if (pClipTransferable!=nullptr && pClipTransferable->IsPageTransferable())
- {
- sal_Int32 nInsertPosition = GetInsertionPosition();
+ if (pClipTransferable==nullptr || !pClipTransferable->IsPageTransferable())
+ return;
- if (nInsertPosition >= 0)
- {
- // Paste the pages from the clipboard.
- sal_Int32 nInsertPageCount = PasteTransferable(nInsertPosition);
- // Select the pasted pages and make the first of them the
- // current page.
- mrSlideSorter.GetContentWindow()->GrabFocus();
- SelectPageRange(nInsertPosition, nInsertPageCount);
- }
+ sal_Int32 nInsertPosition = GetInsertionPosition();
+
+ if (nInsertPosition >= 0)
+ {
+ // Paste the pages from the clipboard.
+ sal_Int32 nInsertPageCount = PasteTransferable(nInsertPosition);
+ // Select the pasted pages and make the first of them the
+ // current page.
+ mrSlideSorter.GetContentWindow()->GrabFocus();
+ SelectPageRange(nInsertPosition, nInsertPageCount);
}
}
@@ -429,57 +429,57 @@ void Clipboard::CreateSlideTransferable (
break;
}
- if (!aBookmarkList.empty())
- {
- mrSlideSorter.GetView().BrkAction();
- SdTransferable* pTransferable = TransferableData::CreateTransferable (
- pDocument,
- dynamic_cast<SlideSorterViewShell*>(mrSlideSorter.GetViewShell()),
- aRepresentatives);
-
- if (bDrag)
- SD_MOD()->pTransferDrag = pTransferable;
- else
- SD_MOD()->pTransferClip = pTransferable;
+ if (aBookmarkList.empty())
+ return;
- pDocument->CreatingDataObj (pTransferable);
- pTransferable->SetWorkDocument(pDocument->AllocSdDrawDocument());
- std::unique_ptr<TransferableObjectDescriptor> pObjDesc(new TransferableObjectDescriptor);
- pTransferable->GetWorkDocument()->GetDocSh()
- ->FillTransferableObjectDescriptor (*pObjDesc);
+ mrSlideSorter.GetView().BrkAction();
+ SdTransferable* pTransferable = TransferableData::CreateTransferable (
+ pDocument,
+ dynamic_cast<SlideSorterViewShell*>(mrSlideSorter.GetViewShell()),
+ aRepresentatives);
- if (pDataDocSh != nullptr)
- pObjDesc->maDisplayName = pDataDocSh->GetMedium()->GetURLObject().GetURLNoPass();
+ if (bDrag)
+ SD_MOD()->pTransferDrag = pTransferable;
+ else
+ SD_MOD()->pTransferClip = pTransferable;
- vcl::Window* pActionWindow = pWindow;
- if (pActionWindow == nullptr)
- {
- ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (pViewShell != nullptr)
- pActionWindow = pViewShell->GetActiveWindow();
- }
+ pDocument->CreatingDataObj (pTransferable);
+ pTransferable->SetWorkDocument(pDocument->AllocSdDrawDocument());
+ std::unique_ptr<TransferableObjectDescriptor> pObjDesc(new TransferableObjectDescriptor);
+ pTransferable->GetWorkDocument()->GetDocSh()
+ ->FillTransferableObjectDescriptor (*pObjDesc);
- assert(pActionWindow);
+ if (pDataDocSh != nullptr)
+ pObjDesc->maDisplayName = pDataDocSh->GetMedium()->GetURLObject().GetURLNoPass();
- pTransferable->SetStartPos (pActionWindow->PixelToLogic(
- pActionWindow->GetPointerPosPixel()));
- pTransferable->SetObjectDescriptor (std::move(pObjDesc));
+ vcl::Window* pActionWindow = pWindow;
+ if (pActionWindow == nullptr)
+ {
+ ViewShell* pViewShell = mrSlideSorter.GetViewShell();
+ if (pViewShell != nullptr)
+ pActionWindow = pViewShell->GetActiveWindow();
+ }
- {
- TemporarySlideTrackingDeactivator aDeactivator (mrController);
- pTransferable->SetPageBookmarks (aBookmarkList, !bDrag);
- }
+ assert(pActionWindow);
- if (bDrag)
- {
- pTransferable->SetView (&mrSlideSorter.GetView());
- pTransferable->StartDrag (pActionWindow, DND_ACTION_COPY | DND_ACTION_MOVE);
- }
- else
- pTransferable->CopyToClipboard (pActionWindow);
+ pTransferable->SetStartPos (pActionWindow->PixelToLogic(
+ pActionWindow->GetPointerPosPixel()));
+ pTransferable->SetObjectDescriptor (std::move(pObjDesc));
- pDocument->CreatingDataObj(nullptr);
+ {
+ TemporarySlideTrackingDeactivator aDeactivator (mrController);
+ pTransferable->SetPageBookmarks (aBookmarkList, !bDrag);
}
+
+ if (bDrag)
+ {
+ pTransferable->SetView (&mrSlideSorter.GetView());
+ pTransferable->StartDrag (pActionWindow, DND_ACTION_COPY | DND_ACTION_MOVE);
+ }
+ else
+ pTransferable->CopyToClipboard (pActionWindow);
+
+ pDocument->CreatingDataObj(nullptr);
}
std::shared_ptr<SdTransferable::UserData> Clipboard::CreateTransferableUserData (SdTransferable* pTransferable)
diff --git a/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx b/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
index 0afd2d78809b..fd926c732638 100644
--- a/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
@@ -67,21 +67,21 @@ void CurrentSlideManager::NotifyCurrentSlideChange (const SdPage* pPage)
void CurrentSlideManager::NotifyCurrentSlideChange (const sal_Int32 nSlideIndex)
{
- if (mnCurrentSlideIndex != nSlideIndex)
- {
- PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter.GetController().GetPageSelector());
+ if (mnCurrentSlideIndex == nSlideIndex)
+ return;
- mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
+ PageSelector::BroadcastLock aBroadcastLock (mrSlideSorter.GetController().GetPageSelector());
- ReleaseCurrentSlide();
- AcquireCurrentSlide(nSlideIndex);
+ mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
- // Update the selection.
- if (mpCurrentSlide)
- {
- mrSlideSorter.GetController().GetPageSelector().SelectPage(mpCurrentSlide);
- mrSlideSorter.GetController().GetFocusManager().SetFocusedPage(mpCurrentSlide);
- }
+ ReleaseCurrentSlide();
+ AcquireCurrentSlide(nSlideIndex);
+
+ // Update the selection.
+ if (mpCurrentSlide)
+ {
+ mrSlideSorter.GetController().GetPageSelector().SelectPage(mpCurrentSlide);
+ mrSlideSorter.GetController().GetFocusManager().SetFocusedPage(mpCurrentSlide);
}
}
@@ -120,44 +120,44 @@ void CurrentSlideManager::SwitchCurrentSlide (
const SharedPageDescriptor& rpDescriptor,
const bool bUpdateSelection)
{
- if (rpDescriptor.get() != nullptr && mpCurrentSlide!=rpDescriptor)
- {
- ReleaseCurrentSlide();
- AcquireCurrentSlide((rpDescriptor->GetPage()->GetPageNum()-1)/2);
+ if (!(rpDescriptor.get() != nullptr && mpCurrentSlide!=rpDescriptor))
+ return;
- ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (pViewShell != nullptr && pViewShell->IsMainViewShell())
- {
- // The slide sorter is the main view.
- FrameView* pFrameView = pViewShell->GetFrameView();
- if (pFrameView != nullptr)
- pFrameView->SetSelectedPage(sal::static_int_cast<sal_uInt16>(mnCurrentSlideIndex));
- mrSlideSorter.GetController().GetPageSelector().SetCoreSelection();
- }
+ ReleaseCurrentSlide();
+ AcquireCurrentSlide((rpDescriptor->GetPage()->GetPageNum()-1)/2);
- // We do not tell the XController/ViewShellBase about the new
- // slide right away. This is done asynchronously after a short
- // delay to allow for more slide switches in the slide sorter.
- // This goes under the assumption that slide switching inside
- // the slide sorter is fast (no expensive redraw of the new page
- // (unless the preview of the new slide is not yet preset)) and
- // that slide switching in the edit view is slow (all shapes of
- // the new slide have to be repainted.)
- maSwitchPageDelayTimer.Start();
-
- // We have to store the (index of the) new current slide at
- // the tab control because there are other asynchronous
- // notifications of the slide switching that otherwise
- // overwrite the correct value.
- SetCurrentSlideAtTabControl(mpCurrentSlide);
-
- if (bUpdateSelection)
- {
- mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
- mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
- }
- mrSlideSorter.GetController().GetFocusManager().SetFocusedPage(rpDescriptor);
+ ViewShell* pViewShell = mrSlideSorter.GetViewShell();
+ if (pViewShell != nullptr && pViewShell->IsMainViewShell())
+ {
+ // The slide sorter is the main view.
+ FrameView* pFrameView = pViewShell->GetFrameView();
+ if (pFrameView != nullptr)
+ pFrameView->SetSelectedPage(sal::static_int_cast<sal_uInt16>(mnCurrentSlideIndex));
+ mrSlideSorter.GetController().GetPageSelector().SetCoreSelection();
+ }
+
+ // We do not tell the XController/ViewShellBase about the new
+ // slide right away. This is done asynchronously after a short
+ // delay to allow for more slide switches in the slide sorter.
+ // This goes under the assumption that slide switching inside
+ // the slide sorter is fast (no expensive redraw of the new page
+ // (unless the preview of the new slide is not yet preset)) and
+ // that slide switching in the edit view is slow (all shapes of
+ // the new slide have to be repainted.)
+ maSwitchPageDelayTimer.Start();
+
+ // We have to store the (index of the) new current slide at
+ // the tab control because there are other asynchronous
+ // notifications of the slide switching that otherwise
+ // overwrite the correct value.
+ SetCurrentSlideAtTabControl(mpCurrentSlide);
+
+ if (bUpdateSelection)
+ {
+ mrSlideSorter.GetController().GetPageSelector().DeselectAllPages();
+ mrSlideSorter.GetController().GetPageSelector().SelectPage(rpDescriptor);
}
+ mrSlideSorter.GetController().GetFocusManager().SetFocusedPage(rpDescriptor);
}
void CurrentSlideManager::SetCurrentSlideAtViewShellBase (const SharedPageDescriptor& rpDescriptor)
diff --git a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
index 232457574de2..ba8273d7628a 100644
--- a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
@@ -50,62 +50,62 @@ FocusManager::~FocusManager()
void FocusManager::MoveFocus (FocusMoveDirection eDirection)
{
- if (mnPageIndex >= 0 && mbPageIsFocused)
- {
- HideFocusIndicator (GetFocusedPageDescriptor());
+ if (!(mnPageIndex >= 0 && mbPageIsFocused))
+ return;
- const sal_Int32 nColumnCount (mrSlideSorter.GetView().GetLayouter().GetColumnCount());
- const sal_Int32 nPageCount (mrSlideSorter.GetModel().GetPageCount());
- switch (eDirection)
- {
- case FocusMoveDirection::Left:
- if (mnPageIndex > 0)
- mnPageIndex -= 1;
- break;
+ HideFocusIndicator (GetFocusedPageDescriptor());
- case FocusMoveDirection::Right:
- if (mnPageIndex < nPageCount-1)
- mnPageIndex += 1;
- break;
+ const sal_Int32 nColumnCount (mrSlideSorter.GetView().GetLayouter().GetColumnCount());
+ const sal_Int32 nPageCount (mrSlideSorter.GetModel().GetPageCount());
+ switch (eDirection)
+ {
+ case FocusMoveDirection::Left:
+ if (mnPageIndex > 0)
+ mnPageIndex -= 1;
+ break;
- case FocusMoveDirection::Up:
- {
- const sal_Int32 nCandidate (mnPageIndex - nColumnCount);
- if (nCandidate >= 0)
- {
- // Move the focus the previous row.
- mnPageIndex = nCandidate;
- }
- }
+ case FocusMoveDirection::Right:
+ if (mnPageIndex < nPageCount-1)
+ mnPageIndex += 1;
break;
- case FocusMoveDirection::Down:
+ case FocusMoveDirection::Up:
+ {
+ const sal_Int32 nCandidate (mnPageIndex - nColumnCount);
+ if (nCandidate >= 0)
{
- const sal_Int32 nCandidate (mnPageIndex + nColumnCount);
- if (nCandidate < nPageCount)
- {
- // Move the focus to the next row.
- mnPageIndex = nCandidate;
- }
+ // Move the focus the previous row.
+ mnPageIndex = nCandidate;
}
- break;
}
+ break;
- if (mnPageIndex < 0)
+ case FocusMoveDirection::Down:
{
- OSL_ASSERT(mnPageIndex>=0);
- mnPageIndex = 0;
- }
- else if (mnPageIndex >= nPageCount)
- {
- OSL_ASSERT(mnPageIndex<nPageCount);
- mnPageIndex = nPageCount - 1;
+ const sal_Int32 nCandidate (mnPageIndex + nColumnCount);
+ if (nCandidate < nPageCount)
+ {
+ // Move the focus to the next row.
+ mnPageIndex = nCandidate;
+ }
}
+ break;
+ }
- if (mbPageIsFocused)
- {
- ShowFocusIndicator(GetFocusedPageDescriptor(), true);
- }
+ if (mnPageIndex < 0)
+ {
+ OSL_ASSERT(mnPageIndex>=0);
+ mnPageIndex = 0;
+ }
+ else if (mnPageIndex >= nPageCount)
+ {
+ OSL_ASSERT(mnPageIndex<nPageCount);
+ mnPageIndex = nPageCount - 1;
+ }
+
+ if (mbPageIsFocused)
+ {
+ ShowFocusIndicator(GetFocusedPageDescriptor(), true);
}
}
@@ -183,20 +183,20 @@ void FocusManager::ShowFocusIndicator (
const model::SharedPageDescriptor& rpDescriptor,
const bool bScrollToFocus)
{
- if (rpDescriptor.get() != nullptr)
- {
- mrSlideSorter.GetView().SetState(rpDescriptor, model::PageDescriptor::ST_Focused, true);
+ if (rpDescriptor.get() == nullptr)
+ return;
- if (bScrollToFocus)
- {
- // Scroll the focused page object into the visible area and repaint
- // it, so that the focus indicator becomes visible.
- mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor,true);
- }
- mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
+ mrSlideSorter.GetView().SetState(rpDescriptor, model::PageDescriptor::ST_Focused, true);
- NotifyFocusChangeListeners();
+ if (bScrollToFocus)
+ {
+ // Scroll the focused page object into the visible area and repaint
+ // it, so that the focus indicator becomes visible.
+ mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor,true);
}
+ mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
+
+ NotifyFocusChangeListeners();
}
void FocusManager::AddFocusChangeListener (const Link<LinkParamNone*,void>& rListener)
diff --git a/sd/source/ui/slidesorter/controller/SlsInsertionIndicatorHandler.cxx b/sd/source/ui/slidesorter/controller/SlsInsertionIndicatorHandler.cxx
index 6a691e4219f9..ec79f5e85e90 100644
--- a/sd/source/ui/slidesorter/controller/SlsInsertionIndicatorHandler.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsInsertionIndicatorHandler.cxx
@@ -149,26 +149,23 @@ void InsertionIndicatorHandler::SetPosition (
maIconSize,
mrSlideSorter.GetModel()));
- if (maInsertPosition != aInsertPosition
- || meMode != eMode
- // || ! mpInsertionIndicatorOverlay->IsVisible()
- )
+ if (maInsertPosition == aInsertPosition && meMode == eMode)
+ return;
+
+ maInsertPosition = aInsertPosition;
+ meMode = eMode;
+ mbIsInsertionTrivial = IsInsertionTrivial(maInsertPosition.GetIndex(), eMode);
+ if (maInsertPosition.GetIndex()>=0 && ! mbIsInsertionTrivial)
{
- maInsertPosition = aInsertPosition;
- meMode = eMode;
- mbIsInsertionTrivial = IsInsertionTrivial(maInsertPosition.GetIndex(), eMode);
- if (maInsertPosition.GetIndex()>=0 && ! mbIsInsertionTrivial)
- {
- mpInsertionIndicatorOverlay->SetLocation(maInsertPosition.GetLocation());
-
- GetInsertAnimator()->SetInsertPosition(maInsertPosition);
- mpInsertionIndicatorOverlay->Show();
- }
- else
- {
- GetInsertAnimator()->Reset(Animator::AM_Animated);
- mpInsertionIndicatorOverlay->Hide();
- }
+ mpInsertionIndicatorOverlay->SetLocation(maInsertPosition.GetLocation());
+
+ GetInsertAnimator()->SetInsertPosition(maInsertPosition);
+ mpInsertionIndicatorOverlay->Show();
+ }
+ else
+ {
+ GetInsertAnimator()->Reset(Animator::AM_Animated);
+ mpInsertionIndicatorOverlay->Hide();
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsListener.cxx b/sd/source/ui/slidesorter/controller/SlsListener.cxx
index d65299ae7b84..0971c8ffe60e 100644
--- a/sd/source/ui/slidesorter/controller/SlsListener.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsListener.cxx
@@ -192,75 +192,75 @@ void Listener::ConnectToController()
// Register at the controller of the main view shell (if we are that not
// ourself).
- if (pShell==nullptr || ! pShell->IsMainViewShell())
- {
- Reference<frame::XController> xController (mrSlideSorter.GetXController());
+ if (pShell!=nullptr && pShell->IsMainViewShell())
+ return;
- // Listen to changes of certain properties.
- Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
- if (xSet.is())
+ Reference<frame::XController> xController (mrSlideSorter.GetXController());
+
+ // Listen to changes of certain properties.
+ Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
+ if (xSet.is())
+ {
+ try
{
- try
- {
- xSet->addPropertyChangeListener("CurrentPage", this);
- }
- catch (beans::UnknownPropertyException&)
- {
- DBG_UNHANDLED_EXCEPTION("sd");
- }
- try
- {
- xSet->addPropertyChangeListener("IsMasterPageMode", this);
- }
- catch (beans::UnknownPropertyException&)
- {
- DBG_UNHANDLED_EXCEPTION("sd");
- }
+ xSet->addPropertyChangeListener("CurrentPage", this);
}
-
- // Listen for disposing events.
- Reference<XComponent> xComponent (xController, UNO_QUERY);
- if (xComponent.is())
+ catch (beans::UnknownPropertyException&)
{
- xComponent->addEventListener (
- Reference<lang::XEventListener>(static_cast<XWeak*>(this), UNO_QUERY));
-
- mxControllerWeak = xController;
- mbListeningToController = true;
+ DBG_UNHANDLED_EXCEPTION("sd");
+ }
+ try
+ {
+ xSet->addPropertyChangeListener("IsMasterPageMode", this);
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ DBG_UNHANDLED_EXCEPTION("sd");
}
}
+
+ // Listen for disposing events.
+ Reference<XComponent> xComponent (xController, UNO_QUERY);
+ if (xComponent.is())
+ {
+ xComponent->addEventListener (
+ Reference<lang::XEventListener>(static_cast<XWeak*>(this), UNO_QUERY));
+
+ mxControllerWeak = xController;
+ mbListeningToController = true;
+ }
}
void Listener::DisconnectFromController()
{
- if (mbListeningToController)
- {
- Reference<frame::XController> xController = mxControllerWeak;
- Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
- try
- {
- // Remove the property listener.
- if (xSet.is())
- {
- xSet->removePropertyChangeListener( "CurrentPage", this );
- xSet->removePropertyChangeListener( "IsMasterPageMode", this);
- }
+ if (!mbListeningToController)
+ return;
- // Remove the dispose listener.
- Reference<XComponent> xComponent (xController, UNO_QUERY);
- if (xComponent.is())
- xComponent->removeEventListener (
- Reference<lang::XEventListener>(
- static_cast<XWeak*>(this), UNO_QUERY));
- }
- catch (beans::UnknownPropertyException&)
+ Reference<frame::XController> xController = mxControllerWeak;
+ Reference<beans::XPropertySet> xSet (xController, UNO_QUERY);
+ try
+ {
+ // Remove the property listener.
+ if (xSet.is())
{
- DBG_UNHANDLED_EXCEPTION("sd");
+ xSet->removePropertyChangeListener( "CurrentPage", this );
+ xSet->removePropertyChangeListener( "IsMasterPageMode", this);
}
- mbListeningToController = false;
- mxControllerWeak = Reference<frame::XController>();
+ // Remove the dispose listener.
+ Reference<XComponent> xComponent (xController, UNO_QUERY);
+ if (xComponent.is())
+ xComponent->removeEventListener (
+ Reference<lang::XEventListener>(
+ static_cast<XWeak*>(this), UNO_QUERY));
+ }
+ catch (beans::UnknownPropertyException&)
+ {
+ DBG_UNHANDLED_EXCEPTION("sd");
}
+
+ mbListeningToController = false;
+ mxControllerWeak = Reference<frame::XController>();
}
void Listener::Notify (
@@ -585,22 +585,22 @@ void Listener::HandleShapeModification (const SdrPage* pPage)
// When the page is a master page then invalidate the previews of all
// pages that are linked to this master page.
- if (pPage->IsMasterPage())
+ if (!pPage->IsMasterPage())
+ return;
+
+ for (sal_uInt16 nIndex=0,nCount=pDocument->GetSdPageCount(PageKind::Standard);
+ nIndex<nCount;
+ ++nIndex)
{
- for (sal_uInt16 nIndex=0,nCount=pDocument->GetSdPageCount(PageKind::Standard);
- nIndex<nCount;
- ++nIndex)
+ const SdPage* pCandidate = pDocument->GetSdPage(nIndex, PageKind::Standard);
+ if (pCandidate!=nullptr && pCandidate->TRG_HasMasterPage())
{
- const SdPage* pCandidate = pDocument->GetSdPage(nIndex, PageKind::Standard);
- if (pCandidate!=nullptr && pCandidate->TRG_HasMasterPage())
- {
- if (&pCandidate->TRG_GetMasterPage() == pPage)
- pCacheManager->InvalidatePreviewBitmap(pDocument->getUnoModel(), pCandidate);
- }
- else
- {
- OSL_ASSERT(pCandidate!=nullptr && pCandidate->TRG_HasMasterPage());
- }
+ if (&pCandidate->TRG_GetMasterPage() == pPage)
+ pCacheManager->InvalidatePreviewBitmap(pDocument->getUnoModel(), pCandidate);
+ }
+ else
+ {
+ OSL_ASSERT(pCandidate!=nullptr && pCandidate->TRG_HasMasterPage());
}
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
index a7c935698bb7..4564b8f99ca1 100644
--- a/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
@@ -145,25 +145,25 @@ void PageSelector::SelectPage (const SdPage* pPage)
void PageSelector::SelectPage (const SharedPageDescriptor& rpDescriptor)
{
- if (rpDescriptor.get()!=nullptr
- && mrSlideSorter.GetView().SetState(rpDescriptor, PageDescriptor::ST_Selected, true))
- {
- ++mnSelectedPageCount;
- mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor,true);
- mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
+ if (rpDescriptor.get()==nullptr
+ || !mrSlideSorter.GetView().SetState(rpDescriptor, PageDescriptor::ST_Selected, true))
+ return;
- mpMostRecentlySelectedPage = rpDescriptor;
- if (mpSelectionAnchor == nullptr)
- mpSelectionAnchor = rpDescriptor;
+ ++mnSelectedPageCount;
+ mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor,true);
+ mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
- if (mnBroadcastDisableLevel > 0)
- mbSelectionChangeBroadcastPending = true;
- else
- mrController.GetSelectionManager()->SelectionHasChanged();
- UpdateCurrentPage();
+ mpMostRecentlySelectedPage = rpDescriptor;
+ if (mpSelectionAnchor == nullptr)
+ mpSelectionAnchor = rpDescriptor;
- CheckConsistency();
- }
+ if (mnBroadcastDisableLevel > 0)
+ mbSelectionChangeBroadcastPending = true;
+ else
+ mrController.GetSelectionManager()->SelectionHasChanged();
+ UpdateCurrentPage();
+
+ CheckConsistency();
}
void PageSelector::DeselectPage (int nPageIndex)
@@ -177,23 +177,23 @@ void PageSelector::DeselectPage (
const SharedPageDescriptor& rpDescriptor,
const bool bUpdateCurrentPage)
{
- if (rpDescriptor.get()!=nullptr
- && mrSlideSorter.GetView().SetState(rpDescriptor, PageDescriptor::ST_Selected, false))
- {
- --mnSelectedPageCount;
- mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor);
- mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
- if (mpMostRecentlySelectedPage == rpDescriptor)
- mpMostRecentlySelectedPage.reset();
- if (mnBroadcastDisableLevel > 0)
- mbSelectionChangeBroadcastPending = true;
- else
- mrController.GetSelectionManager()->SelectionHasChanged();
- if (bUpdateCurrentPage)
- UpdateCurrentPage();
+ if (rpDescriptor.get()==nullptr
+ || mrSlideSorter.GetView().SetState(rpDescriptor, PageDescriptor::ST_Selected, false))
+ return;
- CheckConsistency();
- }
+ --mnSelectedPageCount;
+ mrSlideSorter.GetController().GetVisibleAreaManager().RequestVisible(rpDescriptor);
+ mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
+ if (mpMostRecentlySelectedPage == rpDescriptor)
+ mpMostRecentlySelectedPage.reset();
+ if (mnBroadcastDisableLevel > 0)
+ mbSelectionChangeBroadcastPending = true;
+ else
+ mrController.GetSelectionManager()->SelectionHasChanged();
+ if (bUpdateCurrentPage)
+ UpdateCurrentPage();
+
+ CheckConsistency();
}
void PageSelector::CheckConsistency() const
@@ -312,20 +312,20 @@ void PageSelector::UpdateCurrentPage (const bool bUpdateOnlyWhenPending)
}
}
- if (pCurrentPageDescriptor)
- {
- // Switching the current slide normally sets also the
- // selection to just the new current slide. To prevent that,
- // we store (and at the end of this scope restore) the current
- // selection.
- std::shared_ptr<PageSelection> pSelection (GetPageSelection());
+ if (!pCurrentPageDescriptor)
+ return;
- mrController.GetCurrentSlideManager()->SwitchCurrentSlide(pCurrentPageDescriptor);
+ // Switching the current slide normally sets also the
+ // selection to just the new current slide. To prevent that,
+ // we store (and at the end of this scope restore) the current
+ // selection.
+ std::shared_ptr<PageSelection> pSelection (GetPageSelection());
- // Restore the selection and prevent a recursive call to
- // UpdateCurrentPage().
- SetPageSelection(pSelection, false);
- }
+ mrController.GetCurrentSlideManager()->SwitchCurrentSlide(pCurrentPageDescriptor);
+
+ // Restore the selection and prevent a recursive call to
+ // UpdateCurrentPage().
+ SetPageSelection(pSelection, false);
}
//===== PageSelector::UpdateLock ==============================================
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index 22b7019a7b9d..d079aea862f3 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -683,21 +683,21 @@ void SelectionFunction::SwitchToNormalMode()
void SelectionFunction::SwitchToDragAndDropMode (const Point& rMousePosition)
{
- if (mpModeHandler->GetMode() != DragAndDropMode)
- {
+ if (mpModeHandler->GetMode() == DragAndDropMode)
+ return;
+
#ifndef MACOSX
- std::shared_ptr<DragAndDropModeHandler> handler(
- new DragAndDropModeHandler(mrSlideSorter, *this));
- SwitchMode(handler);
- // Delayed initialization, only after mpModeHanler is set, otherwise DND initialization
- // could already trigger DND events, which would recursively trigger this code again,
- // and without mpModeHandler set it would again try to set a new handler.
- handler->Initialize(rMousePosition, mpWindow);
+ std::shared_ptr<DragAndDropModeHandler> handler(
+ new DragAndDropModeHandler(mrSlideSorter, *this));
+ SwitchMode(handler);
+ // Delayed initialization, only after mpModeHanler is set, otherwise DND initialization
+ // could already trigger DND events, which would recursively trigger this code again,
+ // and without mpModeHandler set it would again try to set a new handler.
+ handler->Initialize(rMousePosition, mpWindow);
#else
- SwitchMode(std::shared_ptr<ModeHandler>(
- new DragAndDropModeHandler(mrSlideSorter, *this, rMousePosition, mpWindow)));
+ SwitchMode(std::shared_ptr<ModeHandler>(
+ new DragAndDropModeHandler(mrSlideSorter, *this, rMousePosition, mpWindow)));
#endif
- }
}
void SelectionFunction::SwitchToMultiSelectionMode (
@@ -973,19 +973,19 @@ void SelectionFunction::ModeHandler::SwitchView (const model::SharedPageDescript
// Switch to the draw view. This is done only when the current
// view is the main view.
ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (pViewShell!=nullptr && pViewShell->IsMainViewShell())
+ if (pViewShell==nullptr || !pViewShell->IsMainViewShell())
+ return;
+
+ if (rpDescriptor.get()!=nullptr && rpDescriptor->GetPage()!=nullptr)
{
- if (rpDescriptor.get()!=nullptr && rpDescriptor->GetPage()!=nullptr)
- {
- mrSlideSorter.GetModel().GetDocument()->SetSelected(rpDescriptor->GetPage(), true);
- pViewShell->GetFrameView()->SetSelectedPage(
- (rpDescriptor->GetPage()->GetPageNum()-1)/2);
- }
- if (mrSlideSorter.GetViewShellBase() != nullptr)
- framework::FrameworkHelper::Instance(*mrSlideSorter.GetViewShellBase())->RequestView(
- framework::FrameworkHelper::msImpressViewURL,
- framework::FrameworkHelper::msCenterPaneURL);
+ mrSlideSorter.GetModel().GetDocument()->SetSelected(rpDescriptor->GetPage(), true);
+ pViewShell->GetFrameView()->SetSelectedPage(
+ (rpDescriptor->GetPage()->GetPageNum()-1)/2);
}
+ if (mrSlideSorter.GetViewShellBase() != nullptr)
+ framework::FrameworkHelper::Instance(*mrSlideSorter.GetViewShellBase())->RequestView(
+ framework::FrameworkHelper::msImpressViewURL,
+ framework::FrameworkHelper::msCenterPaneURL);
}
void SelectionFunction::ModeHandler::StartDrag (
@@ -1201,26 +1201,26 @@ void NormalModeHandler::RangeSelect (const model::SharedPageDescriptor& rpDescri
model::SharedPageDescriptor pAnchor (rSelector.GetSelectionAnchor());
DeselectAllPages();
- if (pAnchor.get() != nullptr)
+ if (pAnchor.get() == nullptr)
+ return;
+
+ // Select all pages between the anchor and the given one, including
+ // the two.
+ const sal_uInt16 nAnchorIndex ((pAnchor->GetPage()->GetPageNum()-1) / 2);
+ const sal_uInt16 nOtherIndex ((rpDescriptor->GetPage()->GetPageNum()-1) / 2);
+
+ // Iterate over all pages in the range. Start with the anchor
+ // page. This way the PageSelector will recognize it again as
+ // anchor (the first selected page after a DeselectAllPages()
+ // becomes the anchor.)
+ const sal_uInt16 nStep ((nAnchorIndex < nOtherIndex) ? +1 : -1);
+ sal_uInt16 nIndex (nAnchorIndex);
+ while (true)
{
- // Select all pages between the anchor and the given one, including
- // the two.
- const sal_uInt16 nAnchorIndex ((pAnchor->GetPage()->GetPageNum()-1) / 2);
- const sal_uInt16 nOtherIndex ((rpDescriptor->GetPage()->GetPageNum()-1) / 2);
-
- // Iterate over all pages in the range. Start with the anchor
- // page. This way the PageSelector will recognize it again as
- // anchor (the first selected page after a DeselectAllPages()
- // becomes the anchor.)
- const sal_uInt16 nStep ((nAnchorIndex < nOtherIndex) ? +1 : -1);
- sal_uInt16 nIndex (nAnchorIndex);
- while (true)
- {
- rSelector.SelectPage(nIndex);
- if (nIndex == nOtherIndex)
- break;
- nIndex = nIndex + nStep;
- }
+ rSelector.SelectPage(nIndex);
+ if (nIndex == nOtherIndex)
+ break;
+ nIndex = nIndex + nStep;
}
}
@@ -1441,19 +1441,19 @@ void MultiSelectionModeHandler::UpdateSelection()
maSecondCorner,
false,
false));
- if (nIndexUnderMouse>=0 && nIndexUnderMouse<nPageCount)
- {
- if (mnAnchorIndex < 0)
- mnAnchorIndex = nIndexUnderMouse;
- mnSecondIndex = nIndexUnderMouse;
+ if (!(nIndexUnderMouse>=0 && nIndexUnderMouse<nPageCount))
+ return;
- Range aRange (mnAnchorIndex, mnSecondIndex);
- aRange.Justify();
+ if (mnAnchorIndex < 0)
+ mnAnchorIndex = nIndexUnderMouse;
+ mnSecondIndex = nIndexUnderMouse;
- for (sal_Int32 nIndex=0; nIndex<nPageCount; ++nIndex)
- {
- UpdateSelectionState(rModel.GetPageDescriptor(nIndex), aRange.IsInside(nIndex));
- }
+ Range aRange (mnAnchorIndex, mnSecondIndex);
+ aRange.Justify();
+
+ for (sal_Int32 nIndex=0; nIndex<nPageCount; ++nIndex)
+ {
+ UpdateSelectionState(rModel.GetPageDescriptor(nIndex), aRange.IsInside(nIndex));
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
index 36b728622654..64e6e457aca7 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionManager.cxx
@@ -216,35 +216,35 @@ void SelectionManager::DeleteSelectedMasterPages (const ::std::vector<SdPage*>&
void SelectionManager::SelectionHasChanged ()
{
ViewShell* pViewShell = mrSlideSorter.GetViewShell();
- if (pViewShell != nullptr)
- {
- pViewShell->Invalidate (SID_EXPAND_PAGE);
- pViewShell->Invalidate (SID_SUMMARY_PAGE);
- pViewShell->Invalidate(SID_SHOW_SLIDE);
- pViewShell->Invalidate(SID_HIDE_SLIDE);
- pViewShell->Invalidate(SID_DELETE_PAGE);
- pViewShell->Invalidate(SID_DELETE_MASTER_PAGE);
- pViewShell->Invalidate(SID_ASSIGN_LAYOUT);
-
- // StatusBar
- pViewShell->Invalidate (SID_STATUS_PAGE);
- pViewShell->Invalidate (SID_STATUS_LAYOUT);
-
- OSL_ASSERT(mrController.GetCurrentSlideManager());
- SharedPageDescriptor pDescriptor(mrController.GetCurrentSlideManager()->GetCurrentSlide());
- if (pDescriptor.get() != nullptr)
- pViewShell->UpdatePreview(pDescriptor->GetPage());
-
- // Tell the selection change listeners that the selection has changed.
- for (auto& rLink : maSelectionChangeListeners)
- {
- rLink.Call(nullptr);
- }
+ if (pViewShell == nullptr)
+ return;
- // Reset the insertion position: until set again it is calculated from
- // the current selection.
- mnInsertionPosition = -1;
+ pViewShell->Invalidate (SID_EXPAND_PAGE);
+ pViewShell->Invalidate (SID_SUMMARY_PAGE);
+ pViewShell->Invalidate(SID_SHOW_SLIDE);
+ pViewShell->Invalidate(SID_HIDE_SLIDE);
+ pViewShell->Invalidate(SID_DELETE_PAGE);
+ pViewShell->Invalidate(SID_DELETE_MASTER_PAGE);
+ pViewShell->Invalidate(SID_ASSIGN_LAYOUT);
+
+ // StatusBar
+ pViewShell->Invalidate (SID_STATUS_PAGE);
+ pViewShell->Invalidate (SID_STATUS_LAYOUT);
+
+ OSL_ASSERT(mrController.GetCurrentSlideManager());
+ SharedPageDescriptor pDescriptor(mrController.GetCurrentSlideManager()->GetCurrentSlide());
+ if (pDescriptor.get() != nullptr)
+ pViewShell->UpdatePreview(pDescriptor->GetPage());
+
+ // Tell the selection change listeners that the selection has changed.
+ for (auto& rLink : maSelectionChangeListeners)
+ {
+ rLink.Call(nullptr);
}
+
+ // Reset the insertion position: until set again it is calculated from
+ // the current selection.
+ mnInsertionPosition = -1;
}
void SelectionManager::AddSelectionChangeListener (const Link<LinkParamNone*,void>& rListener)
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 0875ba1c981d..3e247825fcf0 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -746,55 +746,55 @@ void SlotManager::GetClipboardState ( SfxItemSet& rSet)
}
// Cut, copy, and delete page are disabled when there is no selection.
- if (rSet.GetItemState(SID_CUT) == SfxItemState::DEFAULT
+ if (!(rSet.GetItemState(SID_CUT) == SfxItemState::DEFAULT
|| rSet.GetItemState(SID_COPY) == SfxItemState::DEFAULT
|| rSet.GetItemState(SID_DELETE) == SfxItemState::DEFAULT
|| rSet.GetItemState(SID_DELETE_PAGE) == SfxItemState::DEFAULT
- || rSet.GetItemState(SID_DELETE_MASTER_PAGE) == SfxItemState::DEFAULT)
- {
- model::PageEnumeration aSelectedPages (
- model::PageEnumerationProvider::CreateSelectedPagesEnumeration(
- mrSlideSorter.GetModel()));
-
- // For copy to work we have to have at least one selected page.
- if ( ! aSelectedPages.HasMoreElements())
- rSet.DisableItem(SID_COPY);
-
- bool bDisable = false;
- // The operations that lead to the deletion of a page are valid if
- // a) there is at least one selected page
- // b) deleting the selected pages leaves at least one page in the
- // document
- // c) selected master pages must not be used by slides.
+ || rSet.GetItemState(SID_DELETE_MASTER_PAGE) == SfxItemState::DEFAULT))
+ return;
- // Test a).
- if ( ! aSelectedPages.HasMoreElements())
- bDisable = true;
- // Test b): Count the number of selected pages. It has to be less
- // than the number of all pages.
- else if (mrSlideSorter.GetController().GetPageSelector().GetSelectedPageCount()
- >= mrSlideSorter.GetController().GetPageSelector().GetPageCount())
- bDisable = true;
- // Test c): Iterate over the selected pages and look for a master
- // page that is used by at least one page.
- else while (aSelectedPages.HasMoreElements())
+ model::PageEnumeration aSelectedPages (
+ model::PageEnumerationProvider::CreateSelectedPagesEnumeration(
+ mrSlideSorter.GetModel()));
+
+ // For copy to work we have to have at least one selected page.
+ if ( ! aSelectedPages.HasMoreElements())
+ rSet.DisableItem(SID_COPY);
+
+ bool bDisable = false;
+ // The operations that lead to the deletion of a page are valid if
+ // a) there is at least one selected page
+ // b) deleting the selected pages leaves at least one page in the
+ // document
+ // c) selected master pages must not be used by slides.
+
+ // Test a).
+ if ( ! aSelectedPages.HasMoreElements())
+ bDisable = true;
+ // Test b): Count the number of selected pages. It has to be less
+ // than the number of all pages.
+ else if (mrSlideSorter.GetController().GetPageSelector().GetSelectedPageCount()
+ >= mrSlideSorter.GetController().GetPageSelector().GetPageCount())
+ bDisable = true;
+ // Test c): Iterate over the selected pages and look for a master
+ // page that is used by at least one page.
+ else while (aSelectedPages.HasMoreElements())
+ {
+ SdPage* pPage = aSelectedPages.GetNextElement()->GetPage();
+ int nUseCount (mrSlideSorter.GetModel().GetDocument()
+ ->GetMasterPageUserCount(pPage));
+ if (nUseCount > 0)
{
- SdPage* pPage = aSelectedPages.GetNextElement()->GetPage();
- int nUseCount (mrSlideSorter.GetModel().GetDocument()
- ->GetMasterPageUserCount(pPage));
- if (nUseCount > 0)
- {
- bDisable = true;
- break;
- }
+ bDisable = true;
+ break;
}
+ }
- if (bDisable)
- {
- rSet.DisableItem(SID_CUT);
- rSet.DisableItem(SID_DELETE_PAGE);
- rSet.DisableItem(SID_DELETE_MASTER_PAGE);
- }
+ if (bDisable)
+ {
+ rSet.DisableItem(SID_CUT);
+ rSet.DisableItem(SID_DELETE_PAGE);
+ rSet.DisableItem(SID_DELETE_MASTER_PAGE);
}
}
@@ -860,57 +860,57 @@ void SlotManager::RenameSlide(const SfxRequest& rRequest)
mrSlideSorter.GetModel()));
if (aSelectedPages.HasMoreElements())
pSelectedPage = aSelectedPages.GetNextElement()->GetPage();
- if (pSelectedPage != nullptr)
- {
- // tdf#107183 Set different dialog titles when renaming
- // master slides or normal ones
- OUString aTitle;
- if( rRequest.GetSlot() == SID_RENAME_MASTER_PAGE )
- aTitle = SdResId( STR_TITLE_RENAMEMASTER );
- else
- aTitle = SdResId( STR_TITLE_RENAMESLIDE );
+ if (pSelectedPage == nullptr)
+ return;
- OUString aDescr( SdResId( STR_DESC_RENAMESLIDE ) );
- OUString aPageName = pSelectedPage->GetName();
+ // tdf#107183 Set different dialog titles when renaming
+ // master slides or normal ones
+ OUString aTitle;
+ if( rRequest.GetSlot() == SID_RENAME_MASTER_PAGE )
+ aTitle = SdResId( STR_TITLE_RENAMEMASTER );
+ else
+ aTitle = SdResId( STR_TITLE_RENAMESLIDE );
- if(rRequest.GetArgs())
- {
- OUString aName;
- aName = rRequest.GetArgs()->GetItem<const SfxStringItem>(SID_RENAMEPAGE)->GetValue();
+ OUString aDescr( SdResId( STR_DESC_RENAMESLIDE ) );
+ OUString aPageName = pSelectedPage->GetName();
- bool bResult = RenameSlideFromDrawViewShell(pSelectedPage->GetPageNum()/2, aName );
- DBG_ASSERT( bResult, "Couldn't rename slide" );
- }
- else
+ if(rRequest.GetArgs())
+ {
+ OUString aName;
+ aName = rRequest.GetArgs()->GetItem<const SfxStringItem>(SID_RENAMEPAGE)->GetValue();
+
+ bool bResult = RenameSlideFromDrawViewShell(pSelectedPage->GetPageNum()/2, aName );
+ DBG_ASSERT( bResult, "Couldn't rename slide" );
+ }
+ else
+ {
+ SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
+ vcl::Window* pWin = mrSlideSorter.GetContentWindow();
+ ScopedVclPtr<AbstractSvxNameDialog> aNameDlg(pFact->CreateSvxNameDialog(
+ pWin ? pWin->GetFrameWeld() : nullptr,
+ aPageName, aDescr));
+ aNameDlg->SetText( aTitle );
+ aNameDlg->SetCheckNameHdl( LINK( this, SlotManager, RenameSlideHdl ), true );
+ aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE );
+
+ if( aNameDlg->Execute() == RET_OK )
{
- SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create();
- vcl::Window* pWin = mrSlideSorter.GetContentWindow();
- ScopedVclPtr<AbstractSvxNameDialog> aNameDlg(pFact->CreateSvxNameDialog(
- pWin ? pWin->GetFrameWeld() : nullptr,
- aPageName, aDescr));
- aNameDlg->SetText( aTitle );
- aNameDlg->SetCheckNameHdl( LINK( this, SlotManager, RenameSlideHdl ), true );
- aNameDlg->SetEditHelpId( HID_SD_NAMEDIALOG_PAGE );
-
- if( aNameDlg->Execute() == RET_OK )
+ OUString aNewName;
+ aNameDlg->GetName( aNewName );
+ if (aNewName != aPageName)
{
- OUString aNewName;
- aNameDlg->GetName( aNewName );
- if (aNewName != aPageName)
- {
- bool bResult =
- RenameSlideFromDrawViewShell(
- pSelectedPage->GetPageNum()/2, aNewName );
- DBG_ASSERT( bResult, "Couldn't rename slide" );
- }
+ bool bResult =
+ RenameSlideFromDrawViewShell(
+ pSelectedPage->GetPageNum()/2, aNewName );
+ DBG_ASSERT( bResult, "Couldn't rename slide" );
}
- aNameDlg.disposeAndClear();
}
- // Tell the slide sorter about the name change (necessary for
- // accessibility.)
- mrSlideSorter.GetController().PageNameHasChanged(
- (pSelectedPage->GetPageNum()-1)/2, aPageName);
+ aNameDlg.disposeAndClear();
}
+ // Tell the slide sorter about the name change (necessary for
+ // accessibility.)
+ mrSlideSorter.GetController().PageNameHasChanged(
+ (pSelectedPage->GetPageNum()-1)/2, aPageName);
}
IMPL_LINK(SlotManager, RenameSlideHdl, AbstractSvxNameDialog&, rDialog, bool)
diff --git a/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx b/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx
index 967606b4484f..78d61da20396 100644
--- a/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx
@@ -78,19 +78,19 @@ void VisibleAreaManager::RequestVisible (
const model::SharedPageDescriptor& rpDescriptor,
const bool bForce)
{
- if (rpDescriptor)
+ if (!rpDescriptor)
+ return;
+
+ if (mnDisableCount == 0)
{
- if (mnDisableCount == 0)
- {
- maVisibleRequests.push_back(
- mrSlideSorter.GetView().GetLayouter().GetPageObjectBox(
- rpDescriptor->GetPageIndex(),
- true));
- }
- if (bForce && ! mbIsCurrentSlideTrackingActive)
- ActivateCurrentSlideTracking();
- MakeVisible();
+ maVisibleRequests.push_back(
+ mrSlideSorter.GetView().GetLayouter().GetPageObjectBox(
+ rpDescriptor->GetPageIndex(),
+ true));
}
+ if (bForce && ! mbIsCurrentSlideTrackingActive)
+ ActivateCurrentSlideTracking();
+ MakeVisible();
}
void VisibleAreaManager::RequestCurrentSlideVisible()
diff --git a/sd/source/ui/slidesorter/shell/SlideSorter.cxx b/sd/source/ui/slidesorter/shell/SlideSorter.cxx
index 5e6520b45d2b..5009238fb57e 100644
--- a/sd/source/ui/slidesorter/shell/SlideSorter.cxx
+++ b/sd/source/ui/slidesorter/shell/SlideSorter.cxx
@@ -165,24 +165,24 @@ void SlideSorter::Init()
// Initialize the window.
sd::Window *pContentWindow = GetContentWindow().get();
- if (pContentWindow)
- {
- vcl::Window* pParentWindow = pContentWindow->GetParent();
- if (pParentWindow != nullptr)
- pParentWindow->SetBackground(Wallpaper());
- pContentWindow->SetBackground(Wallpaper());
- pContentWindow->SetViewOrigin (Point(0,0));
- // We do our own scrolling while dragging a page selection.
- pContentWindow->SetUseDropScroll (false);
- // Change the winbits so that the active window accepts the focus.
- pContentWindow->SetStyle ((pContentWindow->GetStyle() & ~WB_DIALOGCONTROL) | WB_TABSTOP);
- pContentWindow->Hide();
-
- // Set view pointer of base class.
- SetupControls();
-
- mbIsValid = true;
- }
+ if (!pContentWindow)
+ return;
+
+ vcl::Window* pParentWindow = pContentWindow->GetParent();
+ if (pParentWindow != nullptr)
+ pParentWindow->SetBackground(Wallpaper());
+ pContentWindow->SetBackground(Wallpaper());
+ pContentWindow->SetViewOrigin (Point(0,0));
+ // We do our own scrolling while dragging a page selection.
+ pContentWindow->SetUseDropScroll (false);
+ // Change the winbits so that the active window accepts the focus.
+ pContentWindow->SetStyle ((pContentWindow->GetStyle() & ~WB_DIALOGCONTROL) | WB_TABSTOP);
+ pContentWindow->Hide();
+
+ // Set view pointer of base class.
+ SetupControls();
+
+ mbIsValid = true;
}
SlideSorter::~SlideSorter()
diff --git a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
index ad6d84131933..5f6fc84d9253 100644
--- a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
+++ b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
@@ -537,31 +537,31 @@ void SlideSorterViewShell::ReadFrameViewData (FrameView* pFrameView)
void SlideSorterViewShell::WriteFrameViewData()
{
assert(mpSlideSorter.get()!=nullptr);
- if (mpFrameView != nullptr)
- {
- view::SlideSorterView& rView (mpSlideSorter->GetView());
- mpFrameView->SetSlidesPerRow(static_cast<sal_uInt16>(rView.GetLayouter().GetColumnCount()));
+ if (mpFrameView == nullptr)
+ return;
- // DrawMode for 'main' window
- if( mpFrameView->GetDrawMode() != GetActiveWindow()->GetDrawMode() )
- mpFrameView->SetDrawMode( GetActiveWindow()->GetDrawMode() );
+ view::SlideSorterView& rView (mpSlideSorter->GetView());
+ mpFrameView->SetSlidesPerRow(static_cast<sal_uInt16>(rView.GetLayouter().GetColumnCount()));
- SdPage* pActualPage = GetActualPage();
- if (pActualPage != nullptr)
- {
- if (IsMainViewShell())
- mpFrameView->SetSelectedPage((pActualPage->GetPageNum()- 1) / 2);
- // else
- // The slide sorter is not expected to switch the current page
- // other than by double clicks. That is handled separately.
- }
- else
- {
- // We have no current page to set but at least we can make sure
- // that the index of the frame view has a legal value.
- if (mpFrameView->GetSelectedPage() >= mpSlideSorter->GetModel().GetPageCount())
- mpFrameView->SetSelectedPage(static_cast<sal_uInt16>(mpSlideSorter->GetModel().GetPageCount())-1);
- }
+ // DrawMode for 'main' window
+ if( mpFrameView->GetDrawMode() != GetActiveWindow()->GetDrawMode() )
+ mpFrameView->SetDrawMode( GetActiveWindow()->GetDrawMode() );
+
+ SdPage* pActualPage = GetActualPage();
+ if (pActualPage != nullptr)
+ {
+ if (IsMainViewShell())
+ mpFrameView->SetSelectedPage((pActualPage->GetPageNum()- 1) / 2);
+ // else
+ // The slide sorter is not expected to switch the current page
+ // other than by double clicks. That is handled separately.
+ }
+ else
+ {
+ // We have no current page to set but at least we can make sure
+ // that the index of the frame view has a legal value.
+ if (mpFrameView->GetSelectedPage() >= mpSlideSorter->GetModel().GetPageCount())
+ mpFrameView->SetSelectedPage(static_cast<sal_uInt16>(mpSlideSorter->GetModel().GetPageCount())-1);
}
}
diff --git a/sd/source/ui/slidesorter/view/SlideSorterView.cxx b/sd/source/ui/slidesorter/view/SlideSorterView.cxx
index 69997e1357dc..2616e93eee60 100644
--- a/sd/source/ui/slidesorter/view/SlideSorterView.cxx
+++ b/sd/source/ui/slidesorter/view/SlideSorterView.cxx
@@ -439,79 +439,79 @@ void SlideSorterView::InvalidatePageObjectVisibilities()
void SlideSorterView::DeterminePageObjectVisibilities()
{
sd::Window *pWindow (mrSlideSorter.GetContentWindow().get());
- if (pWindow)
+ if (!pWindow)
+ return;
+
+ // Set this flag to true here so that an invalidate during the
+ // visibility calculation can correctly invalidate it again.
+ mbPageObjectVisibilitiesValid = true;
+
+ ::tools::Rectangle aViewArea (pWindow->PixelToLogic(::tools::Rectangle(Point(0,0),pWindow->GetSizePixel())));
+ const Range aRange (mpLayouter->GetRangeOfVisiblePageObjects(aViewArea));
+ const Range aUnion(
+ ::std::min(maVisiblePageRange.Min(), aRange.Min()),
+ ::std::max(maVisiblePageRange.Max(), aRange.Max()));
+
+ // For page objects that just dropped off the visible area we
+ // decrease the priority of pending requests for preview bitmaps.
+ if (maVisiblePageRange != aRange)
+ mbPreciousFlagUpdatePending |= true;
+
+ model::SharedPageDescriptor pDescriptor;
+ for (long nIndex=aUnion.Min(); nIndex<=aUnion.Max(); nIndex++)
{
- // Set this flag to true here so that an invalidate during the
- // visibility calculation can correctly invalidate it again.
- mbPageObjectVisibilitiesValid = true;
-
- ::tools::Rectangle aViewArea (pWindow->PixelToLogic(::tools::Rectangle(Point(0,0),pWindow->GetSizePixel())));
- const Range aRange (mpLayouter->GetRangeOfVisiblePageObjects(aViewArea));
- const Range aUnion(
- ::std::min(maVisiblePageRange.Min(), aRange.Min()),
- ::std::max(maVisiblePageRange.Max(), aRange.Max()));
-
- // For page objects that just dropped off the visible area we
- // decrease the priority of pending requests for preview bitmaps.
- if (maVisiblePageRange != aRange)
- mbPreciousFlagUpdatePending |= true;
-
- model::SharedPageDescriptor pDescriptor;
- for (long nIndex=aUnion.Min(); nIndex<=aUnion.Max(); nIndex++)
- {
- pDescriptor = mrModel.GetPageDescriptor(nIndex);
- if (pDescriptor.get() != nullptr)
- SetState(
- pDescriptor,
- PageDescriptor::ST_Visible,
- aRange.IsInside(nIndex));
- }
+ pDescriptor = mrModel.GetPageDescriptor(nIndex);
+ if (pDescriptor.get() != nullptr)
+ SetState(
+ pDescriptor,
+ PageDescriptor::ST_Visible,
+ aRange.IsInside(nIndex));
+ }
- // Broadcast a change of the set of visible page objects.
- if (maVisiblePageRange != aRange)
- {
- maVisiblePageRange = aRange;
+ // Broadcast a change of the set of visible page objects.
+ if (maVisiblePageRange != aRange)
+ {
+ maVisiblePageRange = aRange;
- // Tell the listeners that the visibility of some objects has
- // changed.
- ::std::vector<Link<LinkParamNone*,void>>& aChangeListeners (maVisibilityChangeListeners);
- for (const auto& rLink : aChangeListeners)
- {
- rLink.Call(nullptr);
- }
+ // Tell the listeners that the visibility of some objects has
+ // changed.
+ ::std::vector<Link<LinkParamNone*,void>>& aChangeListeners (maVisibilityChangeListeners);
+ for (const auto& rLink : aChangeListeners)
+ {
+ rLink.Call(nullptr);
}
-
- // Restore the mouse over state.
- UpdatePageUnderMouse();
}
+
+ // Restore the mouse over state.
+ UpdatePageUnderMouse();
}
void SlideSorterView::UpdatePreciousFlags()
{
- if (mbPreciousFlagUpdatePending)
- {
- mbPreciousFlagUpdatePending = false;
+ if (!mbPreciousFlagUpdatePending)
+ return;
+
+ mbPreciousFlagUpdatePending = false;
- model::SharedPageDescriptor pDescriptor;
- std::shared_ptr<cache::PageCache> pCache = GetPreviewCache();
- sal_Int32 nPageCount (mrModel.GetPageCount());
+ model::SharedPageDescriptor pDescriptor;
+ std::shared_ptr<cache::PageCache> pCache = GetPreviewCache();
+ sal_Int32 nPageCount (mrModel.GetPageCount());
- for (int nIndex=0; nIndex<=nPageCount; ++nIndex)
+ for (int nIndex=0; nIndex<=nPageCount; ++nIndex)
+ {
+ pDescriptor = mrModel.GetPageDescriptor(nIndex);
+ if (pDescriptor.get() != nullptr)
{
- pDescriptor = mrModel.GetPageDescriptor(nIndex);
- if (pDescriptor.get() != nullptr)
- {
- pCache->SetPreciousFlag(
- pDescriptor->GetPage(),
- maVisiblePageRange.IsInside(nIndex));
- }
- else
- {
- // At least one cache entry can not be updated. Remember to
- // repeat the whole updating later and leave the loop now.
- mbPreciousFlagUpdatePending = true;
- break;
- }
+ pCache->SetPreciousFlag(
+ pDescriptor->GetPage(),
+ maVisiblePageRange.IsInside(nIndex));
+ }
+ else
+ {
+ // At least one cache entry can not be updated. Remember to
+ // repeat the whole updating later and leave the loop now.
+ mbPreciousFlagUpdatePending = true;
+ break;
}
}
}
@@ -770,20 +770,20 @@ void SlideSorterView::UpdatePageUnderMouse (
void SlideSorterView::SetPageUnderMouse (
const model::SharedPageDescriptor& rpDescriptor)
{
- if (mpPageUnderMouse != rpDescriptor)
- {
- if (mpPageUnderMouse)
- SetState(mpPageUnderMouse, PageDescriptor::ST_MouseOver, false);
+ if (mpPageUnderMouse == rpDescriptor)
+ return;
- mpPageUnderMouse = rpDescriptor;
+ if (mpPageUnderMouse)
+ SetState(mpPageUnderMouse, PageDescriptor::ST_MouseOver, false);
- if (mpPageUnderMouse)
- SetState(mpPageUnderMouse, PageDescriptor::ST_MouseOver, true);
+ mpPageUnderMouse = rpDescriptor;
- // Change the quick help text to display the name of the page under
- // the mouse.
- mpToolTip->SetPage(rpDescriptor);
- }
+ if (mpPageUnderMouse)
+ SetState(mpPageUnderMouse, PageDescriptor::ST_MouseOver, true);
+
+ // Change the quick help text to display the name of the page under
+ // the mouse.
+ mpToolTip->SetPage(rpDescriptor);
}
bool SlideSorterView::SetState (
diff --git a/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx b/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
index 3bb9477fbe1d..63ebfe3ddf9a 100644
--- a/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
+++ b/sd/source/ui/slidesorter/view/SlsInsertAnimator.cxx
@@ -322,27 +322,27 @@ void PageObjectRun::UpdateOffsets(
const sal_Int32 nLocalInsertIndex(bIsVertical
? rInsertPosition.GetRow()
: rInsertPosition.GetColumn());
- if (nLocalInsertIndex != mnLocalInsertIndex)
- {
- mnLocalInsertIndex = nLocalInsertIndex;
+ if (nLocalInsertIndex == mnLocalInsertIndex)
+ return;
- model::SlideSorterModel& rModel (mrAnimatorAccess.GetModel());
- const sal_Int32 nRunLength (mnEndIndex - mnStartIndex + 1);
- for (sal_Int32 nIndex=0; nIndex<nRunLength; ++nIndex)
- {
- model::SharedPageDescriptor pDescriptor(rModel.GetPageDescriptor(nIndex+mnStartIndex));
- if (pDescriptor)
- maStartOffset[nIndex] = pDescriptor->GetVisualState().GetLocationOffset();
- maEndOffset[nIndex] = nIndex < mnLocalInsertIndex
- ? rInsertPosition.GetLeadingOffset()
- : rInsertPosition.GetTrailingOffset();
- if (bIsVertical)
- maEndOffset[nIndex].setX( 0 );
- else
- maEndOffset[nIndex].setY( 0 );
- }
- RestartAnimation();
+ mnLocalInsertIndex = nLocalInsertIndex;
+
+ model::SlideSorterModel& rModel (mrAnimatorAccess.GetModel());
+ const sal_Int32 nRunLength (mnEndIndex - mnStartIndex + 1);
+ for (sal_Int32 nIndex=0; nIndex<nRunLength; ++nIndex)
+ {
+ model::SharedPageDescriptor pDescriptor(rModel.GetPageDescriptor(nIndex+mnStartIndex));
+ if (pDescriptor)
+ maStartOffset[nIndex] = pDescriptor->GetVisualState().GetLocationOffset();
+ maEndOffset[nIndex] = nIndex < mnLocalInsertIndex
+ ? rInsertPosition.GetLeadingOffset()
+ : rInsertPosition.GetTrailingOffset();
+ if (bIsVertical)
+ maEndOffset[nIndex].setX( 0 );
+ else
+ maEndOffset[nIndex].setY( 0 );
}
+ RestartAnimation();
}
void PageObjectRun::ResetOffsets (const controller::Animator::AnimationMode eMode)
diff --git a/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx b/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
index c0b1bfa16c8e..60a4182afe3b 100644
--- a/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
+++ b/sd/source/ui/slidesorter/view/SlsInsertionIndicatorOverlay.cxx
@@ -244,38 +244,38 @@ void InsertionIndicatorOverlay::PaintPageCount (
// Paint the number of slides.
std::shared_ptr<view::Theme> pTheme (mrSlideSorter.GetTheme());
std::shared_ptr<vcl::Font> pFont(Theme::GetFont(Theme::Font_PageCount, rDevice));
- if (pFont)
- {
- OUString sNumber (OUString::number(nSelectionCount));
-
- // Determine the size of the (painted) text and create a bounding
- // box that centers the text on the first preview.
- rDevice.SetFont(*pFont);
- ::tools::Rectangle aTextBox;
- rDevice.GetTextBoundRect(aTextBox, sNumber);
- Point aTextOffset (aTextBox.TopLeft());
- Size aTextSize (aTextBox.GetSize());
- // Place text inside the first page preview.
- Point aTextLocation(rFirstPageOffset);
- // Center the text.
- aTextLocation += Point(
- (rPreviewSize.Width()-aTextBox.GetWidth())/2,
- (rPreviewSize.Height()-aTextBox.GetHeight())/2);
- aTextBox = ::tools::Rectangle(aTextLocation, aTextSize);
-
- // Paint background, border and text.
- static const sal_Int32 nBorder = 5;
- rDevice.SetFillColor(pTheme->GetColor(Theme::Color_Selection));
- rDevice.SetLineColor(pTheme->GetColor(Theme::Color_Selection));
- rDevice.DrawRect(GrowRectangle(aTextBox, nBorder));
-
- rDevice.SetFillColor();
- rDevice.SetLineColor(pTheme->GetColor(Theme::Color_PageCountFontColor));
- rDevice.DrawRect(GrowRectangle(aTextBox, nBorder-1));
-
- rDevice.SetTextColor(pTheme->GetColor(Theme::Color_PageCountFontColor));
- rDevice.DrawText(aTextBox.TopLeft()-aTextOffset, sNumber);
- }
+ if (!pFont)
+ return;
+
+ OUString sNumber (OUString::number(nSelectionCount));
+
+ // Determine the size of the (painted) text and create a bounding
+ // box that centers the text on the first preview.
+ rDevice.SetFont(*pFont);
+ ::tools::Rectangle aTextBox;
+ rDevice.GetTextBoundRect(aTextBox, sNumber);
+ Point aTextOffset (aTextBox.TopLeft());
+ Size aTextSize (aTextBox.GetSize());
+ // Place text inside the first page preview.
+ Point aTextLocation(rFirstPageOffset);
+ // Center the text.
+ aTextLocation += Point(
+ (rPreviewSize.Width()-aTextBox.GetWidth())/2,
+ (rPreviewSize.Height()-aTextBox.GetHeight())/2);
+ aTextBox = ::tools::Rectangle(aTextLocation, aTextSize);
+
+ // Paint background, border and text.
+ static const sal_Int32 nBorder = 5;
+ rDevice.SetFillColor(pTheme->GetColor(Theme::Color_Selection));
+ rDevice.SetLineColor(pTheme->GetColor(Theme::Color_Selection));
+ rDevice.DrawRect(GrowRectangle(aTextBox, nBorder));
+
+ rDevice.SetFillColor();
+ rDevice.SetLineColor(pTheme->GetColor(Theme::Color_PageCountFontColor));
+ rDevice.DrawRect(GrowRectangle(aTextBox, nBorder-1));
+
+ rDevice.SetTextColor(pTheme->GetColor(Theme::Color_PageCountFontColor));
+ rDevice.DrawText(aTextBox.TopLeft()-aTextOffset, sNumber);
}
void InsertionIndicatorOverlay::SetLocation (const Point& rLocation)
@@ -318,35 +318,35 @@ void InsertionIndicatorOverlay::SetLayerInvalidator (const SharedILayerInvalidat
void InsertionIndicatorOverlay::Show()
{
- if ( ! mbIsVisible)
- {
- mbIsVisible = true;
+ if ( mbIsVisible)
+ return;
- std::shared_ptr<LayeredDevice> pLayeredDevice (
- mrSlideSorter.GetView().GetLayeredDevice());
- if (pLayeredDevice)
- {
- pLayeredDevice->RegisterPainter(shared_from_this(), gnLayerIndex);
- if (mpLayerInvalidator)
- mpLayerInvalidator->Invalidate(GetBoundingBox());
- }
+ mbIsVisible = true;
+
+ std::shared_ptr<LayeredDevice> pLayeredDevice (
+ mrSlideSorter.GetView().GetLayeredDevice());
+ if (pLayeredDevice)
+ {
+ pLayeredDevice->RegisterPainter(shared_from_this(), gnLayerIndex);
+ if (mpLayerInvalidator)
+ mpLayerInvalidator->Invalidate(GetBoundingBox());
}
}
void InsertionIndicatorOverlay::Hide()
{
- if (mbIsVisible)
- {
- mbIsVisible = false;
+ if (!mbIsVisible)
+ return;
- std::shared_ptr<LayeredDevice> pLayeredDevice (
- mrSlideSorter.GetView().GetLayeredDevice());
- if (pLayeredDevice)
- {
- if (mpLayerInvalidator)
- mpLayerInvalidator->Invalidate(GetBoundingBox());
- pLayeredDevice->RemovePainter(shared_from_this(), gnLayerIndex);
- }
+ mbIsVisible = false;
+
+ std::shared_ptr<LayeredDevice> pLayeredDevice (
+ mrSlideSorter.GetView().GetLayeredDevice());
+ if (pLayeredDevice)
+ {
+ if (mpLayerInvalidator)
+ mpLayerInvalidator->Invalidate(GetBoundingBox());
+ pLayeredDevice->RemovePainter(shared_from_this(), gnLayerIndex);
}
}
diff --git a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
index 9332934258ed..395181bbce4c 100644
--- a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
@@ -68,22 +68,22 @@ void PageObjectPainter::PaintPageObject (
OutputDevice& rDevice,
const model::SharedPageDescriptor& rpDescriptor)
{
- if (UpdatePageObjectLayouter())
- {
- PageObjectLayouter *pPageObjectLayouter = mrLayouter.GetPageObjectLayouter().get();
- // Turn off antialiasing to avoid the bitmaps from being
- // shifted by fractions of a pixel and thus show blurry edges.
- const AntialiasingFlags nSavedAntialiasingMode (rDevice.GetAntialiasing());
- rDevice.SetAntialiasing(nSavedAntialiasingMode & ~AntialiasingFlags::EnableB2dDraw);
-
- PaintBackground(pPageObjectLayouter, rDevice, rpDescriptor);
- PaintPreview(pPageObjectLayouter, rDevice, rpDescriptor);
- PaintPageNumber(pPageObjectLayouter, rDevice, rpDescriptor);
- PaintTransitionEffect(pPageObjectLayouter, rDevice, rpDescriptor);
- if (rpDescriptor->GetPage()->hasAnimationNode())
- PaintCustomAnimationEffect(pPageObjectLayouter, rDevice, rpDescriptor);
- rDevice.SetAntialiasing(nSavedAntialiasingMode);
- }
+ if (!UpdatePageObjectLayouter())
+ return;
+
+ PageObjectLayouter *pPageObjectLayouter = mrLayouter.GetPageObjectLayouter().get();
+ // Turn off antialiasing to avoid the bitmaps from being
+ // shifted by fractions of a pixel and thus show blurry edges.
+ const AntialiasingFlags nSavedAntialiasingMode (rDevice.GetAntialiasing());
+ rDevice.SetAntialiasing(nSavedAntialiasingMode & ~AntialiasingFlags::EnableB2dDraw);
+
+ PaintBackground(pPageObjectLayouter, rDevice, rpDescriptor);
+ PaintPreview(pPageObjectLayouter, rDevice, rpDescriptor);
+ PaintPageNumber(pPageObjectLayouter, rDevice, rpDescriptor);
+ PaintTransitionEffect(pPageObjectLayouter, rDevice, rpDescriptor);
+ if (rpDescriptor->GetPage()->hasAnimationNode())
+ PaintCustomAnimationEffect(pPageObjectLayouter, rDevice, rpDescriptor);
+ rDevice.SetAntialiasing(nSavedAntialiasingMode);
}
bool PageObjectPainter::UpdatePageObjectLayouter()
@@ -137,19 +137,19 @@ void PageObjectPainter::PaintPreview (
PageObjectLayouter::Part::Preview,
PageObjectLayouter::ModelCoordinateSystem));
- if (mpCache != nullptr)
- {
- const SdrPage* pPage = rpDescriptor->GetPage();
- mpCache->SetPreciousFlag(pPage, true);
+ if (mpCache == nullptr)
+ return;
- const BitmapEx aPreview (GetPreviewBitmap(rpDescriptor, &rDevice));
- if ( ! aPreview.IsEmpty())
- {
- if (aPreview.GetSizePixel() != aBox.GetSize())
- rDevice.DrawBitmapEx(aBox.TopLeft(), aBox.GetSize(), aPreview);
- else
- rDevice.DrawBitmapEx(aBox.TopLeft(), aPreview);
- }
+ const SdrPage* pPage = rpDescriptor->GetPage();
+ mpCache->SetPreciousFlag(pPage, true);
+
+ const BitmapEx aPreview (GetPreviewBitmap(rpDescriptor, &rDevice));
+ if ( ! aPreview.IsEmpty())
+ {
+ if (aPreview.GetSizePixel() != aBox.GetSize())
+ rDevice.DrawBitmapEx(aBox.TopLeft(), aBox.GetSize(), aPreview);
+ else
+ rDevice.DrawBitmapEx(aBox.TopLeft(), aPreview);
}
}
diff --git a/sd/source/ui/slidesorter/view/SlsToolTip.cxx b/sd/source/ui/slidesorter/view/SlsToolTip.cxx
index df492bcb23a9..025c2624587a 100644
--- a/sd/source/ui/slidesorter/view/SlsToolTip.cxx
+++ b/sd/source/ui/slidesorter/view/SlsToolTip.cxx
@@ -54,45 +54,45 @@ ToolTip::~ToolTip()
void ToolTip::SetPage (const model::SharedPageDescriptor& rpDescriptor)
{
- if (mpDescriptor != rpDescriptor)
- {
- maShowTimer.Stop();
- bool bWasVisible = Hide();
+ if (mpDescriptor == rpDescriptor)
+ return;
- if (bWasVisible)
- {
- maHiddenTimer.Start();
- }
+ maShowTimer.Stop();
+ bool bWasVisible = Hide();
+
+ if (bWasVisible)
+ {
+ maHiddenTimer.Start();
+ }
- mpDescriptor = rpDescriptor;
+ mpDescriptor = rpDescriptor;
- if (mpDescriptor)
+ if (mpDescriptor)
+ {
+ SdPage* pPage = mpDescriptor->GetPage();
+ OUString sHelpText;
+ if (pPage != nullptr)
+ sHelpText = pPage->GetName();
+ else
{
- SdPage* pPage = mpDescriptor->GetPage();
- OUString sHelpText;
- if (pPage != nullptr)
- sHelpText = pPage->GetName();
- else
- {
- OSL_ASSERT(mpDescriptor->GetPage() != nullptr);
- }
- if (sHelpText.isEmpty())
- {
- sHelpText = SdResId(STR_PAGE);
- sHelpText += OUString::number(mpDescriptor->GetPageIndex()+1);
- }
-
- msCurrentHelpText = sHelpText;
- // show new tooltip immediately, if last one was recently hidden
- if(maHiddenTimer.IsActive())
- DoShow();
- else
- maShowTimer.Start();
+ OSL_ASSERT(mpDescriptor->GetPage() != nullptr);
}
- else
+ if (sHelpText.isEmpty())
{
- msCurrentHelpText.clear();
+ sHelpText = SdResId(STR_PAGE);
+ sHelpText += OUString::number(mpDescriptor->GetPageIndex()+1);
}
+
+ msCurrentHelpText = sHelpText;
+ // show new tooltip immediately, if last one was recently hidden
+ if(maHiddenTimer.IsActive())
+ DoShow();
+ else
+ maShowTimer.Start();
+ }
+ else
+ {
+ msCurrentHelpText.clear();
}
}
@@ -106,36 +106,36 @@ void ToolTip::DoShow()
}
sd::Window *pWindow (mrSlideSorter.GetContentWindow().get());
- if (!msCurrentHelpText.isEmpty() && pWindow)
- {
- ::tools::Rectangle aBox (
- mrSlideSorter.GetView().GetLayouter().GetPageObjectLayouter()->GetBoundingBox(
- mpDescriptor,
- PageObjectLayouter::Part::Preview,
- PageObjectLayouter::WindowCoordinateSystem));
-
- // Do not show the help text when the (lower edge of the ) preview
- // is not visible. The tool tip itself may still be outside the
- // window.
- if (aBox.Bottom() >= pWindow->GetSizePixel().Height())
- return;
-
- vcl::Window* pParent (pWindow);
- while (pParent!=nullptr && pParent->GetParent()!=nullptr)
- pParent = pParent->GetParent();
- const Point aOffset (pWindow->GetWindowExtentsRelative(pParent).TopLeft());
-
- // We do not know how high the tool tip will be but want its top
- // edge not its bottom to be at a specific position (a little below
- // the preview). Therefore we use a little trick and place the tool
- // tip at the top of a rectangle that is placed below the preview.
- aBox.Move(aOffset.X(), aOffset.Y() + aBox.GetHeight() + 3);
- mnHelpWindowHandle = Help::ShowPopover(
- pWindow,
- aBox,
- msCurrentHelpText,
- QuickHelpFlags::Center | QuickHelpFlags::Top);
- }
+ if (msCurrentHelpText.isEmpty() || !pWindow)
+ return;
+
+ ::tools::Rectangle aBox (
+ mrSlideSorter.GetView().GetLayouter().GetPageObjectLayouter()->GetBoundingBox(
+ mpDescriptor,
+ PageObjectLayouter::Part::Preview,
+ PageObjectLayouter::WindowCoordinateSystem));
+
+ // Do not show the help text when the (lower edge of the ) preview
+ // is not visible. The tool tip itself may still be outside the
+ // window.
+ if (aBox.Bottom() >= pWindow->GetSizePixel().Height())
+ return;
+
+ vcl::Window* pParent (pWindow);
+ while (pParent!=nullptr && pParent->GetParent()!=nullptr)
+ pParent = pParent->GetParent();
+ const Point aOffset (pWindow->GetWindowExtentsRelative(pParent).TopLeft());
+
+ // We do not know how high the tool tip will be but want its top
+ // edge not its bottom to be at a specific position (a little below
+ // the preview). Therefore we use a little trick and place the tool
+ // tip at the top of a rectangle that is placed below the preview.
+ aBox.Move(aOffset.X(), aOffset.Y() + aBox.GetHeight() + 3);
+ mnHelpWindowHandle = Help::ShowPopover(
+ pWindow,
+ aBox,
+ msCurrentHelpText,
+ QuickHelpFlags::Center | QuickHelpFlags::Top);
}
bool ToolTip::Hide()