[Libreoffice-commits] core.git: Branch 'distro/collabora/lov-5.2' - 9 commits - canvas/source sc/inc sc/source sd/uiconfig shell/source svl/source sw/source uui/uiconfig vcl/inc vcl/source

Stephan Bergmann sbergman at redhat.com
Tue Aug 23 17:39:46 UTC 2016


 canvas/source/cairo/cairo_canvashelper.cxx         |   22 +++++
 sc/inc/scmatrix.hxx                                |   10 +-
 sc/source/core/tool/scmatrix.cxx                   |   82 +++++++++++++++++----
 sc/source/filter/oox/stylesbuffer.cxx              |   16 +++-
 sc/source/ui/docshell/externalrefmgr.cxx           |    6 +
 sd/uiconfig/simpress/ui/sidebarslidebackground.ui  |    6 -
 shell/source/backends/desktopbe/desktopbackend.cxx |   16 ++--
 svl/source/numbers/zformat.cxx                     |    2 
 sw/source/core/doc/docfld.cxx                      |    4 -
 uui/uiconfig/ui/authfallback.ui                    |    3 
 vcl/inc/helpwin.hxx                                |    1 
 vcl/source/app/help.cxx                            |   11 ++
 12 files changed, 148 insertions(+), 31 deletions(-)

New commits:
commit fe76d3f20cfb0ed48ef6210fa44bd7fea6941366
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Aug 22 17:36:15 2016 +0200

    tdf#101661: Report XDG_{DOCUMENTS,TEMPLATES}_DIR only when it exists
    
    ...as had been done in the GConf-based backend prior to
    3cf557c12d27f1b2250e69a543136da098112d80 "drop gconf integration as per ESC
    decision".
    
    Change-Id: I56f256aaec542e0a62fc30a37d5c982e93e77812
    (cherry picked from commit 4278cac8935339dddfa5473490124d11061a0b38)
    Reviewed-on: https://gerrit.libreoffice.org/28343
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>

diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx
index 550e87a..fdbe4d4 100644
--- a/shell/source/backends/desktopbe/desktopbackend.cxx
+++ b/shell/source/backends/desktopbe/desktopbackend.cxx
@@ -252,6 +252,14 @@ OUString xdg_user_dir_lookup (const char *type)
     return aHomeDirURL + "/" + OUString::createFromAscii(type);
 }
 
+css::uno::Any xdgDirectoryIfExists(char const * type) {
+    auto url = xdg_user_dir_lookup(type);
+    return css::uno::Any(
+        osl::Directory(url).open() == osl::FileBase::E_None
+        ? css::beans::Optional<css::uno::Any>(true, css::uno::Any(url))
+        : css::beans::Optional<css::uno::Any>(false, css::uno::Any()));
+}
+
 } // namespace
 
 css::uno::Any Default::getPropertyValue(OUString const & PropertyName)
@@ -261,16 +269,12 @@ css::uno::Any Default::getPropertyValue(OUString const & PropertyName)
 {
     if (PropertyName == "TemplatePathVariable")
     {
-        OUString aDirURL = xdg_user_dir_lookup("Templates");
-        css::uno::Any aValue(aDirURL);
-        return css::uno::makeAny(css::beans::Optional<css::uno::Any>(true, aValue));
+        return xdgDirectoryIfExists("Templates");
     }
 
     if (PropertyName == "WorkPathVariable")
     {
-        OUString aDirURL = xdg_user_dir_lookup("Documents");
-        css::uno::Any aValue(aDirURL);
-        return css::uno::makeAny(css::beans::Optional<css::uno::Any>(true, aValue));
+        return xdgDirectoryIfExists("Documents");
     }
 
     if ( PropertyName == "EnableATToolSupport" ||
commit a1ec7e58e1862339c0c020657179bba5acb8ea94
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Aug 19 15:08:35 2016 +0100

    Resolves: tdf#100901 crash pressing tab in r-o document with hyperlink
    
    rather odd union in use here. Trying to call SwTextField::GetStart
    on SwTextINetFormat blows up under visual studio.
    
    Change-Id: Ic8145d7645bd6a68ef19e018311a4de6e6958bcb
    (cherry picked from commit 3196e949bb23a33bdb8700dbe27782e0e6c8f1e6)
    Reviewed-on: https://gerrit.libreoffice.org/28242
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/sw/source/core/doc/docfld.cxx b/sw/source/core/doc/docfld.cxx
index 35e3696..56ef919 100644
--- a/sw/source/core/doc/docfld.cxx
+++ b/sw/source/core/doc/docfld.cxx
@@ -322,9 +322,11 @@ sal_Int32 SetGetExpField::GetCntPosFromContent() const
         switch( eSetGetExpFieldType )
         {
         case TEXTFIELD:
-        case TEXTINET:
             nRet = CNTNT.pTextField->GetStart();
             break;
+        case TEXTINET:
+            nRet = CNTNT.pTextINet->GetStart();
+            break;
         case TEXTTOXMARK:
             nRet = CNTNT.pTextTOX->GetStart();
             break;
commit 461a2bb0eb9065bb31241b0abd95f28cadeb605e
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Aug 23 00:28:33 2016 +0200

    Resolves: tdf#101137 handle empty elements in matrix concatenation
    
    Change-Id: I2de90e1cdfc4f215f6d7c644e0ab74372a4c2639
    (cherry picked from commit 31d39c24e1ff2d3602e0212eeeecd8de88da6d38)
    Reviewed-on: https://gerrit.libreoffice.org/28335
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/inc/scmatrix.hxx b/sc/inc/scmatrix.hxx
index a5c810f..62cddee 100644
--- a/sc/inc/scmatrix.hxx
+++ b/sc/inc/scmatrix.hxx
@@ -127,6 +127,7 @@ public:
     typedef std::function<void(size_t, size_t, double)> DoubleOpFunction;
     typedef std::function<void(size_t, size_t, bool)> BoolOpFunction;
     typedef std::function<void(size_t, size_t, svl::SharedString)> StringOpFunction;
+    typedef std::function<void(size_t, size_t)> EmptyOpFunction;
 
     /**
      * When adding all numerical matrix elements for a scalar result such as
@@ -407,7 +408,8 @@ public:
     virtual std::vector<ScMatrix::IterateResult> Collect(bool bTextAsZero, const std::vector<std::unique_ptr<sc::op::Op>>& aOp) = 0;
 
     virtual void ExecuteOperation(const std::pair<size_t, size_t>& rStartPos, const std::pair<size_t, size_t>& rEndPos,
-            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc) const = 0;
+            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc,
+            EmptyOpFunction aEmptyFunc) const = 0;
 
     virtual void MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef& xMat1, const ScMatrixRef& xMat2,
             SvNumberFormatter& rFormatter, svl::SharedStringPool& rPool) = 0;
@@ -620,7 +622,8 @@ public:
     virtual std::vector<ScMatrix::IterateResult> Collect(bool bTextAsZero, const std::vector<std::unique_ptr<sc::op::Op>>& aOp) override;
 
     virtual void ExecuteOperation(const std::pair<size_t, size_t>& rStartPos, const std::pair<size_t, size_t>& rEndPos,
-            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc) const override;
+            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc,
+            EmptyOpFunction aEmptyFunc) const override;
     ScFullMatrix& operator+= ( const ScFullMatrix& r );
 
     virtual void MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef& xMat1, const ScMatrixRef& xMat2,
@@ -835,7 +838,8 @@ public:
     virtual std::vector<ScMatrix::IterateResult> Collect(bool bTextAsZero, const std::vector<std::unique_ptr<sc::op::Op>>& aOp) override;
 
     virtual void ExecuteOperation(const std::pair<size_t, size_t>& rStartPos, const std::pair<size_t, size_t>& rEndPos,
-            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc) const override;
+            DoubleOpFunction aDoubleFunc, BoolOpFunction aBoolFunc, StringOpFunction aStringFunc,
+            EmptyOpFunction aEmptyFunc) const override;
 
     ScVectorRefMatrix& operator+=(const ScVectorRefMatrix& r);
 
diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx
index 9dfc2e5..0974143 100644
--- a/sc/source/core/tool/scmatrix.cxx
+++ b/sc/source/core/tool/scmatrix.cxx
@@ -317,7 +317,8 @@ public:
 
     void ExecuteOperation(const std::pair<size_t, size_t>& rStartPos,
             const std::pair<size_t, size_t>& rEndPos, const ScFullMatrix::DoubleOpFunction& aDoubleFunc,
-            const ScFullMatrix::BoolOpFunction& aBoolFunc, const ScFullMatrix::StringOpFunction& aStringFunc) const;
+            const ScFullMatrix::BoolOpFunction& aBoolFunc, const ScFullMatrix::StringOpFunction& aStringFunc,
+            const ScFullMatrix::EmptyOpFunction& aEmptyFunc) const;
 
     template<typename T>
     std::vector<ScMatrix::IterateResult> ApplyCollectOperation(bool bTextAsZero, const std::vector<std::unique_ptr<T>>& aOp);
@@ -2254,13 +2255,15 @@ public:
     WalkElementBlockOperation(size_t nRowSize, size_t /*nColSize*/,
             ScFullMatrix::DoubleOpFunction aDoubleFunc,
             ScFullMatrix::BoolOpFunction aBoolFunc,
-            ScFullMatrix::StringOpFunction aStringFunc):
+            ScFullMatrix::StringOpFunction aStringFunc,
+            ScFullMatrix::EmptyOpFunction aEmptyFunc):
         mnRowSize(nRowSize),
         mnRowPos(0),
         mnColPos(0),
         maDoubleFunc(aDoubleFunc),
         maBoolFunc(aBoolFunc),
-        maStringFunc(aStringFunc)
+        maStringFunc(aStringFunc),
+        maEmptyFunc(aEmptyFunc)
     {
     }
 
@@ -2328,8 +2331,32 @@ public:
                 }
             }
             break;
-            case mdds::mtm::element_integer:
             case mdds::mtm::element_empty:
+            {
+                for (size_t i=0; i < node.size; ++i)
+                {
+                    maEmptyFunc(mnRowPos, mnColPos);
+                    ++mnRowPos;
+                    if (mnRowPos >= mnRowSize)
+                    {
+                        mnRowPos = 0;
+                        ++mnColPos;
+                    }
+                }
+            }
+            break;
+            case mdds::mtm::element_integer:
+            {
+                SAL_WARN("sc.core","WalkElementBlockOperation - unhandled element_integer");
+                // No function (yet?), but advance row and column count.
+                mnColPos += node.size / mnRowSize;
+                mnRowPos += node.size % mnRowSize;
+                if (mnRowPos >= mnRowSize)
+                {
+                    mnRowPos = 0;
+                    ++mnColPos;
+                }
+            }
             break;
         }
     }
@@ -2343,16 +2370,18 @@ private:
     ScFullMatrix::DoubleOpFunction maDoubleFunc;
     ScFullMatrix::BoolOpFunction maBoolFunc;
     ScFullMatrix::StringOpFunction maStringFunc;
+    ScFullMatrix::EmptyOpFunction maEmptyFunc;
 };
 
 }
 
 void ScMatrixImpl::ExecuteOperation(const std::pair<size_t, size_t>& rStartPos,
         const std::pair<size_t, size_t>& rEndPos, const ScMatrix::DoubleOpFunction& aDoubleFunc,
-        const ScMatrix::BoolOpFunction& aBoolFunc, const ScMatrix::StringOpFunction& aStringFunc) const
+        const ScMatrix::BoolOpFunction& aBoolFunc, const ScMatrix::StringOpFunction& aStringFunc,
+        const ScMatrix::EmptyOpFunction& aEmptyFunc) const
 {
     WalkElementBlockOperation aFunc(maMat.size().row, maMat.size().column,
-            aDoubleFunc, aBoolFunc, aStringFunc);
+            aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
     maMat.walk(aFunc, MatrixImplType::size_pair_type(rStartPos.first, rStartPos.second),
             MatrixImplType::size_pair_type(rEndPos.first, rEndPos.second));
 }
@@ -2456,6 +2485,12 @@ void ScMatrixImpl::MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef&
             aString[get_index(nMaxRow, nMaxCol, nRow, nCol, nRowOffset, nColOffset)] = aString[get_index(nMaxRow, nMaxCol, nRow, nCol, nRowOffset, nColOffset)] + aStr.getString();
         };
 
+    std::function<void(size_t, size_t)> aEmptyFunc =
+        [&](size_t /*nRow*/, size_t /*nCol*/)
+        {
+            // Nothing. Concatenating an empty string to an existing string.
+        };
+
 
     if (nC1 == 1 || nR1 == 1)
     {
@@ -2468,12 +2503,18 @@ void ScMatrixImpl::MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef&
             for (size_t j = 0; j < nColRep; ++j)
             {
                 nColOffset = j;
-                xMat1->ExecuteOperation(std::pair<size_t, size_t>(0, 0), std::pair<size_t, size_t>(std::min(nR1, nMaxRow) - 1, std::min(nC1, nMaxCol) - 1), aDoubleFunc, aBoolFunc, aStringFunc);
+                xMat1->ExecuteOperation(
+                        std::pair<size_t, size_t>(0, 0),
+                        std::pair<size_t, size_t>(std::min(nR1, nMaxRow) - 1, std::min(nC1, nMaxCol) - 1),
+                        aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
             }
         }
     }
     else
-        xMat1->ExecuteOperation(std::pair<size_t, size_t>(0, 0), std::pair<size_t, size_t>(nMaxRow - 1, nMaxCol - 1), aDoubleFunc, aBoolFunc, aStringFunc);
+        xMat1->ExecuteOperation(
+                std::pair<size_t, size_t>(0, 0),
+                std::pair<size_t, size_t>(nMaxRow - 1, nMaxCol - 1),
+                aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
 
     std::vector<svl::SharedString> aSharedString(nMaxCol*nMaxRow);
 
@@ -2507,6 +2548,13 @@ void ScMatrixImpl::MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef&
                 rStringPool.intern(aString[get_index(nMaxRow, nMaxCol, nRow, nCol, nRowOffset, nColOffset)] + aStr.getString());
         };
 
+    std::function<void(size_t, size_t)> aEmptyFunc2 =
+        [&](size_t nRow, size_t nCol)
+        {
+            aSharedString[get_index(nMaxRow, nMaxCol, nRow, nCol, nRowOffset, nColOffset)] =
+                rStringPool.intern(aString[get_index(nMaxRow, nMaxCol, nRow, nCol, nRowOffset, nColOffset)]);
+        };
+
     nRowOffset = 0;
     nColOffset = 0;
     if (nC2 == 1 || nR2 == 1)
@@ -2520,12 +2568,18 @@ void ScMatrixImpl::MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow, const ScMatrixRef&
             for (size_t j = 0; j < nColRep; ++j)
             {
                 nColOffset = j;
-                xMat2->ExecuteOperation(std::pair<size_t, size_t>(0, 0), std::pair<size_t, size_t>(std::min(nR2, nMaxRow) - 1, std::min(nC2, nMaxCol) - 1), aDoubleFunc2, aBoolFunc2, aStringFunc2);
+                xMat2->ExecuteOperation(
+                        std::pair<size_t, size_t>(0, 0),
+                        std::pair<size_t, size_t>(std::min(nR2, nMaxRow) - 1, std::min(nC2, nMaxCol) - 1),
+                        aDoubleFunc2, aBoolFunc2, aStringFunc2, aEmptyFunc2);
             }
         }
     }
     else
-        xMat2->ExecuteOperation(std::pair<size_t, size_t>(0, 0), std::pair<size_t, size_t>(nMaxRow - 1, nMaxCol - 1), aDoubleFunc2, aBoolFunc2, aStringFunc2);
+        xMat2->ExecuteOperation(
+                std::pair<size_t, size_t>(0, 0),
+                std::pair<size_t, size_t>(nMaxRow - 1, nMaxCol - 1),
+                aDoubleFunc2, aBoolFunc2, aStringFunc2, aEmptyFunc2);
 
     aString.clear();
 
@@ -3189,9 +3243,9 @@ void ScFullMatrix::PowOp( bool bFlag, double fVal, ScMatrix& rMat)
 
 void ScFullMatrix::ExecuteOperation(const std::pair<size_t, size_t>& rStartPos,
         const std::pair<size_t, size_t>& rEndPos, DoubleOpFunction aDoubleFunc,
-        BoolOpFunction aBoolFunc, StringOpFunction aStringFunc) const
+        BoolOpFunction aBoolFunc, StringOpFunction aStringFunc, EmptyOpFunction aEmptyFunc) const
 {
-    pImpl->ExecuteOperation(rStartPos, rEndPos, aDoubleFunc, aBoolFunc, aStringFunc);
+    pImpl->ExecuteOperation(rStartPos, rEndPos, aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
 }
 
 std::vector<ScMatrix::IterateResult> ScFullMatrix::Collect(bool bTextAsZero, const std::vector<std::unique_ptr<sc::op::Op>>& aOp)
@@ -3954,10 +4008,10 @@ std::vector<ScMatrix::IterateResult> ScVectorRefMatrix::Collect(bool bTextAsZero
 
 void ScVectorRefMatrix::ExecuteOperation(const std::pair<size_t, size_t>& rStartPos,
         const std::pair<size_t, size_t>& rEndPos, DoubleOpFunction aDoubleFunc,
-        BoolOpFunction aBoolFunc, StringOpFunction aStringFunc) const
+        BoolOpFunction aBoolFunc, StringOpFunction aStringFunc, EmptyOpFunction aEmptyFunc) const
 {
     const_cast<ScVectorRefMatrix*>(this)->ensureFullMatrix();
-    mpFullMatrix->ExecuteOperation(rStartPos, rEndPos, aDoubleFunc, aBoolFunc, aStringFunc);
+    mpFullMatrix->ExecuteOperation(rStartPos, rEndPos, aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
 }
 
 void ScFullMatrix::MatConcat(SCSIZE nMaxCol, SCSIZE nMaxRow,
diff --git a/sc/source/ui/docshell/externalrefmgr.cxx b/sc/source/ui/docshell/externalrefmgr.cxx
index f703b67..4ac4112 100644
--- a/sc/source/ui/docshell/externalrefmgr.cxx
+++ b/sc/source/ui/docshell/externalrefmgr.cxx
@@ -865,9 +865,13 @@ void ScExternalRefCache::setCellRangeData(sal_uInt16 nFileId, const ScRange& rRa
             {
                 pTabData->setCell(col + nCol1, row + nRow1, new formula::FormulaStringToken(val), 0, false);
             };
+            ScFullMatrix::EmptyOpFunction aEmptyFunc = [=](size_t /*row*/, size_t /*col*/) -> void
+            {
+                // Nothing. Empty cell.
+            };
             pMat->ExecuteOperation(std::pair<size_t, size_t>(0, 0),
                     std::pair<size_t, size_t>(nRow2-nRow1, nCol2-nCol1),
-                    aDoubleFunc, aBoolFunc, aStringFunc);
+                    aDoubleFunc, aBoolFunc, aStringFunc, aEmptyFunc);
             // Mark the whole range 'cached'.
             pTabData->setCachedCellRange(nCol1, nRow1, nCol2, nRow2);
         }
commit bd10131e375a7a5f875cd1a35d5ec7b4e53dfdfd
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Sun Aug 21 10:11:44 2016 +0400

    tdf#89466: Adjust alignment and add left and right margins
    
    Change-Id: Ifcdd7586523d0cf839c9d896ce0d38570f822175
    Reviewed-on: https://gerrit.libreoffice.org/28268
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Yousuf Philips <philipz85 at hotmail.com>
    (cherry picked from commit 12c152ccbf2890378b92e7d00ecc532fee36b83f)
    Reviewed-on: https://gerrit.libreoffice.org/28316
    Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
    Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>

diff --git a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
index 4191634..6e53847 100644
--- a/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
+++ b/sd/uiconfig/simpress/ui/sidebarslidebackground.ui
@@ -11,9 +11,9 @@
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="halign">center</property>
-        <property name="valign">center</property>
-        <property name="hexpand">True</property>
-        <property name="vexpand">True</property>
+        <property name="valign">start</property>
+        <property name="margin_left">9</property>
+        <property name="margin_right">15</property>
         <property name="border_width">6</property>
         <property name="row_spacing">6</property>
         <property name="column_spacing">6</property>
commit ce681285ac1762ec09f1e73ba2b65c882f5e6d2f
Author: Bartosz Kosiorek <gang65 at poczta.onet.pl>
Date:   Sat Aug 20 23:11:24 2016 +0200

    tdf#70565 Set correct default values to "0" of xfId attribute
    
    When xfId is not exist during .xlsx import
    it must have values set to "0".
    It is not impacts spreadsheets created with MS Excel,
    as xfId attribute is always created during export to .xlsx
    Not setting "0" value is causing wrong .xlsx import by LibreOffice,
    for spreadsheets created by external applications (ex. SAP BI).
    
    Change-Id: I1fb685f7ad38bcdb6cce78e6cf49e1825330f661
    Reviewed-on: https://gerrit.libreoffice.org/28266
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>

diff --git a/sc/source/filter/oox/stylesbuffer.cxx b/sc/source/filter/oox/stylesbuffer.cxx
index 6b056a0..3f73c09 100644
--- a/sc/source/filter/oox/stylesbuffer.cxx
+++ b/sc/source/filter/oox/stylesbuffer.cxx
@@ -2072,7 +2072,21 @@ Xf::Xf( const WorkbookHelper& rHelper ) :
 void Xf::importXf( const AttributeList& rAttribs, bool bCellXf )
 {
     maModel.mbCellXf = bCellXf;
-    maModel.mnStyleXfId = rAttribs.getInteger( XML_xfId, -1 );
+    // tdf#70565 Set proper default value to "0" of xfId attribute
+    // When xfId is not exist during .xlsx import
+    // it must have values set to "0".
+    // Is is not impacts spreadsheets created with MS Excel,
+    // as xfId attribute is always created during export to .xlsx
+    // Not setting "0" value is causing wrong .xlsx import by LibreOffice,
+    // for spreadsheets created by external applications (ex. SAP BI).
+    if ( maModel.mbCellXf )
+    {
+        maModel.mnStyleXfId = rAttribs.getInteger( XML_xfId, 0 );
+    }
+    else
+    {
+        maModel.mnStyleXfId = rAttribs.getInteger( XML_xfId, -1 );
+    }
     maModel.mnFontId = rAttribs.getInteger( XML_fontId, -1 );
     maModel.mnNumFmtId = rAttribs.getInteger( XML_numFmtId, -1 );
     maModel.mnBorderId = rAttribs.getInteger( XML_borderId, -1 );
commit 4849dc3fddab76d431c9b973cd7a3f0bfff29c5c
Author: Yousuf Philips <philipz85 at hotmail.com>
Date:   Fri Aug 19 11:41:29 2016 +0400

    tdf#87938 Reduce the width of the authentication dialog
    
    Change-Id: I905c91be24dacd96cbce6eee2860350cfbf6700c
    Reviewed-on: https://gerrit.libreoffice.org/28232
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-by: Samuel Mehrbrodt <s.mehrbrodt at gmail.com>

diff --git a/uui/uiconfig/ui/authfallback.ui b/uui/uiconfig/ui/authfallback.ui
index d99fa99..0084916 100644
--- a/uui/uiconfig/ui/authfallback.ui
+++ b/uui/uiconfig/ui/authfallback.ui
@@ -95,9 +95,11 @@
               <object class="GtkBox" id="box1">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="halign">center</property>
                 <child>
                   <object class="GtkLabel" id="google_prefix_label">
                     <property name="can_focus">False</property>
+                    <property name="margin_right">3</property>
                     <property name="label" translatable="no">G-</property>
                   </object>
                   <packing>
@@ -111,6 +113,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="invisible_char">●</property>
+                    <property name="width_chars">6</property>
                   </object>
                   <packing>
                     <property name="expand">False</property>
commit 05d04b7f955c761974fe002551389435e0c980a7
Author: Laurent Balland-Poirier <laurent.balland-poirier at laposte.net>
Date:   Sun Aug 21 22:57:20 2016 +0200

    tdf#101636 Test index before reading OUString
    
    Change-Id: I0a4c02b172fc6d3273f6aa2cca855c27705b4d68
    Reviewed-on: https://gerrit.libreoffice.org/28282
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 734eb8b034c8035565d091aa016ce3b8df838b19)
    Reviewed-on: https://gerrit.libreoffice.org/28314

diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 222d731..24ca0f9 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -1419,7 +1419,7 @@ short SvNumberformat::ImpNextSymbol(OUStringBuffer& rString,
                 nLen--;
                 break;
             case '$' :
-                if ( rString[nPos] == '-' )
+                if ( nPos < nLen && rString[nPos] == '-' )
                 {
                     // [$-xxx] locale
                     sBuffSymbol.stripStart('[');
commit 2e207c9a26768168d2ad8bb79c35332e9819f332
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Sat Aug 20 17:27:50 2016 +0100

    Resolves: tdf#86473 approx 1 pixel high rectangular polygon not drawn
    
    The other implementations of basically this in
    vcl/headless/svpgdi.cxx:AddPolygonToPath and
    vcl/quartz/salgdicommon.cxx:AddPolygonToPath hook this rounding foo off
    getAntiAliasB2DDraw FWIW
    
    Change-Id: Ideec049ec6ca04105721bf8acda44c31b2a73215
    (cherry picked from commit 676c9786ff8fac6a6593df51bd9cb3f10854a781)
    Reviewed-on: https://gerrit.libreoffice.org/28264
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/canvas/source/cairo/cairo_canvashelper.cxx b/canvas/source/cairo/cairo_canvashelper.cxx
index 9518f0f..4800523 100644
--- a/canvas/source/cairo/cairo_canvashelper.cxx
+++ b/canvas/source/cairo/cairo_canvashelper.cxx
@@ -973,7 +973,27 @@ namespace cairocanvas
             if( nPointCount > 1)
             {
                 bool bIsBezier = aPolygon.areControlPointsUsed();
-                bool bIsRectangle = ::basegfx::tools::isRectangle( aPolygon );
+                bool bIsRectangle = ::basegfx::tools::isRectangle(aPolygon);
+                if (bIsRectangle)
+                {
+                    //tdf#86473, if this rectangle will end up after rounding
+                    //to have no area, then nothing will be drawn, so remove
+                    //such rectangles from the rounding optimization(?) effort
+                    basegfx::B2DRange aRange = ::basegfx::tools::getRange(aPolygon);
+                    double x1 = aRange.getMinX();
+                    double x2 = aRange.getMaxX();
+                    double y1 = aRange.getMinY();
+                    double y2 = aRange.getMaxY();
+                    cairo_matrix_transform_point(&aOrigMatrix, &x1, &y1);
+                    cairo_matrix_transform_point(&aOrigMatrix, &x2, &y2);
+                    basegfx::B2DRange aRoundedRange(basegfx::fround(x1),
+                                                    basegfx::fround(y1),
+                                                    basegfx::fround(x2),
+                                                    basegfx::fround(y2));
+                    bIsRectangle = aRoundedRange.getWidth() != 0.0 &&
+                                   aRoundedRange.getHeight() != 0.0;
+                }
+
                 ::basegfx::B2DPoint aA, aB, aP;
 
                 for( sal_uInt32 j=0; j < nExtendedPointCount; j++ )
commit 63a26161f93c464ed74b430bac02144404467978
Author: rpmbuild <rpmbuild at fedoraproject.org>
Date:   Mon Aug 15 15:17:11 2016 +0100

    Resolves: tdf#91533 (rhbz#1364335) Tooltips are truncated
    
    Change-Id: Id9ec91ed9652f491e4e2a0556eeed27bf6517002
    (cherry picked from commit e527edf06f8befb45b76ee8ebabe62e6dc885e45)
    Reviewed-on: https://gerrit.libreoffice.org/28219
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>

diff --git a/vcl/inc/helpwin.hxx b/vcl/inc/helpwin.hxx
index e7cc81a..3864575 100644
--- a/vcl/inc/helpwin.hxx
+++ b/vcl/inc/helpwin.hxx
@@ -47,6 +47,7 @@ private:
     virtual void Paint(vcl::RenderContext& rRenderContext, const Rectangle&) override;
     virtual void RequestHelp( const HelpEvent& rHEvt ) override;
     virtual void ApplySettings(vcl::RenderContext& rRenderContext) override;
+    virtual void StateChanged(StateChangedType nType) override;
 
     virtual OUString GetText() const override;
     void ImplShow();
diff --git a/vcl/source/app/help.cxx b/vcl/source/app/help.cxx
index 9b72256..0ebf141 100644
--- a/vcl/source/app/help.cxx
+++ b/vcl/source/app/help.cxx
@@ -277,6 +277,17 @@ HelpTextWindow::HelpTextWindow( vcl::Window* pParent, const OUString& rText, sal
     maHideTimer.SetTimeout( rHelpSettings.GetTipTimeout() );
 }
 
+void HelpTextWindow::StateChanged(StateChangedType nType)
+{
+    FloatingWindow::StateChanged(nType);
+    if (nType == StateChangedType::InitShow)
+    {
+        ApplySettings(*this);
+        SetHelpText(maHelpText);
+        Invalidate();
+    }
+}
+
 void HelpTextWindow::ApplySettings(vcl::RenderContext& rRenderContext)
 {
     const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings();


More information about the Libreoffice-commits mailing list