[Libreoffice-commits] core.git: Branch 'feature/textbox' - sw/source

Miklos Vajna vmiklos at collabora.co.uk
Mon May 26 08:01:07 PDT 2014


 sw/source/core/unocore/unoportenum.cxx |   14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

New commits:
commit 6f3c49e46205d705df24a6507c9eb14fcfaf4332
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Mon May 26 17:00:33 2014 +0200

    SwXTextPortionEnumeration: do not expose inline anchored textboxes
    
    Change-Id: I2f3e4295e4f1521c66a502650f214c9c46481e9e

diff --git a/sw/source/core/unocore/unoportenum.cxx b/sw/source/core/unocore/unoportenum.cxx
index c6a7bc4..887b84f 100644
--- a/sw/source/core/unocore/unoportenum.cxx
+++ b/sw/source/core/unocore/unoportenum.cxx
@@ -28,6 +28,7 @@
 #include <ndtxt.hxx>
 #include <unocrsr.hxx>
 #include <docary.hxx>
+#include <textboxhelper.hxx>
 #include <tox.hxx>
 #include <unomid.h>
 #include <unoparaframeenum.hxx>
@@ -43,6 +44,7 @@
 #include <fmtanchr.hxx>
 #include <fmtrfmrk.hxx>
 #include <frmfmt.hxx>
+#include <fmtflcnt.hxx>
 #include <unoidx.hxx>
 #include <unocoll.hxx>
 #include <redline.hxx>
@@ -687,7 +689,8 @@ lcl_ExportHints(
     const sal_Int32 nCurrentIndex,
     const bool bRightMoveForbidden,
     bool & o_rbCursorMoved,
-    sal_Int32 & o_rNextAttrPosition )
+    sal_Int32 & o_rNextAttrPosition,
+    std::list<SwFrmFmt*>& rTextBoxes)
 {
     // if the attribute has a dummy character, then xRef is set (except META)
     // otherwise, the portion for the attribute is inserted into rPortions!
@@ -856,6 +859,11 @@ lcl_ExportHints(
                         pUnoCrsr->Right(1,CRSR_SKIP_CHARS,false,false);
                         if( *pUnoCrsr->GetMark() == *pUnoCrsr->GetPoint() )
                             break; // Robust #i81708 content in covered cells
+
+                        // Do not expose inline anchored textboxes.
+                        if (std::find(rTextBoxes.begin(), rTextBoxes.end(), pAttr->GetFlyCnt().GetFrmFmt()) != rTextBoxes.end())
+                            break;
+
                         pUnoCrsr->Exchange();
                         xRef = new SwXTextPortion( pUnoCrsr, xParent, PORTION_FRAME);
                     }
@@ -1234,6 +1242,8 @@ static void lcl_CreatePortions(
     PortionStack_t PortionStack;
     PortionStack.push( PortionList_t(&i_rPortions, (const SwTxtAttr *)0) );
 
+    std::list<SwFrmFmt*> aTextBoxes = SwTextBoxHelper::findTextBoxes(pDoc);
+
     bool bAtEnd( false );
     while (!bAtEnd) // every iteration consumes at least current character!
     {
@@ -1284,7 +1294,7 @@ static void lcl_CreatePortions(
             // N.B.: side-effects nNextAttrIndex, bCursorMoved; may move cursor
             xRef = lcl_ExportHints(PortionStack, i_xParentText, pUnoCrsr,
                         pHints, i_nStartPos, i_nEndPos, nCurrentIndex, bAtEnd,
-                        bCursorMoved, nNextAttrIndex);
+                        bCursorMoved, nNextAttrIndex, aTextBoxes);
             if (PortionStack.empty())
             {
                 OSL_FAIL("CreatePortions: stack underflow");


More information about the Libreoffice-commits mailing list