From f1aaa99268a715e2b23e081968c1dd19087fe169 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 05/14] 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 0d9f576..a9a1cb4 100644
--- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
+++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx
@@ -112,10 +112,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)),
@@ -158,9 +158,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();
 
@@ -205,6 +205,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 e962623..c515480 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx
@@ -245,10 +245,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.10.4

