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 <sberg...@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 <c...@libreoffice.org> Reviewed-by: Eike Rathke <er...@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 <caol...@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 <c...@libreoffice.org> Reviewed-by: Thorsten Behrens <thorsten.behr...@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 <er...@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 <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@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 <philip...@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 <c...@libreoffice.org> Reviewed-by: Yousuf Philips <philip...@hotmail.com> (cherry picked from commit 12c152ccbf2890378b92e7d00ecc532fee36b83f) Reviewed-on: https://gerrit.libreoffice.org/28316 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Tested-by: Samuel Mehrbrodt <samuel.mehrbr...@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 <gan...@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 <c...@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrh...@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 <philip...@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 <c...@libreoffice.org> Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Reviewed-by: Samuel Mehrbrodt <s.mehrbr...@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-poir...@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 <er...@redhat.com> Tested-by: Eike Rathke <er...@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 <caol...@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 <c...@libreoffice.org> Reviewed-by: Thorsten Behrens <thorsten.behr...@cib.de> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@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 <rpmbu...@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 <er...@redhat.com> Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Thorsten Behrens <thorsten.behr...@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();
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits