include/svx/textchain.hxx | 6 +++++- svx/source/svdraw/svdotext.cxx | 11 +++++++++++ svx/source/svdraw/textchain.cxx | 13 +++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-)
New commits: commit 465d9d703de940244adb218e60a4f2f77b7c036d Author: matteocam <matteo.campane...@gmail.com> Date: Thu Jun 18 23:33:28 2015 -0400 Controlling for underflow handling Change-Id: I26fb6b4878e1bca1ea09872624631578a568896d diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx index 01798d5..a03bf57 100644 --- a/include/svx/textchain.hxx +++ b/include/svx/textchain.hxx @@ -41,7 +41,7 @@ class ImpChainLinkProperties ImpChainLinkProperties(); bool bOverwriteOnOverflow; - // all kind of stuff such has MergeableFirstParagraphs or if overwrite should occurr on overflow + bool bHandlingUnderflow; }; @@ -60,9 +60,13 @@ class TextChain { // return whether a paragraph is split between the two links in the argument bool GetLinksHaveMergeableFirstPara(SdrTextObj *, SdrTextObj *); + void SetOverwriteOnOverflow(SdrTextObj *, bool ); bool GetOverwriteOnOverflow(SdrTextObj *pTarget); + bool GetLinkHandlingUnderflow(SdrTextObj *pTarget); + void SetLinkHandlingUnderflow(SdrTextObj *, bool); + protected: LinkPropertiesMap maLinkPropertiesMap; }; diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index 8ac625e..911dadc 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1999,9 +1999,17 @@ void SdrTextObj::onUnderflowStatusEvent( ) SdrTextObj *pNextLink = GetNextLinkInChain(); SdrOutliner &aDrawOutliner = ImpGetDrawOutliner(); + if (GetTextChain()->GetLinkHandlingUnderflow(this)) + { + GetTextChain()->SetLinkHandlingUnderflow(this, false); + return; + } + if (!pNextLink->HasText()) return; + + // 1) get the text of the other guy and add it to the last paragraph // XXX: For now it's not merging anything just adding the while thing as a separate para OutlinerParaObject *pNextLinkWholeText = pNextLink->GetOutlinerParaObject(); @@ -2016,6 +2024,9 @@ void SdrTextObj::onUnderflowStatusEvent( ) // (since this happens automatically by overflow we just "order to" reset the destination box's text) GetTextChain()->SetOverwriteOnOverflow(pNextLink, true); + // We make sure we don't handle underflow while handling underflow + GetTextChain()->SetLinkHandlingUnderflow(this, true); + if (pEdtOutl != NULL) pEdtOutl->SetText(*pNewText); diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx index 3637d45..3e4f546 100644 --- a/svx/source/svdraw/textchain.cxx +++ b/svx/source/svdraw/textchain.cxx @@ -25,6 +25,7 @@ ImpChainLinkProperties::ImpChainLinkProperties() { // give defaults bOverwriteOnOverflow = false; + bHandlingUnderflow = false; } // XXX: All getters in the class assume that the guy is in the chain @@ -59,6 +60,18 @@ bool TextChain::GetLinksHaveMergeableFirstPara(SdrTextObj* /* pPrevLink */, SdrT return false; } +bool TextChain::GetLinkHandlingUnderflow(SdrTextObj *pTarget) +{ + ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); + return pLinkProperties->bHandlingUnderflow; +} + +void TextChain::SetLinkHandlingUnderflow(SdrTextObj *pTarget, bool bHandlingUnderflow) +{ + ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); + pLinkProperties->bHandlingUnderflow = bHandlingUnderflow; +} + void TextChain::SetOverwriteOnOverflow(SdrTextObj *pTarget, bool bOverwrite) { ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits