diff --git a/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx b/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx index 596126c02b8b..a8c62b203a13 100644 --- a/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx +++ b/sd/source/ui/slidesorter/cache/SlsBitmapFactory.cxx @@ -77,7 +77,7 @@ BitmapFactory::~BitmapFactory (void) const bool bDoSuperSampling) { Size aSize (rPixelSize); - bool bDo (bDoSuperSampling); + bool bDo (false);//bDoSuperSampling); if (bDo) { aSize.Width() *= gnSuperSampleFactor; diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx index 0f007284d2c0..a48fb568577b 100644 --- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx +++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx @@ -1039,6 +1039,24 @@ void SlideSorterController::SetDocumentSlides (const ReferenceUpdateMasterPage()) + { + mrView.GetPreviewCache()->InvalidatePreviewBitmap ( + pDescriptor->GetPage(), + true); + } + } +} + + + + //===== SlideSorterController::ModelChangeLock ================================ SlideSorterController::ModelChangeLock::ModelChangeLock ( diff --git a/sd/source/ui/slidesorter/controller/SlsListener.cxx b/sd/source/ui/slidesorter/controller/SlsListener.cxx index 8d6868c65728..71e93fee500e 100644 --- a/sd/source/ui/slidesorter/controller/SlsListener.cxx +++ b/sd/source/ui/slidesorter/controller/SlsListener.cxx @@ -42,6 +42,7 @@ #include "view/SlideSorterView.hxx" #include "cache/SlsPageCache.hxx" #include "drawdoc.hxx" +#include "DrawDocShell.hxx" #include "glob.hrc" #include "ViewShellBase.hxx" @@ -78,7 +79,8 @@ Listener::Listener ( mxFrameWeak(), mpModelChangeLock() { - StartListening (*mrSlideSorter.GetModel().GetDocument()); + StartListening(*mrSlideSorter.GetModel().GetDocument()); + StartListening(*mrSlideSorter.GetModel().GetDocument()->GetDocSh()); mbListeningToDocument = true; // Connect to the UNO document. @@ -160,7 +162,8 @@ void Listener::ReleaseListeners (void) { if (mbListeningToDocument) { - EndListening (*mrSlideSorter.GetModel().GetDocument()); + EndListening(*mrSlideSorter.GetModel().GetDocument()->GetDocSh()); + EndListening(*mrSlideSorter.GetModel().GetDocument()); mbListeningToDocument = false; } @@ -370,6 +373,16 @@ void Listener::Notify ( break; } } + else if (rHint.ISA(SfxSimpleHint)) + { + SfxSimpleHint& rSfxSimpleHint (*PTR_CAST(SfxSimpleHint,&rHint)); + switch (rSfxSimpleHint.GetId()) + { + case SFX_HINT_DOCCHANGED: + mrController.CheckForMasterPageAssignment(); + break; + } + } } @@ -421,6 +434,20 @@ IMPL_LINK(Listener, EventMultiplexerCallback, ::sd::tools::EventMultiplexerEvent DisconnectFromController(); break; + case tools::EventMultiplexerEvent::EID_SHAPE_CHANGED: + case tools::EventMultiplexerEvent::EID_SHAPE_INSERTED: + case tools::EventMultiplexerEvent::EID_SHAPE_REMOVED: + { + const SdrPage* pPage = static_cast(pEvent->mpUserData); + if (pPage != NULL) + { + mrSlideSorter.GetView().GetPreviewCache()->InvalidatePreviewBitmap( + pPage, + true); + } + } + break; + default: break; } diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx index d1266efae992..bffb7d4574ba 100644 --- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx @@ -252,6 +252,8 @@ public: */ ::boost::shared_ptr GetAnimator (void) const; + void CheckForMasterPageAssignment (void); + private: SlideSorter& mrSlideSorter; model::SlideSorterModel& mrModel; diff --git a/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx b/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx index 34c092e4b3f8..c7f3eb159899 100644 --- a/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx +++ b/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx @@ -42,6 +42,7 @@ #include class SdPage; +class SdrPage; namespace sdr { namespace contact { class ObjectContact; @@ -110,6 +111,8 @@ public: */ sal_Int32 GetPageIndex (void) const; + bool UpdateMasterPage (void); + enum State { ST_Visible, ST_Selected, ST_WasSelected, ST_Focused, ST_MouseOver, ST_Current, ST_Excluded }; @@ -137,6 +140,7 @@ public: private: SdPage* mpPage; css::uno::Reference mxPage; + SdrPage const* mpMasterPage; /** This index is displayed as page number in the view. It may or may not be the actual page index. */ diff --git a/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx b/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx index 2e5e9b08f905..47cffb132174 100644 --- a/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx +++ b/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx @@ -51,6 +51,7 @@ PageDescriptor::PageDescriptor ( const sal_Int32 nIndex) : mpPage(pPage), mxPage(rxPage), + mpMasterPage(NULL), mnIndex(nIndex), mbIsSelected(false), mbWasSelected(false), @@ -61,7 +62,10 @@ PageDescriptor::PageDescriptor ( maBoundingBox(), maVisualState(nIndex) { + OSL_ASSERT(mpPage); OSL_ASSERT(mpPage == SdPage::getImplementation(rxPage)); + if (mpPage != NULL) + mpMasterPage = &mpPage->TRG_GetMasterPage(); } @@ -98,6 +102,23 @@ sal_Int32 PageDescriptor::GetPageIndex (void) const +bool PageDescriptor::UpdateMasterPage (void) +{ + const SdrPage* pMaster = NULL; + if (mpPage != NULL) + pMaster = &mpPage->TRG_GetMasterPage(); + if (mpMasterPage != pMaster) + { + mpMasterPage = pMaster; + return true; + } + else + return false; +} + + + + bool PageDescriptor::HasState (const State eState) const { switch (eState)