Blob Blame History Raw
From e99813f9372d24d3d2d734573c582d3e257cb5cc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 22 Aug 2012 11:46:50 +0100
Subject: [PATCH] Resolves: rhbz#846775 Clipboard must be disposed before
 Selection

Change-Id: I968bc6da85cd444d504b08f85300a1fe251cdeee
---
 sd/source/ui/slidesorter/controller/SlideSorterController.cxx     | 5 +++--
 sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx | 2 +-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
index 10ca623..ae9a6e9 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -110,10 +110,10 @@ SlideSorterController::SlideSorterController (SlideSorter& rSlideSorter)
       mpPageSelector(),
       mpFocusManager(),
       mpSlotManager(),
-      mpClipboard(),
       mpScrollBarManager(),
       mpCurrentSlideManager(),
       mpSelectionManager(),
+      mpClipboard(),
       mpInsertionIndicatorHandler(new InsertionIndicatorHandler(rSlideSorter)),
       mpAnimator(new Animator(rSlideSorter)),
       mpVisibleAreaManager(new VisibleAreaManager(rSlideSorter)),
@@ -156,9 +156,9 @@ void SlideSorterController::Init (void)
     mpPageSelector.reset(new PageSelector(mrSlideSorter));
     mpFocusManager.reset(new FocusManager(mrSlideSorter));
     mpSlotManager.reset(new SlotManager(mrSlideSorter));
-    mpClipboard.reset(new Clipboard(mrSlideSorter));
     mpScrollBarManager.reset(new ScrollBarManager(mrSlideSorter));
     mpSelectionManager.reset(new SelectionManager(mrSlideSorter));
+    mpClipboard.reset(new Clipboard(mrSlideSorter));
 
     mpScrollBarManager->LateInitialization();
 
@@ -202,6 +202,7 @@ SlideSorterController::~SlideSorterController (void)
 void SlideSorterController::Dispose (void)
 {
     mpInsertionIndicatorHandler->End(Animator::AM_Immediate);
+    mpClipboard.reset();
     mpSelectionManager.reset();
     mpAnimator->Dispose();
 }
diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
index f456cb4..bf3d844 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
@@ -243,10 +243,10 @@ private:
     ::boost::scoped_ptr<PageSelector> mpPageSelector;
     ::boost::scoped_ptr<FocusManager> mpFocusManager;
     ::boost::shared_ptr<SlotManager> mpSlotManager;
-    ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
     ::boost::scoped_ptr<ScrollBarManager> mpScrollBarManager;
     mutable ::boost::shared_ptr<CurrentSlideManager> mpCurrentSlideManager;
     ::boost::shared_ptr<SelectionManager> mpSelectionManager;
+    ::boost::scoped_ptr<controller::Clipboard> mpClipboard;
     ::boost::shared_ptr<InsertionIndicatorHandler> mpInsertionIndicatorHandler;
     ::boost::shared_ptr<Animator> mpAnimator;
     ::boost::scoped_ptr<VisibleAreaManager> mpVisibleAreaManager;
-- 
1.7.11.2