[Libreoffice-commits] core.git: Branch 'feature/gsoc14-draw-chained-text-boxes' - include/svx svx/source

matteocam matteo.campanelli at gmail.com
Fri Jun 19 19:43:54 PDT 2015


 include/svx/textchain.hxx                   |    4 ++++
 svx/source/svdraw/svdotext.cxx              |    9 ++++++++-
 svx/source/svdraw/svdotextdecomposition.cxx |    5 ++++-
 svx/source/svdraw/textchain.cxx             |   13 +++++++++++++
 4 files changed, 29 insertions(+), 2 deletions(-)

New commits:
commit 56c559b69e9549611b2ae5dad67842b60880646b
Author: matteocam <matteo.campanelli at gmail.com>
Date:   Fri Jun 19 22:43:26 2015 -0400

    Adding one more state to underflow processing
    
    Change-Id: I130935fc96ea270c7661b324e473ab825547b45b

diff --git a/include/svx/textchain.hxx b/include/svx/textchain.hxx
index a03bf57..9290f22 100644
--- a/include/svx/textchain.hxx
+++ b/include/svx/textchain.hxx
@@ -42,6 +42,7 @@ class ImpChainLinkProperties
 
     bool bOverwriteOnOverflow;
     bool bHandlingUnderflow;
+    bool bNilChainingEvent;
 };
 
 
@@ -67,6 +68,9 @@ class TextChain {
     bool GetLinkHandlingUnderflow(SdrTextObj *pTarget);
     void SetLinkHandlingUnderflow(SdrTextObj *, bool);
 
+    bool GetNilChainingEvent(SdrTextObj *pTarget);
+    void SetNilChainingEvent(SdrTextObj *, bool);
+
     protected:
     LinkPropertiesMap maLinkPropertiesMap;
 };
diff --git a/svx/source/svdraw/svdotext.cxx b/svx/source/svdraw/svdotext.cxx
index 3c394de..51c75a0 100644
--- a/svx/source/svdraw/svdotext.cxx
+++ b/svx/source/svdraw/svdotext.cxx
@@ -2004,10 +2004,12 @@ void SdrTextObj::onUnderflowStatusEvent( )
     {
         // possibly coming from an overflow
         if (pEdtOutl) {
+            GetTextChain()->SetLinkHandlingUnderflow(this, false);
+            GetTextChain()->SetNilChainingEvent(this, true);
             OutlinerParaObject *pPObj = GetOutlinerParaObject();
             pEdtOutl->SetText(*pPObj);
         }
-        GetTextChain()->SetLinkHandlingUnderflow(this, false);
+
         return;
     }
 
@@ -2147,6 +2149,11 @@ void SdrTextObj::onChainingEvent()
     if (!pEdtOutl)
         return;
 
+    if (GetTextChain()->GetNilChainingEvent(this)) {
+        GetTextChain()->SetNilChainingEvent(this, false);
+        return;
+    }
+
     bool bIsPageOverflow;
 
     if (GetTextChain()->GetLinkHandlingUnderflow(this))
diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx
index a4de09d..d4a3438 100644
--- a/svx/source/svdraw/svdotextdecomposition.cxx
+++ b/svx/source/svdraw/svdotextdecomposition.cxx
@@ -789,7 +789,10 @@ void SdrTextObj::impLeaveOnlyNonOverflowingText(SdrOutliner *pOutliner) const
         pEdtOutl->SetText(*pNewText);
     // adds it to current outliner anyway (useful in static decomposition)
     pOutliner->SetText(*pNewText);
-    const_cast<SdrTextObj*>(this)->NbcSetOutlinerParaObject(pNewText);
+    if (bInUnderflow) // must make a broadcast to reset underflow (XXX: can I reset it from here?)
+        const_cast<SdrTextObj*>(this)->SetOutlinerParaObject(pNewText);
+    else
+        const_cast<SdrTextObj*>(this)->NbcSetOutlinerParaObject(pNewText);
 }
 
 OutlinerParaObject *SdrTextObj::impGetOverflowingParaObject(SdrOutliner *pOutliner, SdrTextObj *pNextTextObj) const
diff --git a/svx/source/svdraw/textchain.cxx b/svx/source/svdraw/textchain.cxx
index 3e4f546..1fd7f92 100644
--- a/svx/source/svdraw/textchain.cxx
+++ b/svx/source/svdraw/textchain.cxx
@@ -26,6 +26,7 @@ ImpChainLinkProperties::ImpChainLinkProperties()
     // give defaults
     bOverwriteOnOverflow = false;
     bHandlingUnderflow = false;
+    bNilChainingEvent = false;
 }
 
 // XXX: All getters in the class assume that the guy is in the chain
@@ -72,6 +73,18 @@ void TextChain::SetLinkHandlingUnderflow(SdrTextObj *pTarget, bool bHandlingUnde
     pLinkProperties->bHandlingUnderflow = bHandlingUnderflow;
 }
 
+bool TextChain::GetNilChainingEvent(SdrTextObj *pTarget)
+{
+    ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+    return pLinkProperties->bNilChainingEvent;
+}
+
+void TextChain::SetNilChainingEvent(SdrTextObj *pTarget, bool bNilChainingEvent)
+{
+    ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);
+    pLinkProperties->bNilChainingEvent = bNilChainingEvent;
+}
+
 void TextChain::SetOverwriteOnOverflow(SdrTextObj *pTarget, bool bOverwrite)
 {
     ImpChainLinkProperties *pLinkProperties = GetLinkProperties(pTarget);


More information about the Libreoffice-commits mailing list