summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMichael Stahl <mst@apache.org>2011-09-17 21:43:38 +0000
committerMichael Stahl <mst@apache.org>2011-09-17 21:43:38 +0000
commit0c0b5e979b0bb6acca52cdec4d45c00762f6e554 (patch)
tree1c7c0cf151add61a09fc788c1bf057f29afc9dd6 /sd
parentbe42404ba844436584f4f475f2553b53af49ffbc (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')
-rwxr-xr-xsd/source/ui/slidesorter/controller/SlsClipboard.cxx38
-rw-r--r--sd/source/ui/slidesorter/controller/SlsVisibleAreaManager.cxx8
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsVisibleAreaManager.hxx1
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