[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.2' - 11 commits - connectivity/source download.lst filter/source framework/source sc/qa sc/source sw/qa sw/source vcl/source writerfilter/source

Matúš Kukan matus.kukan at collabora.com
Tue Sep 23 07:10:08 PDT 2014


 connectivity/source/drivers/file/FPreparedStatement.cxx |    2 
 download.lst                                            |    2 
 filter/source/graphicfilter/ieps/ieps.cxx               |    2 
 framework/source/services/substitutepathvars.cxx        |    3 
 sc/qa/unit/ucalc_pivottable.cxx                         |   52 ++++++++--------
 sc/source/core/data/column4.cxx                         |    7 +-
 sc/source/core/data/dpoutput.cxx                        |    9 ++
 sc/source/core/data/table3.cxx                          |    7 +-
 sc/source/ui/docshell/dbdocfun.cxx                      |    1 
 sw/qa/extras/ooxmlimport/data/bnc891663.docx            |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx                |    9 ++
 sw/source/filter/html/htmlgrin.cxx                      |   23 ++++---
 vcl/source/gdi/regionband.cxx                           |    1 
 writerfilter/source/dmapper/GraphicImport.cxx           |    7 ++
 writerfilter/source/dmapper/PropertyIds.cxx             |    1 
 writerfilter/source/dmapper/PropertyIds.hxx             |    1 
 16 files changed, 86 insertions(+), 41 deletions(-)

New commits:
commit 535a62150bf9d2e12be033ddf7bdd8f761b72f60
Author: Matúš Kukan <matus.kukan at collabora.com>
Date:   Tue Sep 23 14:40:01 2014 +0200

    Do not link html images only when pasting from clipboard (bnc#580834)
    
    Conflicts:
    
    	sw/qa/extras/htmlimport/data/picture.html
    	sw/qa/extras/htmlimport/htmlimport.cxx
    
    Change-Id: I020c4e6ed6d468e553dedd7c91979b081d6b4725

diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index 4052027..5f7ca14 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -711,7 +711,8 @@ IMAGE_SETEVENT:
                 sGrfNm = "";
         }
     }
-    else if (aGraphicURL.GetProtocol() == INET_PROT_FILE)
+    // sBaseURL is empty if the source is clipboard
+    else if (sBaseURL.isEmpty())
     {
         if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, aGraphicURL))
             sGrfNm = "";
commit 9af79c2fbec31611305bfab99fbac30988a97230
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Sep 12 17:59:49 2014 +0200

    STL assert in connectivity::file::OPreparedStatement::checkAndResizeParameters
    
    Change-Id: I48f4ceaf1d01d449eba169534f6512f9aadca886
    (cherry picked from commit 7ce8ba33f38671d7cae8b0e759c38b4a8668488a)

diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx b/connectivity/source/drivers/file/FPreparedStatement.cxx
index d34c526..586de72 100644
--- a/connectivity/source/drivers/file/FPreparedStatement.cxx
+++ b/connectivity/source/drivers/file/FPreparedStatement.cxx
@@ -445,7 +445,7 @@ void OPreparedStatement::checkAndResizeParameters(sal_Int32 parameterIndex)
     {
         sal_Int32 i = m_aParameterRow->get().size();
         (m_aParameterRow->get()).resize(parameterIndex+1);
-        for ( ;i <= parameterIndex+1; ++i )
+        for ( ; i <= parameterIndex; ++i)
         {
             if ( !(m_aParameterRow->get())[i].is() )
                 (m_aParameterRow->get())[i] = new ORowSetValueDecorator;
commit 9ccde22fcf8efe0007ec243df7ee85af8ef795b0
Author: Björgvin Ragnarsson <nifgraup at gmail.com>
Date:   Thu Sep 4 00:43:04 2014 +0300

    fdo#81592 Use 24-bit color depth, not 256 colors when converting an EPS-file.
    
    This regression was introduced in f5c3f5601a3739dead635f9abc446951b385018f.
    
    Change-Id: Ica48732398cd5d225b433b177ff6e6fff649e732
    (cherry picked from commit 0791335cf007e04de25e03c0a6e0aa53fa66016a)

diff --git a/filter/source/graphicfilter/ieps/ieps.cxx b/filter/source/graphicfilter/ieps/ieps.cxx
index 94bf6ac..c0bf43c 100644
--- a/filter/source/graphicfilter/ieps/ieps.cxx
+++ b/filter/source/graphicfilter/ieps/ieps.cxx
@@ -327,7 +327,7 @@ static bool RenderAsBMPThroughGS(const sal_uInt8* pBuf, sal_uInt32 nBytesRead,
     OUString arg6("-dTextAlphaBits=4");
     OUString arg7("-dGraphicsAlphaBits=4");
     OUString arg8("-r300x300");
-    OUString arg9("-sDEVICE=bmp256");
+    OUString arg9("-sDEVICE=bmp16m");
     OUString arg10("-sOutputFile=-");
     OUString arg11("-");
     rtl_uString *args[] =
commit d192533c4ce32cb1a9e5eb011bbe29e14acad9d5
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Sep 17 11:24:56 2014 -0400

    bnc#592918: Display data description in pivot table.
    
    When there are no column fields and exactly one data field.
    
    Change-Id: I10d2af7e626f98a4d8a981e078e99e7da9207d1c
    (cherry picked from commit 902564bfe52e7699cefc80b3334c2eb0a8cacdcf)

diff --git a/sc/qa/unit/ucalc_pivottable.cxx b/sc/qa/unit/ucalc_pivottable.cxx
index 00e83b9..65ed2fd 100644
--- a/sc/qa/unit/ucalc_pivottable.cxx
+++ b/sc/qa/unit/ucalc_pivottable.cxx
@@ -1107,7 +1107,7 @@ void Test::testPivotTableNormalGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "1" },
             { "B", "2" },
             { "C", "3" },
@@ -1155,7 +1155,7 @@ void Test::testPivotTableNormalGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][3] = {
-            { "Name2", "Name", 0 },
+            { "Name2", "Name", "Sum - Value" },
             { "D", "D", "4" },
             { "E", "E", "5" },
             { "F", "F", "6" },
@@ -1192,7 +1192,7 @@ void Test::testPivotTableNormalGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][3] = {
-            { "Name2", "Name", 0 },
+            { "Name2", "Name", "Sum - Value" },
             { "G", "G", "7" },
             { "Group1", "A", "1" },
             { 0,        "B", "2" },
@@ -1289,7 +1289,7 @@ void Test::testPivotTableNumberGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Order", 0 },
+            { "Order", "Sum - Score" },
             { "<30",   "423" },
             { "30-39", "87"  },
             { "40-49", "241" },
@@ -1404,7 +1404,7 @@ void Test::testPivotTableDateGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][4] = {
-            { "Years", "Quarters", "Date", 0 },
+            { "Years", "Quarters", "Date", "Sum - Value" },
             { "2011", "Q1", "Jan", "1" },
             { 0, 0,         "Mar", "2" },
             { 0,      "Q3", "Sep", "7" },
@@ -1436,7 +1436,7 @@ void Test::testPivotTableDateGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][4] = {
-            { "Years", "Quarters", "Date", 0 },
+            { "Years", "Quarters", "Date", "Sum - Value" },
             { "2011", "Q1", "Jan", "1" },
             { 0, 0,         "Mar", "2" },
             { 0,      "Q3", "Sep", "7" },
@@ -1460,7 +1460,7 @@ void Test::testPivotTableDateGrouping()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Date", 0 },
+            { "Date", "Sum - Value" },
             { "2011-01-01", "1" },
             { "2011-03-02", "2" },
             { "2011-09-03", "7" },
@@ -1528,7 +1528,7 @@ void Test::testPivotTableEmptyRows()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "1" },
             { "B", "2" },
             { "C", "3" },
@@ -1551,7 +1551,7 @@ void Test::testPivotTableEmptyRows()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "1" },
             { "B", "2" },
             { "C", "3" },
@@ -1578,7 +1578,7 @@ void Test::testPivotTableEmptyRows()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "B", "3" },
             { "C", "3" },
             { "D", "4" },
