diff options
author | Michael Stahl <mst@apache.org> | 2011-09-17 21:43:38 +0000 |
---|---|---|
committer | Michael Stahl <mst@apache.org> | 2011-09-17 21:43:38 +0000 |
commit | 0c0b5e979b0bb6acca52cdec4d45c00762f6e554 (patch) | |
tree | 1c7c0cf151add61a09fc788c1bf057f29afc9dd6 /sd | |
parent | be42404ba844436584f4f475f2553b53af49ffbc (diff) |
slidesorter1: #i116412# Temporarily turning off slide tracking to avoid unwanted repositioning of visible area.
# HG changeset patch
# User Andre Fischer<andre.f.fischer@oracle.com>
# Date 1300891523 -3600
# Node ID d926168e689e211d1ae6bfa5932be8c9f015b19c
# Parent dd74093681332c51934ab449c4b7c9eaec89359a
Diffstat (limited to 'sd')
3 files changed, 46 insertions, 1 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx index 4545e371ea37..a0b725c96782 100755 --- a/sd/source/ui/slidesorter/controller/SlsClipboard.cxx +++ b/sd/source/ui/slidesorter/controller/SlsClipboard.cxx @@ -46,6 +46,7 @@ #include "controller/SlsSelectionManager.hxx" #include "controller/SlsTransferableData.hxx" #include "controller/SlsSelectionObserver.hxx" +#include "controller/SlsVisibleAreaManager.hxx" #include "cache/SlsPageCache.hxx" #include "ViewShellBase.hxx" @@ -90,6 +91,37 @@ namespace sd { namespace slidesorter { namespace controller { +namespace { +/** Temporarily deactivate slide tracking of the VisibleAreaManager. + This is used as a workaround to avoid unwanted repositioning of + the visible area when the selection of slides is copied to the + clipboard (cloning of slides leads to model change notifications + for the original model.) +*/ +class TemporarySlideTrackingDeactivator +{ +public: + TemporarySlideTrackingDeactivator (SlideSorterController& rController) + : mrController(rController), + mbIsCurrentSlideTrackingActive ( + mrController.GetVisibleAreaManager().IsCurrentSlideTrackingActive()) + { + if (mbIsCurrentSlideTrackingActive) + mrController.GetVisibleAreaManager().DeactivateCurrentSlideTracking(); + } + ~TemporarySlideTrackingDeactivator (void) + { + if (mbIsCurrentSlideTrackingActive) + mrController.GetVisibleAreaManager().ActivateCurrentSlideTracking(); + } + +private: + SlideSorterController& mrController; + const bool mbIsCurrentSlideTrackingActive; +}; +} // end of anonymous namespace + + class Clipboard::UndoContext { public: @@ -472,7 +504,11 @@ void Clipboard::CreateSlideTransferable ( pTransferable->SetStartPos (pActionWindow->PixelToLogic( pActionWindow->GetPointerPosPixel())); pTransferable->SetObjectDescriptor (aObjDesc); - pTransferable->SetPageBookmarks (aBookmarkList, !bDrag); + + { + TemporarySlideTrackingDeactivator aDeactivator (mrController); + pTransferable->SetPageBookmarks (aBookmarkList, !bDrag); + } for (void* p=aBookmarkList.First(); p!=NULL; p=aBookmarkList.Next()) delete static_cast<String*>(p); diff --git a/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx b/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx index 76e9e411e81e..2b5c244833fc 100644 --- a/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx +++ b/sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx @@ -94,6 +94,14 @@ void VisibleAreaManager::DeactivateCurrentSlideTracking (void) +bool VisibleAreaManager::IsCurrentSlideTrackingActive (void) const +{ + return mbIsCurrentSlideTrackingActive; +} + + + + void VisibleAreaManager::RequestVisible ( const model::SharedPageDescriptor& rpDescriptor, const bool bForce) diff --git a/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx b/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx index cdaf9b1588ea..e7a6f12c9dc7 100644 --- a/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx @@ -47,6 +47,7 @@ public: void ActivateCurrentSlideTracking (void); void DeactivateCurrentSlideTracking (void); + bool IsCurrentSlideTrackingActive (void) const; /** Request the current slide to be moved into the visible area. This request is only obeyed when the current slide tracking is |