summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorArmin Le Grand <alg@apache.org>2013-10-08 15:40:15 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-10-08 21:26:47 +0100
commitfdbe65e7a551e3935fc4c68145152f02e622a99d (patch)
tree5daf41c160081b731a1f2017543d4e872e87827b /sd
parent728c9d5f0d1335e160de43bd3f73b2a3168e8fcc (diff)
Resolves: #i119056# Added direct refreshes for objects dependent...
on HeaderFooterSettings (cherry picked from commit b94437b6dfe60904f9c89608c15ed55dc3ce277d) Change-Id: I4e21876f83fc160883c0ffdee5941ee7488e35c8
Diffstat (limited to 'sd')
-rw-r--r--sd/source/core/sdpage.cxx47
1 files changed, 47 insertions, 0 deletions
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 8e1e3395662a..18b4a25d9177 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -2719,9 +2719,56 @@ void SdPage::setHeaderFooterSettings( const sd::HeaderFooterSettings& rNewSettin
}
SetChanged();
+
if(TRG_HasMasterPage())
{
TRG_GetMasterPageDescriptorViewContact().ActionChanged();
+
+ // #i119056# For HeaderFooterSettings SdrObjects are used, but the properties
+ // used are not part of their model data, but kept in SD. This data is applied
+ // using a 'backdoor' on primitive creation. Thus, the normal mechanism to detect
+ // object changes does not work here. It is neccessary to trigger updates here
+ // directly. BroadcastObjectChange used for PagePreview invalidations,
+ // flushViewObjectContacts used to invalidate and flush all visualizations in
+ // edit views.
+ SdPage* pMasterPage = dynamic_cast< SdPage* >(&TRG_GetMasterPage());
+
+ if(pMasterPage)
+ {
+ SdrObject* pCandidate = 0;
+
+ pCandidate = pMasterPage->GetPresObj( PRESOBJ_HEADER );
+
+ if(pCandidate)
+ {
+ pCandidate->BroadcastObjectChange();
+ pCandidate->GetViewContact().flushViewObjectContacts();
+ }
+
+ pCandidate = pMasterPage->GetPresObj( PRESOBJ_DATETIME );
+
+ if(pCandidate)
+ {
+ pCandidate->BroadcastObjectChange();
+ pCandidate->GetViewContact().flushViewObjectContacts();
+ }
+
+ pCandidate = pMasterPage->GetPresObj( PRESOBJ_FOOTER );
+
+ if(pCandidate)
+ {
+ pCandidate->BroadcastObjectChange();
+ pCandidate->GetViewContact().flushViewObjectContacts();
+ }
+
+ pCandidate = pMasterPage->GetPresObj( PRESOBJ_SLIDENUMBER );
+
+ if(pCandidate)
+ {
+ pCandidate->BroadcastObjectChange();
+ pCandidate->GetViewContact().flushViewObjectContacts();
+ }
+ }
}
}