include/svx/textchainflow.hxx | 1 + svx/source/svdraw/svdotext.cxx | 8 ++++++-- svx/source/svdraw/textchainflow.cxx | 6 +----- 3 files changed, 8 insertions(+), 7 deletions(-)
New commits: commit 878920775d8a436c16e0553b20783b70b278231c Author: matteocam <matteo.campane...@gmail.com> Date: Tue Jun 30 12:04:48 2015 -0400 Prevent recursive underflow/overflow calls (for the same object) Change-Id: I76705d41da739e327be0c9a67bbbb245da055b77 diff --git a/include/svx/textchainflow.hxx b/include/svx/textchainflow.hxx index 3215194..ce6d728 100644 --- a/include/svx/textchainflow.hxx +++ b/include/svx/textchainflow.hxx @@ -94,6 +94,7 @@ class TextChainFlow { }; +// NOTE: EditingTextChainFlow might be strongly coupled with behavior in SdrTextObj::onChainingEvent class EditingTextChainFlow : public TextChainFlow { public: diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx index fbb76d0..948428c 100644 --- a/svx/source/svdraw/svdotext.cxx +++ b/svx/source/svdraw/svdotext.cxx @@ -1975,7 +1975,7 @@ void SdrTextObj::onChainingEvent() // This is true during an underflow-caused overflow (with pEdtOutl->SetText()) if (GetTextChain()->GetNilChainingEvent(this)) { - GetTextChain()->SetNilChainingEvent(this, false); + return; } @@ -1985,6 +1985,8 @@ void SdrTextObj::onChainingEvent() EditingTextChainFlow aTxtChainFlow(this); aTxtChainFlow.CheckForFlowEvents(pEdtOutl); + // We prevent to trigger further handling of overflow/underflow for this SdrTextObj + GetTextChain()->SetNilChainingEvent(this, true); if (aTxtChainFlow.IsOverflow()) { fprintf(stderr, "[CHAINING] Overflow going on\n"); @@ -2000,11 +2002,13 @@ void SdrTextObj::onChainingEvent() if (bIsOverflowFromUnderflow) { fprintf(stderr, "[CHAINING] Overflow going on (underflow induced)\n"); // prevents infinite loops when setting text for editing outliner - GetTextChain()->SetNilChainingEvent(const_cast<SdrTextObj*>(this), true); + aTxtChainFlow.ExecuteOverflow(&aDrawOutliner, &aDrawOutliner); + } } + GetTextChain()->SetNilChainingEvent(this, false); } diff --git a/svx/source/svdraw/textchainflow.cxx b/svx/source/svdraw/textchainflow.cxx index b3dcd80..93bb2f1 100644 --- a/svx/source/svdraw/textchainflow.cxx +++ b/svx/source/svdraw/textchainflow.cxx @@ -122,9 +122,7 @@ void TextChainFlow::ExecuteUnderflow(SdrOutliner *pOutl) OutlinerParaObject *pNextLinkWholeText = mpNextLink->GetOutlinerParaObject(); // making whole text - OutlinerParaObject *pCurText; // XXX: at next line we have editing outliner in editing version - //pCurText = pOutl->CreateParaObject(); - + OutlinerParaObject *pCurText; // We saved this text already pCurText = mpUnderflowingPObj; @@ -183,8 +181,6 @@ OutlinerParaObject *TextChainFlow::impGetNonOverflowingParaObject(SdrOutliner *p return mpOverflChText->CreateNonOverflowingParaObject(pOutliner); } - - SdrTextObj *TextChainFlow::GetLinkTarget() const { return mpTargetLink; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits