summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorMichael Stahl <mst@apache.org>2011-09-17 21:42:57 +0000
committerMichael Stahl <mst@apache.org>2011-09-17 21:42:57 +0000
commite04933442de533668c46e8ed7dc7bafd2a844f0a (patch)
tree35699e0688b0006fc684b660856106da4787a05c /sd
parentc89365eb0e58e00e0a8756ba4ac2977a5aaea25a (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')
-rw-r--r--sd/source/ui/slidesorter/controller/SlideSorterController.cxx20
-rwxr-xr-xsd/source/ui/slidesorter/controller/SlsListener.cxx9
-rwxr-xr-xsd/source/ui/slidesorter/inc/controller/SlideSorterController.hxx1
-rw-r--r--sd/source/ui/slidesorter/inc/model/SlsPageDescriptor.hxx2
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx2
-rw-r--r--sd/source/ui/slidesorter/model/SlsPageDescriptor.cxx29
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx24
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();