@@ -1656,7 +1656,7 @@ void Test::testPivotTableTextNumber()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "0001", "1" },
             { "0002", "2" },
             { "0003", "3" },
@@ -1715,7 +1715,7 @@ void Test::testPivotTableCaseInsensitiveStrings()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "3" },
             { "Total Result", "3" },
         };
@@ -1878,7 +1878,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "1" },
             { "B", "2" },
             { "C", "4" },
@@ -1905,7 +1905,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", 0 },
             { "B", "1" },
             { "C", "3" },
@@ -1925,7 +1925,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "100.00%" },
             { "B", "200.00%" },
             { "C", "400.00%" },
@@ -1945,7 +1945,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", 0 },
             { "B", "100.00%" },
             { "C", "300.00%" },
@@ -1965,7 +1965,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "1" },
             { "B", "3" },
             { "C", "7" },
@@ -1985,7 +1985,7 @@ void Test::testPivotTableFieldReference()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "6.67%" },
             { "B", "13.33%" },
             { "C", "26.67%" },
@@ -2050,7 +2050,7 @@ void Test::testPivotTableDocFunc()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "Apple", "16" },
             { "Microsoft", "32" },
             { "Oracle", "2" },
@@ -2119,7 +2119,7 @@ void Test::testFuncGETPIVOTDATA()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][2] = {
-            { "Name", 0 },
+            { "Name", "Sum - Value" },
             { "A", "6" },
             { "B", "15" },
             { "Total Result", "21" },
@@ -2277,12 +2277,12 @@ void Test::testFuncGETPIVOTDATALeafAccess()
     {
         // Expected output table content.  0 = empty cell
         const char* aOutputCheck[][3] = {
-            { "Type",         "Member",     0  },
-            { "A",            "Anna",     "1"  },
-            {  0,             "Cecilia",  "3"  },
-            { "B",            "Brittany", "2"  },
-            {  0,             "Donna",    "4"  },
-            { "Total Result",  0,         "10" },
+            { "Type",         "Member",   "Sum - Value" },
+            { "A",            "Anna",     "1"           },
+            {  0,             "Cecilia",  "3"           },
+            { "B",            "Brittany", "2"           },
+            {  0,             "Donna",    "4"           },
+            { "Total Result",  0,         "10"          },
         };
 
         bSuccess = checkDPTableOutput<3>(m_pDoc, aOutRange, aOutputCheck, "Pivot table refreshed");
diff --git a/sc/source/core/data/dpoutput.cxx b/sc/source/core/data/dpoutput.cxx
index c03b8ce..83b4730 100644
--- a/sc/source/core/data/dpoutput.cxx
+++ b/sc/source/core/data/dpoutput.cxx
@@ -1129,6 +1129,15 @@ void ScDPOutput::Output()
         }
     }
 
+    if (nColCount == 1 && nRowCount > 0 && nColFieldCount == 0)
+    {
+        // the table contains excatly one data field and no column fields.
+        // Display data description at top right corner.
+        ScSetStringParam aParam;
+        aParam.setTextInput();
+        pDoc->SetString(nDataStartCol, nDataStartRow-1, nTab, aDataDescription, &aParam);
+    }
+
     //  output data results:
 
     for (long nRow=0; nRow<nRowCount; nRow++)
commit 21297a3249aec0bda08b5b7e1c8091bb4417e255
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Sep 18 12:13:13 2014 -0400

    fdo#83764: Ensure that the row position is below MAXROW.
    
    When attempting to split formula groups, else multi_type_vector would
    try to locate a block outside its logical range.
    
    Change-Id: I424ede112138de459b5ba3bff5e021c4407ccf3d
    (cherry picked from commit 0ef6263ed2b31b8f9e431971e6c5e8928996c1c8)

diff --git a/sc/source/core/data/column4.cxx b/sc/source/core/data/column4.cxx
index d1aacdd..8b46e74 100644
--- a/sc/source/core/data/column4.cxx
+++ b/sc/source/core/data/column4.cxx
@@ -499,11 +499,16 @@ public:
 
 void ScColumn::SplitFormulaGroupByRelativeRef( const ScRange& rBoundRange )
 {
+    if (rBoundRange.aStart.Row() >= MAXROW)
+        // Nothing to split.
+        return;
+
     std::vector<SCROW> aBounds;
 
     // Cut at row boundaries first.
     aBounds.push_back(rBoundRange.aStart.Row());
-    aBounds.push_back(rBoundRange.aEnd.Row()+1);
+    if (rBoundRange.aEnd.Row() < MAXROW)
+        aBounds.push_back(rBoundRange.aEnd.Row()+1);
     sc::SharedFormulaUtil::splitFormulaCellGroups(maCells, aBounds);
 
     RelativeRefBoundChecker aFunc(rBoundRange);
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index c1a81e6..946416d 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -771,8 +771,11 @@ void ScTable::SortReorderByColumn(
         sc::CellStoreType& rCells = aCol[nCol].maCells;
         sc::CellStoreType::position_type aPos = rCells.position(nRow1);
         sc::SharedFormulaUtil::joinFormulaCellAbove(aPos);
-        aPos = rCells.position(aPos.first, nRow2+1);
-        sc::SharedFormulaUtil::joinFormulaCellAbove(aPos);
+        if (nRow2 < MAXROW)
+        {
+            aPos = rCells.position(aPos.first, nRow2+1);
+            sc::SharedFormulaUtil::joinFormulaCellAbove(aPos);
+        }
     }
 }
 
commit bb6fdcc061d736ec4146dbf1244159835021b6e1
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Thu Sep 18 14:22:27 2014 -0400

    Update mdds to 0.11.0.
    
    (cherry picked from commit 3f3b404b643f907f9feff893324174c00c3c4e4a)
    
    Conflicts:
    	download.lst
    
    Change-Id: Ia4c413d313aafc1ba46d3d856145c0eb51a7d6ec

diff --git a/download.lst b/download.lst
index 41556c5..908c660 100644
--- a/download.lst
+++ b/download.lst
@@ -92,7 +92,7 @@ export LIBXML_TARBALL := 9c0cfef285d5c4a5c80d00904ddab380-libxml2-2.9.1.tar.gz
 export LIBXSLT_TARBALL := 9667bf6f9310b957254fdcf6596600b7-libxslt-1.1.28.tar.gz
 export LPSOLVE_TARBALL := 26b3e95ddf3d9c077c480ea45874b3b8-lp_solve_5.5.tar.gz
 export MARIADB_TARBALL := 05f84c95b610c21c5fd510d10debcabf-mariadb-native-client-1.0.0.tar.bz2
-export MDDS_TARBALL := aa5ca9d1ed1082890835afab26400a39-mdds_0.10.3.tar.bz2
+export MDDS_TARBALL := a67a46ec9d00d283a7cd8dbdd2906b59-mdds_0.11.0.tar.bz2
 export MYSQLCPPCONN_TARBALL := 0981bda6548a8c8233ffce2b6e4b2a23-mysql-connector-c++-1.1.0.tar.gz
 export MYTHES_TARBALL := 46e92b68e31e858512b680b3b61dc4c1-mythes-1.2.3.tar.gz
 export NEON_TARBALL := ff369e69ef0f0143beb5626164e87ae2-neon-0.29.5.tar.gz
commit 374c9f7e023a06cb95694fc65f9232e21b1bad59
Author: Matúš Kukan <matus.kukan at collabora.com>
Date:   Wed Sep 17 11:57:24 2014 +0200

    bnc#580834: HTML import: Embed images if source URL is a local file.
    
    Use also INET_PROT_FILE to determine whether to import images as links.
    
    (cherry picked from commits 3914a711060341345f15b83656457f90095f32d6
    and 72703173066a2db5c977d422ace59d60b998bbfc)
    
    Conflicts:
    	sw/source/filter/html/htmlgrin.cxx
    
    Change-Id: I22a5ded92d9aac4220c0c4fa8bb8a9490f5c61a6

diff --git a/sw/source/filter/html/htmlgrin.cxx b/sw/source/filter/html/htmlgrin.cxx
index ec6c8f9..4052027 100644
--- a/sw/source/filter/html/htmlgrin.cxx
+++ b/sw/source/filter/html/htmlgrin.cxx
@@ -696,8 +696,9 @@ IMAGE_SETEVENT:
     aFrmSize.SetHeightPercent( nPrcHeight );
     aFrmSet.Put( aFrmSize );
 
-    Graphic aEmptyGrf;
-    if( sGrfNm.startsWith("data:") )
+    Graphic aGraphic;
+    INetURLObject aGraphicURL( sGrfNm );
+    if( aGraphicURL.GetProtocol() == INET_PROT_DATA )
     {
         // use embedded base64 encoded data
         ::com::sun::star::uno::Sequence< sal_Int8 > aPass;
@@ -705,15 +706,22 @@ IMAGE_SETEVENT:
         ::sax::Converter::decodeBase64(aPass, sBase64Data);
         if( aPass.hasElements() )
         {
-                SvMemoryStream aStream(aPass.getArray(), aPass.getLength(), STREAM_READ);
-                GraphicFilter::GetGraphicFilter().ImportGraphic( aEmptyGrf, OUString(), aStream );
+            SvMemoryStream aStream(aPass.getArray(), aPass.getLength(), STREAM_READ);
+            if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, "", aStream))
+                sGrfNm = "";
         }
     }
-    else
+    else if (aGraphicURL.GetProtocol() == INET_PROT_FILE)
+    {
+        if (GRFILTER_OK == GraphicFilter::GetGraphicFilter().ImportGraphic(aGraphic, aGraphicURL))
+            sGrfNm = "";
+    }
+    if (!sGrfNm.isEmpty())
     {
-        aEmptyGrf.SetDefaultType();
+        aGraphic.SetDefaultType();
     }
-    SwFrmFmt *pFlyFmt = pDoc->Insert( *pPam, sGrfNm, aEmptyOUStr, &aEmptyGrf,
+    // passing empty sGrfNm here, means we don't want the graphic to be linked
+    SwFrmFmt *pFlyFmt = pDoc->Insert( *pPam, sGrfNm, aEmptyOUStr, &aGraphic,
                                       &aFrmSet, NULL, NULL );
     SwGrfNode *pGrfNd = pDoc->GetNodes()[ pFlyFmt->GetCntnt().GetCntntIdx()
                                   ->GetIndex()+1 ]->GetGrfNode();
commit a308c4de399595a346c602ec8500f7e0f2e58ece
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Fri Sep 19 09:11:09 2014 -0400

    fdo#84009: Be sure to update the sheet index when moving the sort range.
    
    Change-Id: Ic9ad51b33f6dfb6f90e76439c27eeff25ec4c7da
    (cherry picked from commit 5fd4679e7b92f344ea867e0dca1fc4c9363ae2cd)

diff --git a/sc/source/ui/docshell/dbdocfun.cxx b/sc/source/ui/docshell/dbdocfun.cxx
index 29d2da1..aa1e322 100644
--- a/sc/source/ui/docshell/dbdocfun.cxx
+++ b/sc/source/ui/docshell/dbdocfun.cxx
@@ -462,6 +462,7 @@ sal_Bool ScDBDocFunc::Sort( SCTAB nTab, const ScSortParam& rSortParam,
             return false;
 
         aLocalParam.MoveToDest();
+        nTab = aLocalParam.nDestTab;
     }
 
     ScEditableTester aTester( pDoc, nTab, aLocalParam.nCol1,aLocalParam.nRow1,
commit 425f18fd3b6a87694c540d4d0bb37c5b64df557b
Author: Luboš Luňák <l.lunak at collabora.com>
Date:   Sun Sep 21 17:52:58 2014 +0200

    handle docx's w:anchor layoutInCell attribute (bnc#891663)
    
    (cherry picked from commit 3891ba42a886fa85eb43da24d1badf44e765d54c)
    
    Conflicts:
    	sw/qa/extras/ooxmlimport/ooxmlimport.cxx
    	writerfilter/source/dmapper/PropertyIds.cxx
    	writerfilter/source/dmapper/PropertyIds.hxx
    
    Change-Id: I8268567b84aa0f6e42624bfd0f79c8c49c153edd

diff --git a/sw/qa/extras/ooxmlimport/data/bnc891663.docx b/sw/qa/extras/ooxmlimport/data/bnc891663.docx
new file mode 100644
index 0000000..d5f057e
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/bnc891663.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 0035e7b..2a7ab9a 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -1723,6 +1723,15 @@ DECLARE_OOXMLIMPORT_TEST(testTableBtlrCenter, "table-btlr-center.docx")
     CPPUNIT_ASSERT_EQUAL(text::VertOrientation::CENTER, getProperty<sal_Int16>(xTable->getCellByName("A2"), "VertOrient"));
 }
 
+DECLARE_OOXMLIMPORT_TEST(testBnc891663, "bnc891663.docx")
+{
+    // The image should be inside a cell, so the text in the following cell should be below it.
+    int imageTop = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "top").toInt32();
+    int imageHeight = parseDump("/root/page/body/tab/row[1]/cell[2]/txt[1]/anchored/fly/infos/bounds", "height").toInt32();
+    int textNextRowTop = parseDump("/root/page/body/tab/row[2]/cell[1]/txt[1]/infos/bounds", "top").toInt32();
+    CPPUNIT_ASSERT( textNextRowTop >= imageTop + imageHeight );
+}
+
 #endif
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/GraphicImport.cxx b/writerfilter/source/dmapper/GraphicImport.cxx
index 607d92b..2c57337 100644
--- a/writerfilter/source/dmapper/GraphicImport.cxx
+++ b/writerfilter/source/dmapper/GraphicImport.cxx
@@ -210,6 +210,7 @@ public:
     sal_Int16 nVertOrient;
     sal_Int16 nVertRelation;
     sal_Int32 nWrap;
+    bool      bLayoutInCell;
     bool      bOpaque;
     bool      bContour;
     bool      bContourOutside;
@@ -282,6 +283,7 @@ public:
         ,nVertOrient(  text::VertOrientation::NONE )
         ,nVertRelation( text::RelOrientation::FRAME )
         ,nWrap(0)
+        ,bLayoutInCell(false)
         ,bOpaque( true )
         ,bContour(false)
         ,bContourOutside(true)
@@ -856,6 +858,8 @@ void GraphicImport::lcl_attribute(Id nName, Value & val)
         break;
         case NS_ooxml::LN_CT_Anchor_locked: // 90990; - ignored
         case NS_ooxml::LN_CT_Anchor_layoutInCell: // 90991; - ignored
+            m_pImpl->bLayoutInCell = nIntValue != 0;
+        break;
         case NS_ooxml::LN_CT_Anchor_hidden: // 90992; - ignored
         break;
         case NS_ooxml::LN_CT_Anchor_allowOverlap: // 90993;
@@ -1508,6 +1512,9 @@ uno::Reference< text::XTextContent > GraphicImport::createGraphicObject( const b
                 }
                 xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_SURROUND ),
                         uno::makeAny(m_pImpl->nWrap));
+                if( m_pImpl->bLayoutInCell && m_pImpl->nWrap != text::WrapTextMode_THROUGHT )
+                    xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_FOLLOW_TEXT_FLOW ),
+                            uno::makeAny(true));
 
                 xGraphicObjectProperties->setPropertyValue(rPropNameSupplier.GetName( PROP_SURROUND_CONTOUR ),
                     uno::makeAny(m_pImpl->bContour));
diff --git a/writerfilter/source/dmapper/PropertyIds.cxx b/writerfilter/source/dmapper/PropertyIds.cxx
index d693ddb..14dbc25 100644
--- a/writerfilter/source/dmapper/PropertyIds.cxx
+++ b/writerfilter/source/dmapper/PropertyIds.cxx
@@ -347,6 +347,7 @@ const OUString& PropertyNameSupplier::GetName( PropertyIds eId ) const
             case PROP_HORIZONTAL_MERGE: sName = "HorizontalMerge"; break;
             case PROP_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING : sName = "ApplyParagraphMarkFormatToNumbering"; break;
             case PROP_CELL_DIRECTION: sName = "CellDirection"; break;
+            case PROP_FOLLOW_TEXT_FLOW: sName = "IsFollowingTextFlow"; break;
         }
         ::std::pair<PropertyNameMap_t::iterator,bool> aInsertIt =
                 m_pImpl->aNameMap.insert( PropertyNameMap_t::value_type( eId, sName ));
diff --git a/writerfilter/source/dmapper/PropertyIds.hxx b/writerfilter/source/dmapper/PropertyIds.hxx
index 1f63179..3c03ed3 100644
--- a/writerfilter/source/dmapper/PropertyIds.hxx
+++ b/writerfilter/source/dmapper/PropertyIds.hxx
@@ -318,6 +318,7 @@ enum PropertyIds
         ,PROP_HORIZONTAL_MERGE
         ,PROP_APPLY_PARAGRAPH_MARK_FORMAT_TO_NUMBERING
         ,PROP_CELL_DIRECTION
+        ,PROP_FOLLOW_TEXT_FLOW
     };
 struct PropertyNameSupplier_Impl;
 class PropertyNameSupplier
commit d8acb63264d80e54d639318a2bfd341d8e293879
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sun Sep 21 17:37:05 2014 +0100

    set mpFirstBand back to 0 after deleting it
    
    bff + valgrind
    
    ==30470== Invalid read of size 8
    ==30470==    at 0xA02103F: RegionBand::isSingleRectangle() const (regionband.cxx:294)
    ==30470==    by 0xA01F562: WriteRegion(SvStream&, Region const&) (region.cxx:1640)
    ==30470==    by 0x9F01FD4: MetaClipRegionAction::Write(SvStream&, ImplMetaWriteData*) (metaact.cxx:2487)
    ...
    ==30470==  Address 0x1d175980 is 0 bytes inside a block of size 56 free'd
    ==30470==    at 0x4A07991: operator delete(void*) (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==30470==    by 0xA020BB1: RegionBand::implReset() (regionband.cxx:87)
    ==30470==    by 0xA020EF2: RegionBand::load(SvStream&) (regionband.cxx:249)
    
    (cherry picked from commit 1ca892488a7a6a9c35fc99c41cd4af788fe0df6e)
    
    Conflicts:
    	vcl/source/gdi/regionband.cxx
    
    Change-Id: I2468d43c7e73b3390f355358990f8af30b5f026e

diff --git a/vcl/source/gdi/regionband.cxx b/vcl/source/gdi/regionband.cxx
index 4268e0f..3097f37 100644
--- a/vcl/source/gdi/regionband.cxx
+++ b/vcl/source/gdi/regionband.cxx
@@ -103,6 +103,7 @@ void RegionBand::implReset()
     }
 
     mpLastCheckedBand = 0;
+    mpFirstBand = 0;
 
     DBG_CHKTHIS(RegionBand, ImplDbgTestRegionBand);
 }
commit 894eed4645fe44434174e1784006500ce07b90f0
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Sep 22 13:08:21 2014 +0200

    Related fdo#77813: $(workdirurl) was always empty
    
    Regression introduced with cb021fcafba06ccf973f2abe229a4761c0a002de "fdo#46037:
    remove 1 comphelper/configurationhelper in framework."
    
    Change-Id: I07727d93315e0d3d87004ce71708271e90a173a3
    (cherry picked from commit 3c6da8e49a96513eda73656f3f6212f980a74b51)

diff --git a/framework/source/services/substitutepathvars.cxx b/framework/source/services/substitutepathvars.cxx
index 7e98436..dc5f97a 100644
--- a/framework/source/services/substitutepathvars.cxx
+++ b/framework/source/services/substitutepathvars.cxx
@@ -680,8 +680,7 @@ OUString SubstitutePathVariables::GetWorkPath() const
 {
     OUString aWorkPath;
     css::uno::Reference< css::container::XHierarchicalNameAccess > xPaths(officecfg::Office::Paths::Paths::get(m_xContext), css::uno::UNO_QUERY_THROW);
-    OUString xWork;
-    if (!(xPaths->getByHierarchicalName("['Work']/WritePath") >>= xWork))
+    if (!(xPaths->getByHierarchicalName("['Work']/WritePath") >>= aWorkPath))
         // fallback in case config layer does not return an useable work dir value.
         aWorkPath = GetWorkVariableValue();
 


More information about the Libreoffice-commits mailing list