include/svx/textchain.hxx | 12 ++++++------ svx/source/svdraw/svdedxv.cxx | 2 +- svx/source/svdraw/svdotext.cxx | 4 ++++ svx/source/svdraw/svdotextdecomposition.cxx | 3 +++ svx/source/svdraw/textchain.cxx | 4 ++-- svx/source/svdraw/textchainflow.cxx | 5 +++++ 6 files changed, 21 insertions(+), 9 deletions(-)
New commits: commit 942824a9e0c9bb679e0393122eb38fe4d4f212a1 Author: matteocam <matteo.campane...@gmail.com> Date: Fri Jul 10 12:56:24 2015 -0400 Prevent multiple chaining events for static text Change-Id: I3d42cc161dbb2002df710f0bd424bc89fdbfb224 diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx index 69b197e..6a70c8b 100644 --- a/include/svx/textchain.hxx +++ b/include/svx/textchain.hxx @@ -53,15 +53,15 @@ a##PropName = (PropDefault); #define DECL_CHAIN_PROP_INTERFACE(PropName, PropType) \ - PropType Get##PropName (SdrTextObj *); \ - void Set##PropName (SdrTextObj *, PropType); + PropType Get##PropName (const SdrTextObj *); \ + void Set##PropName (const SdrTextObj *, PropType); #define IMPL_CHAIN_PROP_INTERFACE(PropName, PropType) \ - PropType TextChain::Get##PropName (SdrTextObj *pTarget) { \ + PropType TextChain::Get##PropName (const SdrTextObj *pTarget) { \ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \ return pLinkProperties->a##PropName; \ } \ - void TextChain::Set##PropName (SdrTextObj *pTarget, PropType aPropParam) \ + void TextChain::Set##PropName (const SdrTextObj *pTarget, PropType aPropParam) \ { \ ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); \ pLinkProperties->a##PropName = aPropParam; \ @@ -139,8 +139,8 @@ class TextChain { bool IsLinkInChain(SdrTextObj *) const; SdrTextObj *GetNextLink(SdrTextObj *) const; - ChainLinkId GetId(SdrTextObj *) const; - ImpChainLinkProperties *GetLinkProperties(SdrTextObj *); + ChainLinkId GetId(const SdrTextObj *) const; + ImpChainLinkProperties *GetLinkProperties(const SdrTextObj *); // Specific Link Properties DECL_CHAIN_PROP_INTERFACE(CursorEvent, CursorChainingEvent) diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx index 5e00942..80bd5ff 100644 --- a/svx/source/svdraw/svdedxv.cxx +++ b/svx/source/svdraw/svdedxv.cxx @@ -497,7 +497,7 @@ IMPL_LINK_NOARG(SdrObjEditView,ImpChainingEventHdl) } // We prevent to trigger further handling of overflow/underflow for pTextObj - pTextChain->SetNilChainingEvent(pTextObj, true); + pTextChain->SetNilChainingEvent(pTextObj, true); // XXX // Save previous selection pos // NOTE: It must be done to have the right CursorEvent in KeyInput pTextChain->SetPreChainingSel(pTextObj, pOLV->GetSelection()); diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 0a33fa4..afa40df 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -2073,6 +2073,10 @@ SdrTextObj* SdrTextObj::GetNextLinkInChain() const /* FIXME(matteocam) return mpNextInChain; */ SdrTextObj *pNextTextObj = NULL; + // Check that no overflow is going on // XXX: This should be moved in IsChainable + if (GetTextChain()->GetNilChainingEvent(this)) + return NULL; + if ( pPage && pPage->GetObjCount() > 1) { if (!GetName().startsWith("Chainable")) { diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index 954f261..241ec8b 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -1490,6 +1490,7 @@ void SdrTextObj::impDecomposeChainedTextPrimitive( // We need the outliner we get the overflow info from as well as // the outliner for "drawing" (e.g. a drawing or chaining outliner) // maybe the latter ones can be passed at the time of overflow and such + GetTextChain()->SetNilChainingEvent(this, true); TextChainFlow aTxtChainFlow(const_cast<SdrTextObj*>(this)); bool bIsOverflow; @@ -1514,6 +1515,8 @@ void SdrTextObj::impDecomposeChainedTextPrimitive( aTxtChainFlow.ExecuteOverflow(&rOutliner, &rChainingOutl); } + GetTextChain()->SetNilChainingEvent(this, false); + /* End overflow/underflow handling */ // set visualizing page at Outliner; needed e.g. for PageNumberField decomposition diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx index a7bd1b6..36966bb 100644 --- a/svx/source/svdraw/textchain.cxx +++ b/svx/source/svdraw/textchain.cxx @@ -67,7 +67,7 @@ bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj* /* pPrevLink */, SdrT } -ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink) +ImpChainLinkProperties *TextChain::GetLinkProperties(const SdrTextObj *pLink) { // if the guy does not already have properties in the map make them ChainLinkId aLinkId = GetId(pLink); @@ -78,7 +78,7 @@ ImpChainLinkProperties *TextChain::GetLinkProperties(SdrTextObj *pLink) return maLinkPropertiesMap[aLinkId]; } -ChainLinkId TextChain::GetId(SdrTextObj *pLink) const +ChainLinkId TextChain::GetId(const SdrTextObj *pLink) const { return pLink->GetName(); } diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx index ac1a805..c7531f1 100644 --- a/svx/source/svdraw/textchainflow.cxx +++ b/svx/source/svdraw/textchainflow.cxx @@ -137,6 +137,7 @@ bool TextChainFlow::IsUnderflow() const // XXX:Would it be possible to unify undeflow and its possibly following overrflow? void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl) { + //GetTextChain()->SetNilChainingEvent(mpTargetLink, true); // making whole text OutlinerParaObject *pNewText = impGetMergedUnderflowParaObject(pOutl); @@ -146,12 +147,15 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl) mpTargetLink->NbcSetOutlinerParaObject(pNewText); + //GetTextChain()->SetNilChainingEvent(mpTargetLink, false); + // Check for new overflow CheckForFlowEvents(pOutl); } void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pOverflOutl) { + //GetTextChain()->SetNilChainingEvent(mpTargetLink, true); // Leave only non overflowing text impLeaveOnlyNonOverflowingText(pNonOverflOutl); @@ -160,6 +164,7 @@ void TextChainFlow::ExecuteOverflow(SdrOutliner *pNonOverflOutl, SdrOutliner *pO { impMoveChainedTextToNextLink(pOverflOutl); } + //GetTextChain()->SetNilChainingEvent(mpTargetLink, false); } void TextChainFlow::impLeaveOnlyNonOverflowingText(SdrOutliner *pNonOverflOutl) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits