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

matteocam matteo.campanelli at gmail.com
Wed Jul 30 07:39:04 PDT 2014


 svx/source/svdraw/svdotxed.cxx |   31 ++++++++++++++++++++++++++++---
 1 file changed, 28 insertions(+), 3 deletions(-)

New commits:
commit 83fe0b18b0c37c859f123722d08e79fbe32e880b
Author: matteocam <matteo.campanelli at gmail.com>
Date:   Wed Jul 30 17:38:03 2014 +0300

    Template of SdrTextObj actions for chaining after edit is over
    
    Change-Id: I4b6edd5c28518d73623d2cb1fa16ee7f343eb5af

diff --git a/svx/source/svdraw/svdotxed.cxx b/svx/source/svdraw/svdotxed.cxx
index 4c7754e..b8deb75 100644
--- a/svx/source/svdraw/svdotxed.cxx
+++ b/svx/source/svdraw/svdotxed.cxx
@@ -254,12 +254,29 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl)
     if(rOutl.IsModified())
     {
         OutlinerParaObject* pNewText = NULL;
+        OutlinerParaObject* pOverflownText = NULL;
 
-        // to make the gray field background vanish again
+        // to make the gray field background vanish  again
         rOutl.UpdateFields();
 
-        sal_Int32 nParaAnz = rOutl.GetParagraphCount();
-        pNewText = rOutl.CreateParaObject( 0, nParaAnz );
+        // FIXME(matteocam)
+        if ( IsToBeChained() )
+        {
+            // set non overflow part of text to current box
+            pNewText = rOutl.GetNotOverflowingParaObject();
+            pNextText = rOutl.GetOverflowingParaObject();
+
+            // XXX: should this SdrTextObj know "how much text to ask" by CreateParaObject?
+            //      No, it must be the editengine (or outliner) to give it since it is
+            //      a special case: we want to have something that may be interrupted
+            //      within a paragraph itself.
+
+        }
+        else // standard case
+        {
+            sal_Int32 nParaAnz = rOutl.GetParagraphCount();
+            pNewText = rOutl.CreateParaObject( 0, nParaAnz );
+        }
 
         // need to end edit mode early since SetOutlinerParaObject already
         // uses GetCurrentBoundRect() which needs to take the text into account
@@ -274,6 +291,14 @@ void SdrTextObj::EndTextEdit(SdrOutliner& rOutl)
     nStat &= ~EE_CNTRL_AUTOPAGESIZE;
     rOutl.SetControlWord(nStat);
 
+    // sets text to next box
+    if (pNextText != NULL) {
+        SdrTextObj *pNextTextObj = GetNextLinkInChain();
+        pNextTextObj->SetOutlinerParaObject( pOverflownText );
+        pNextTextObj->BegTextEdit( rOutl );
+        // XXX: Also, will all those calls currently in impCopyTextInTextObj be necessary too?
+    }
+
     mbInEditMode = false;
 }
 


More information about the Libreoffice-commits mailing list