diff options
author | Michael Stahl <mst@apache.org> | 2011-09-17 21:42:57 +0000 |
---|---|---|
committer | Michael Stahl <mst@apache.org> | 2011-09-17 21:42:57 +0000 |
commit | e04933442de533668c46e8ed7dc7bafd2a844f0a (patch) | |
tree | 35699e0688b0006fc684b660856106da4787a05c /sd | |
parent | c89365eb0e58e00e0a8756ba4ac2977a5aaea25a (diff) |
slidesorter1: #117012# Update preview when text editing ends.
# HG changeset patch
# User Andre Fischer<andre.f.fischer@oracle.com>
# Date 1298986855 -3600
# Node ID 5d52cdcf6d9357e7a6dcc1aa80ba27840042a6de
# Parent aa5b0a65d4614b8a3a38a2748ff20f9e548e1f99
Diffstat (limited to 'sd')
7 files changed, 82 insertions, 5 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx index 153ec43a1ad6..c2cbba5fd316 100644 --- a/sd/source/ui/slidesorter/controller/SlideSorterController.cxx +++ b/sd/source/ui/slidesorter/controller/SlideSorterController.cxx @@ -1102,6 +1102,26 @@ void SlideSorterController::CheckForMasterPageAssignment (void) +void SlideSorterController::CheckForSlideTransitionAssignment (void) +{ + if (mrModel.GetPageCount()%2==0) + return; + PageEnumeration aAllPages (PageEnumerationProvider::CreateAllPagesEnumeration(mrModel)); + while (aAllPages.HasMoreElements()) + { + SharedPageDescriptor pDescriptor (aAllPages.GetNextElement()); + if (pDescriptor->UpdateTransitionFlag()) + { + 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 009b4fc732b9..4f911e9bb374 100755 --- a/sd/source/ui/slidesorter/controller/SlsListener.cxx +++ b/sd/source/ui/slidesorter/controller/SlsListener.cxx @@ -363,6 +363,7 @@ void Listener::Notify ( { case SFX_HINT_DOCCHANGED: mrController.CheckForMasterPageAssignment(); + mrController.CheckForSlideTransitionAssignment(); break; } } @@ -423,6 +424,14 @@ IMPL_LINK(Listener, EventMultiplexerCallback, ::sd::tools::EventMultiplexerEvent HandleShapeModification(static_cast<const SdrPage*>(pEvent->mpUserData)); break; + case tools::EventMultiplexerEvent::EID_END_TEXT_EDIT: + if (pEvent->mpUserData != NULL) + { + const SdrObject* pObject = static_cast<const SdrObject*>(pEvent->mpUserData); + HandleShapeModification(pObject->GetPage()); + } + break; + default: break; } diff --git a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx index b6309f80d0b4..3b1e2075fe1d 100755 --- a/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx +++ b/sd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx @@ -240,6 +240,7 @@ public: VisibleAreaManager& GetVisibleAreaManager (void) const; void CheckForMasterPageAssignment (void); + void CheckForSlideTransitionAssignment (void); private: SlideSorter& mrSlideSorter; diff --git a/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx b/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx index 276f1a7c10a7..01f4e4e20ddb 100644 --- a/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx +++ b/sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx @@ -99,6 +99,7 @@ public: void SetPageIndex (const sal_Int32 nIndex); bool UpdateMasterPage (void); + bool UpdateTransitionFlag (void); enum State { ST_Visible, ST_Selected, ST_WasSelected, ST_Focused, ST_MouseOver, ST_Current, ST_Excluded }; @@ -148,6 +149,7 @@ private: bool mbIsFocused : 1; bool mbIsCurrent : 1; bool mbIsMouseOver : 1; + bool mbHasTransition : 1; // Do not use the copy constructor operator. It is not implemented. diff --git a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx index e4e28a2e38b2..71fe6a120d10 100644 --- a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx +++ b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx @@ -97,6 +97,7 @@ private: Bitmap maMouseOverSelectedAndFocusedBackground; ::rtl::OUString msUnhideString; ButtonBar& mrButtonBar; + Size maSize; void PaintBackground ( OutputDevice& rDevice, @@ -131,6 +132,7 @@ private: const Bitmap& rPreview, const BitmapEx& rOverlay, const OutputDevice* pReferenceDevice) const; + void InvalidateBitmaps (void); }; } } } // end of namespace sd::slidesorter::view diff --git a/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx b/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx index f498f1b01e5b..bd5f90d34862 100644 --- a/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx +++ b/sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx @@ -59,12 +59,18 @@ PageDescriptor::PageDescriptor ( mbIsVisible(false), mbIsFocused(false), mbIsCurrent(false), - mbIsMouseOver(false) + mbIsMouseOver(false), + mbHasTransition(false) { OSL_ASSERT(mpPage); OSL_ASSERT(mpPage == SdPage::getImplementation(rxPage)); - if (mpPage!=NULL && mpPage->TRG_HasMasterPage()) - mpMasterPage = &mpPage->TRG_GetMasterPage(); + if (mpPage != NULL) + { + if (mpPage->TRG_HasMasterPage()) + mpMasterPage = &mpPage->TRG_GetMasterPage(); + if (mpPage->getTransitionType() > 0) + mbHasTransition = true; + } } @@ -127,6 +133,23 @@ bool PageDescriptor::UpdateMasterPage (void) +bool PageDescriptor::UpdateTransitionFlag (void) +{ + bool bHasSlideTransition (false); + if (mpPage != NULL) + bHasSlideTransition = mpPage->getTransitionType() > 0; + if (bHasSlideTransition != mbHasTransition) + { + mbHasTransition = bHasSlideTransition; + return true; + } + else + return false; +} + + + + bool PageDescriptor::HasState (const State eState) const { switch (eState) diff --git a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx index cb78c1a12f71..97051d52f003 100644 --- a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx +++ b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx @@ -113,7 +113,8 @@ PageObjectPainter::PageObjectPainter ( maMouseOverBackground(), maMouseOverFocusedBackground(), msUnhideString(mpTheme->GetString(Theme::String_Unhide)), - mrButtonBar(rSlideSorter.GetView().GetButtonBar()) + mrButtonBar(rSlideSorter.GetView().GetButtonBar()), + maSize() { // Replace the color (not the alpha values) in the focus border with a // color derived from the current selection color. @@ -166,7 +167,26 @@ void PageObjectPainter::PaintPageObject ( void PageObjectPainter::NotifyResize (const bool bForce) { - (void)bForce; + if (bForce || ! mpPageObjectLayouter) + InvalidateBitmaps(); + else + { + const Size aSize (mpPageObjectLayouter->GetSize( + PageObjectLayouter::FocusIndicator, + PageObjectLayouter::WindowCoordinateSystem)); + if ( maSize!=aSize) + { + maSize = aSize; + InvalidateBitmaps(); + } + } +} + + + + +void PageObjectPainter::InvalidateBitmaps (void) +{ maNormalBackground.SetEmpty(); maSelectionBackground.SetEmpty(); maFocusedSelectionBackground.SetEmpty(); |