[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - 10 commits - cui/source Makefile.in sc/inc sc/source sd/source svx/source

Julien Nabet serval2412 at yahoo.fr
Tue May 16 08:17:49 UTC 2017


 Makefile.in                                      |   17 ++++--
 cui/source/options/optchart.cxx                  |    2 
 sc/inc/column.hxx                                |    1 
 sc/source/core/data/column3.cxx                  |   10 +++
 sc/source/core/data/conditio.cxx                 |    4 -
 sc/source/core/data/document.cxx                 |    6 ++
 sc/source/core/data/table5.cxx                   |    4 +
 sc/source/core/tool/autoform.cxx                 |    2 
 sd/source/ui/presenter/CanvasUpdateRequester.cxx |   59 ++++++++++++++++-------
 sd/source/ui/presenter/CanvasUpdateRequester.hxx |   14 +----
 sd/source/ui/presenter/PresenterCanvas.cxx       |    9 +--
 sd/source/ui/presenter/PresenterCanvas.hxx       |    2 
 svx/source/dialog/compressgraphicdialog.cxx      |    2 
 svx/source/tbxctrls/tbcontrl.cxx                 |    2 
 svx/source/tbxctrls/tbunosearchcontrollers.cxx   |    2 
 15 files changed, 96 insertions(+), 40 deletions(-)

New commits:
commit 1c7e873dbca6235be66fe1e6a593b2acbd18b059
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sun May 14 00:40:21 2017 +0200

    fix gdi resource leak (svx/compressgraphicdialog)
    
    Change-Id: Iea6e481384cee4d7e2ff6787c64d3048ba9c9d65
    Reviewed-on: https://gerrit.libreoffice.org/37587
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>
    (cherry picked from commit 68a1cb23ede1d4ae6195850190fca6953c30417f)
    Reviewed-on: https://gerrit.libreoffice.org/37592
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    (cherry picked from commit c41d6c4db6a29fb85b4547b0cf04b3693c472764)

diff --git a/svx/source/dialog/compressgraphicdialog.cxx b/svx/source/dialog/compressgraphicdialog.cxx
index 17a577c91bff..4188b85a79e8 100644
--- a/svx/source/dialog/compressgraphicdialog.cxx
+++ b/svx/source/dialog/compressgraphicdialog.cxx
@@ -184,7 +184,7 @@ void CompressGraphicsDialog::Update()
     const LocaleDataWrapper& rLocaleWrapper( Application::GetSettings().GetLocaleDataWrapper() );
     sal_Unicode cSeparator = rLocaleWrapper.getNumDecimalSep()[0];
 
-    VclPtr<VirtualDevice> pDummyVDev = VclPtr<VirtualDevice>::Create();
+    ScopedVclPtrInstance<VirtualDevice> pDummyVDev;
     pDummyVDev->EnableOutput( false );
     pDummyVDev->SetMapMode( m_aGraphic.GetPrefMapMode() );
 
commit e24a0a4d79707722ff59bafa168e8b2d851b3c27
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sun May 14 00:35:21 2017 +0200

    fix gdi resource leak with unreleased virtual device
    
    (copycat Markus https://cgit.freedesktop.org/libreoffice/core/commit/?id=289711c2a469bfbe06aef3b3870b65f9c788f56d)
    
    Change-Id: I3974609559dd44257d7c3e9e9544348d622953f6
    Reviewed-on: https://gerrit.libreoffice.org/37586
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>
    (cherry picked from commit 11c4cc15fdd491e15ffd4e7d9fb5d4082898f926)
    Reviewed-on: https://gerrit.libreoffice.org/37591
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    (cherry picked from commit 6eb0df62aaa00f2c1508b1650e8df3145822f84f)

diff --git a/cui/source/options/optchart.cxx b/cui/source/options/optchart.cxx
index 060d3b0b6587..b4eb31b072d1 100644
--- a/cui/source/options/optchart.cxx
+++ b/cui/source/options/optchart.cxx
@@ -43,7 +43,7 @@ void SvxDefaultColorOptPage::InsertColorEntry(const XColorEntry& rEntry, sal_Int
     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
     Size aImageSize = rStyleSettings.GetListBoxPreviewDefaultPixelSize();
 
-    VclPtr<VirtualDevice> xDevice = VclPtr<VirtualDevice>::Create();
+    ScopedVclPtrInstance<VirtualDevice> xDevice;
     xDevice->SetOutputSize(aImageSize);
     const Rectangle aRect(Point(0, 0), aImageSize);
     xDevice->SetFillColor(rColor);
commit da608e10855b8b2af22db147e8b67db447c83ac8
Author: frederic vroman <fvroman at linagora.com>
Date:   Fri May 12 09:14:32 2017 +0200

    tdf#82326 calc 32bits unable to open files with a lot of cond formatting
    
    The code to build and compute formulas is using an fixed size array.
    The size of this array has been changed from 512 to 8192 by commit
    9c1ca6dca3b553c302a635357e33591605343b99
    
    Since then, LO consumes a LOT of memory while opening scalc
    files which are making extensive use of conditional formatting.
    
    This is a silent issue when working with a 64bits versions of LO because
    the memory is immediately released at the end of the load phase.
    However, with 32bits versions, some files can not be opened anymore as it
    can consume the full process memory space (2GB on windows).
    
    The parser is creating ScCondtionEntry objects to store conditional formatting expressions
    which are immediately compiled in the constructor. However the compile
    method did not return a flattened token array.
    
    Change-Id: Id290bc1f5838c246d4c2322b297b13307defaf88
    Reviewed-on: https://gerrit.libreoffice.org/37527
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit f566e2d579f5385b01d9b124e7055721313325c9)
    Reviewed-on: https://gerrit.libreoffice.org/37644
    (cherry picked from commit 4366a6bcc175886680ff1b727207ed1ae4f97ce9)

diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx
index f4f0f116ba61..c970520f3377 100644
--- a/sc/source/core/data/conditio.cxx
+++ b/sc/source/core/data/conditio.cxx
@@ -389,7 +389,7 @@ void ScConditionEntry::Compile( const OUString& rExpr1, const OUString& rExpr2,
                 //  temporary formula string as string tokens
                 //TODO: merge with lcl_ScDocFunc_CreateTokenArrayXML
                 pFormula1 = new ScTokenArray;
-                pFormula1->AddStringXML( rExpr1 );
+                pFormula1->AssignXMLString( rExpr1, rExprNmsp1 );
                 // bRelRef1 is set when the formula is compiled again (CompileXML)
             }
             else
@@ -427,7 +427,7 @@ void ScConditionEntry::Compile( const OUString& rExpr1, const OUString& rExpr2,
                 //  temporary formula string as string tokens
                 //TODO: merge with lcl_ScDocFunc_CreateTokenArrayXML
                 pFormula2 = new ScTokenArray;
-                pFormula2->AddStringXML( rExpr2 );
+                pFormula2->AssignXMLString( rExpr2, rExprNmsp2 );
                 // bRelRef2 is set when the formula is compiled again (CompileXML)
             }
             else
commit f4585e24be0f49e896ae54c7b270de33e40f4f65
Author: Markus Mohrhard <markus.mohrhard at googlemail.com>
Date:   Sat May 13 23:39:16 2017 +0200

    fix gdi resource leak with unreleased virtual device
    
    Change-Id: I1fd8c76a206cfc940e3d646e4025618785985e52
    Reviewed-on: https://gerrit.libreoffice.org/37583
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
    (cherry picked from commit 289711c2a469bfbe06aef3b3870b65f9c788f56d)
    Reviewed-on: https://gerrit.libreoffice.org/37585
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>
    (cherry picked from commit e4fdaa5d9a7b0c507278ef70aab7ce4c9e7ee62d)

diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index 4c93b9bba0b5..95ec9f400143 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -3267,7 +3267,7 @@ void SvxColorListBox::ShowPreview(const NamedColor &rColor)
     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
     Size aImageSize(rStyleSettings.GetListBoxPreviewDefaultPixelSize());
 
-    VclPtr<VirtualDevice> xDevice = VclPtr<VirtualDevice>::Create();
+    ScopedVclPtrInstance<VirtualDevice> xDevice;
     xDevice->SetOutputSize(aImageSize);
     const Rectangle aRect(Point(0, 0), aImageSize);
     if (m_bShowNoneButton && rColor.first == COL_NONE_COLOR)
commit 97a12d7463f1e0ed0e381f3d750b21d0a60be41e
Author: Arul Michael <arul71.m at gmail.com>
Date:   Thu Apr 27 10:32:10 2017 +0530

    tdf#106051 Notify listeners on top and bottom of split formula group
    
    Change-Id: Icecb59a476f57cee0c04c3e21d60e6c7fa12f65a
    Reviewed-on: https://gerrit.libreoffice.org/37011
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit c882c60f54cc90740a674eed8c47bde0e9959652)
    Reviewed-on: https://gerrit.libreoffice.org/37543
    (cherry picked from commit f55f0b57b1f206763e97065f6121fcb55c53e53d)

diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 80fb075988b8..ee69a89cc3f8 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -5849,6 +5849,12 @@ void ScDocument::DeleteSelection( InsertDeleteFlags nDelFlag, const ScMarkData&
                 if (pRange)
                     SetDirty( *pRange, true);
             }
+            //Notify listeners on top and bottom of the group that has been split
+            for (size_t i = 0; i < aGroupPos.size(); ++i) {
+                ScFormulaCell *pFormulaCell = GetFormulaCell(aGroupPos[i]);
+                if (pFormulaCell)
+                    pFormulaCell->SetDirty(true);
+            }
         }
     }
 }
commit ada01a71f310fe3a463d85968d9fcbc0c3484b7f
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu May 4 16:17:16 2017 +0200

    sd: fix atexit crash in CanvasUpdateRequester::maRequesterMap
    
    https://retrace.fedoraproject.org/faf/problems/bthash/?bth=2c9e4b335a4f17dea5e095f0a3e8f79aa40943cb
    
    Clearly it's a really bad idea to own these objects at shutdown, so
    instead use weak references, and also ensure that the
    CanvasUpdateRequester is not deleted before the event is dispatched
    just in case.
    
    (cherry picked from commit baa253d00ab6aa67fa100472db00227baa14c87a)
    
    sd: oops, skipped one entry on every erase by incrementing
    Thanks Noel for the hint.
    (cherry picked from commit 670631cae260263e4822d8aa63bc5c2e4349c796)
    
    Change-Id: Iee8a109fe5969b2a3345e0ef266aee014962ae57
    Reviewed-on: https://gerrit.libreoffice.org/37263
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
    (cherry picked from commit 0f54a0f218834bfcc74b00f0a105785d3099bd40)

diff --git a/sd/source/ui/presenter/CanvasUpdateRequester.cxx b/sd/source/ui/presenter/CanvasUpdateRequester.cxx
index 90202e8138b4..456c37d43a58 100644
--- a/sd/source/ui/presenter/CanvasUpdateRequester.cxx
+++ b/sd/source/ui/presenter/CanvasUpdateRequester.cxx
@@ -20,6 +20,7 @@
 #include "CanvasUpdateRequester.hxx"
 #include <vcl/svapp.hxx>
 #include <com/sun/star/lang/XComponent.hpp>
+#include <vector>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -36,30 +37,54 @@ public:
 
 //===== CanvasUpdateRequester =================================================
 
-CanvasUpdateRequester::RequesterMap CanvasUpdateRequester::maRequesterMap;
-
 std::shared_ptr<CanvasUpdateRequester> CanvasUpdateRequester::Instance (
     const Reference<rendering::XSpriteCanvas>& rxSharedCanvas)
 {
-    RequesterMap::const_iterator iRequester;
-    for (iRequester=maRequesterMap.begin(); iRequester!=maRequesterMap.end(); ++iRequester)
+    // this global must not own anything or we crash on shutdown
+    static std::vector<std::pair<
+        uno::WeakReference<rendering::XSpriteCanvas>,
+        std::weak_ptr<CanvasUpdateRequester>>> s_RequesterMap;
+    for (auto it = s_RequesterMap.begin(); it != s_RequesterMap.end(); )
     {
-        if (iRequester->first == rxSharedCanvas)
-            return iRequester->second;
+        uno::Reference<rendering::XSpriteCanvas> const xCanvas(it->first);
+        if (!xCanvas.is())
+        {
+            it = s_RequesterMap.erase(it); // remove stale entry
+        }
+        else if (xCanvas == rxSharedCanvas)
+        {
+            std::shared_ptr<CanvasUpdateRequester> pRequester(it->second);
+            if (pRequester)
+            {
+                return pRequester;
+            }
+            else
+            {
+                std::shared_ptr<CanvasUpdateRequester> const pNew(
+                        new CanvasUpdateRequester(rxSharedCanvas), Deleter());
+                it->second = pNew;
+                return pNew;
+            }
+        }
+        else
+        {
+            ++it;
+        }
     }
 
     // No requester for the given canvas found.  Create a new one.
     std::shared_ptr<CanvasUpdateRequester> pRequester (
         new CanvasUpdateRequester(rxSharedCanvas), Deleter());
-    maRequesterMap.push_back(RequesterMap::value_type(rxSharedCanvas,pRequester));
+    s_RequesterMap.push_back(std::make_pair(rxSharedCanvas, pRequester));
     return pRequester;
 }
 
+
 CanvasUpdateRequester::CanvasUpdateRequester (
-    const Reference<rendering::XSpriteCanvas>& rxCanvas)
-    : mxCanvas(rxCanvas),
-      mnUserEventId(nullptr),
-      mbUpdateFlag(false)
+        const Reference<rendering::XSpriteCanvas>& rxCanvas)
+    : mxCanvas(rxCanvas)
+    , m_pUserEventId(nullptr)
+    , mbUpdateFlag(false)
 {
     Reference<lang::XComponent> xComponent (mxCanvas, UNO_QUERY);
     if (xComponent.is())
@@ -70,16 +95,16 @@ CanvasUpdateRequester::CanvasUpdateRequester (
 
 CanvasUpdateRequester::~CanvasUpdateRequester()
 {
-    if (mnUserEventId != nullptr)
-        Application::RemoveUserEvent(mnUserEventId);
+    assert(m_pUserEventId == nullptr);
 }
 
 void CanvasUpdateRequester::RequestUpdate (const bool bUpdateAll)
 {
-    if (mnUserEventId == nullptr)
+    if (m_pUserEventId == nullptr)
     {
+        m_pThis = shared_from_this(); // keep instance alive until dispatch
         mbUpdateFlag = bUpdateAll;
-        mnUserEventId = Application::PostUserEvent(LINK(this, CanvasUpdateRequester, Callback));
+        m_pUserEventId = Application::PostUserEvent(LINK(this, CanvasUpdateRequester, Callback));
     }
     else
     {
@@ -89,12 +114,14 @@ void CanvasUpdateRequester::RequestUpdate (const bool bUpdateAll)
 
 IMPL_LINK_NOARG(CanvasUpdateRequester, Callback, void*, void)
 {
-    mnUserEventId = nullptr;
+    m_pUserEventId = nullptr;
     if (mxCanvas.is())
     {
         mxCanvas->updateScreen(mbUpdateFlag);
         mbUpdateFlag = false;
     }
+    assert(m_pThis);
+    m_pThis.reset(); // possibly delete "this"
 }
 
 } } // end of namespace ::sd::presenter
diff --git a/sd/source/ui/presenter/CanvasUpdateRequester.hxx b/sd/source/ui/presenter/CanvasUpdateRequester.hxx
index a712cc502200..471b9ab53b72 100644
--- a/sd/source/ui/presenter/CanvasUpdateRequester.hxx
+++ b/sd/source/ui/presenter/CanvasUpdateRequester.hxx
@@ -22,10 +22,8 @@
 
 #include <com/sun/star/rendering/XSpriteCanvas.hpp>
 #include <sal/types.h>
-#include <tools/solar.h>
 #include <tools/link.hxx>
 #include <memory>
-#include <vector>
 
 struct ImplSVEvent;
 
@@ -37,6 +35,7 @@ namespace sd { namespace presenter {
     to a single call to updateScreen.
 */
 class CanvasUpdateRequester
+    : public std::enable_shared_from_this<CanvasUpdateRequester>
 {
 public:
     CanvasUpdateRequester(const CanvasUpdateRequester&) = delete;
@@ -55,15 +54,12 @@ private:
     ~CanvasUpdateRequester();
     class Deleter; friend class Deleter;
 
-    typedef ::std::vector<
-        ::std::pair<
-            css::uno::Reference<css::rendering::XSpriteCanvas>,
-           std::shared_ptr<CanvasUpdateRequester> > > RequesterMap;
-    static RequesterMap maRequesterMap;
-
+    /// keep instance alive waiting for event dispatch
+    std::shared_ptr<CanvasUpdateRequester> m_pThis;
     css::uno::Reference<css::rendering::XSpriteCanvas> mxCanvas;
-    ImplSVEvent * mnUserEventId;
+    ImplSVEvent * m_pUserEventId;
     bool mbUpdateFlag;
+
     DECL_LINK(Callback, void*, void);
 };
 
diff --git a/sd/source/ui/presenter/PresenterCanvas.cxx b/sd/source/ui/presenter/PresenterCanvas.cxx
index 6333a536123e..0bd4ecc43d18 100644
--- a/sd/source/ui/presenter/PresenterCanvas.cxx
+++ b/sd/source/ui/presenter/PresenterCanvas.cxx
@@ -119,7 +119,6 @@ PresenterCanvas::PresenterCanvas (
       mxSharedWindow(rxSharedWindow),
       mxWindow(rxWindow),
       maOffset(),
-      mpUpdateRequester(),
       maClipRectangle(),
       mbOffsetUpdatePending(true)
 {
@@ -127,7 +126,9 @@ PresenterCanvas::PresenterCanvas (
         mxWindow->addWindowListener(this);
 
     if (mxUpdateCanvas.is())
-        mpUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas);
+    {
+        m_pUpdateRequester = CanvasUpdateRequester::Instance(mxUpdateCanvas);
+    }
 }
 
 PresenterCanvas::~PresenterCanvas()
@@ -465,9 +466,9 @@ sal_Bool SAL_CALL PresenterCanvas::updateScreen (sal_Bool bUpdateAll)
     ThrowIfDisposed();
 
     mbOffsetUpdatePending = true;
-    if (mpUpdateRequester.get() != nullptr)
+    if (m_pUpdateRequester.get() != nullptr)
     {
-        mpUpdateRequester->RequestUpdate(bUpdateAll);
+        m_pUpdateRequester->RequestUpdate(bUpdateAll);
         return true;
     }
     else
diff --git a/sd/source/ui/presenter/PresenterCanvas.hxx b/sd/source/ui/presenter/PresenterCanvas.hxx
index a31e899d0234..4c5784251734 100644
--- a/sd/source/ui/presenter/PresenterCanvas.hxx
+++ b/sd/source/ui/presenter/PresenterCanvas.hxx
@@ -353,7 +353,7 @@ private:
     /** The UpdateRequester is used by updateScreen() to schedule
         updateScreen() calls at the shared canvas.
     */
-    std::shared_ptr<CanvasUpdateRequester> mpUpdateRequester;
+    std::shared_ptr<CanvasUpdateRequester> m_pUpdateRequester;
 
     /** The clip rectangle as given to SetClip().
     */
commit 2405f5389a7619caf0f783c72cb7fdda527e3bad
Author: Arul Michael <arul71.m at gmail.com>
Date:   Thu May 11 17:52:40 2017 +0530

    tdf#93171 Subtotal function with function indexes don't update
    
    Calling InerpretTail during Hide rows by SfxHintId::ScDataChanged
    broadcast
    
    Reviewed-on: https://gerrit.libreoffice.org/37509
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    (cherry picked from commit 970b431f1a7b6b96c4c9536657ce4fe9d8f5b585)
    
    Backported.
    
     Conflicts:
            sc/inc/column.hxx
    
    Change-Id: Ie78170bb6d49933a49d828a18637cb410796dc06
    Reviewed-on: https://gerrit.libreoffice.org/37522
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit 318b6b8ea87cba41995436bbc44818a068b35b6d)

diff --git a/sc/inc/column.hxx b/sc/inc/column.hxx
index de28a87ae63d..143610767117 100644
--- a/sc/inc/column.hxx
+++ b/sc/inc/column.hxx
@@ -588,6 +588,7 @@ public:
 
     void Broadcast( SCROW nRow );
     void BroadcastCells( const std::vector<SCROW>& rRows, sal_uInt32 nHint );
+    void BroadcastRows( SCROW nStartRow, SCROW nEndRow );
 
     // cell notes
     ScPostIt* GetCellNote( SCROW nRow );
diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 55a2b36936f8..156afa94e687 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -90,6 +90,16 @@ void ScColumn::BroadcastCells( const std::vector<SCROW>& rRows, sal_uInt32 nHint
     }
 }
 
+void ScColumn::BroadcastRows( SCROW nStartRow, SCROW nEndRow )
+{
+    sc::SingleColumnSpanSet aSpanSet;
+    aSpanSet.scan(*this, nStartRow, nEndRow);
+    std::vector<SCROW> aRows;
+    aSpanSet.getRows(aRows);
+    BroadcastCells(aRows, SC_HINT_DATACHANGED);
+}
+
+
 struct DirtyCellInterpreter
 {
     void operator() (size_t, ScFormulaCell* p)
diff --git a/sc/source/core/data/table5.cxx b/sc/source/core/data/table5.cxx
index 3ac1d04d4fcb..ccbbeb22a167 100644
--- a/sc/source/core/data/table5.cxx
+++ b/sc/source/core/data/table5.cxx
@@ -593,6 +593,10 @@ bool ScTable::SetRowHidden(SCROW nStartRow, SCROW nEndRow, bool bHidden)
     {
         if (IsStreamValid())
             SetStreamValid(false);
+        for (SCCOL i = 0; i < aCol.size(); i++)
+        {
+            aCol[i].BroadcastRows(nStartRow, nEndRow);
+        }
     }
 
     return bChanged;
commit e19336c7cb806b76488b0522c52519601635061a
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Mon May 8 01:10:13 2017 +0200

    tdf#107572: retrieve Default autoformat
    
    by fixing DefaultFirstEntry comparison operator.
    From http://www.cplusplus.com/reference/map/map/key_comp/:
    "...
    Two keys are considered equivalent if key_comp returns false reflexively
    (i.e., no matter the order in which the keys are passed as arguments).
    ..."
    
    Certainly regression from:
    https://cgit.freedesktop.org/libreoffice/core/commit/?id=652158c3f2c9cd0d6f71ecd14bf5d5cc02a71b50
    author  Julien Nabet <serval2412 at yahoo.fr>      2015-09-15 19:41:48 (GMT)
    committer       Julien Nabet <serval2412 at yahoo.fr>      2015-09-30 12:11:35 (GMT)
    commit  652158c3f2c9cd0d6f71ecd14bf5d5cc02a71b50 (patch)
    tree    13ad29a110565f24e7010a68d902cadf1c441b62
    parent  8727afe771a3e4d585e98ca9cceff2504e500bb0 (diff)
    tdf#94173: Calc doesn't save your own created autoformat presets
    
    This new patch has also been tested for tdf#94173
    
    Change-Id: I60de5fffe39be9b3615c32a317611812b42bafc7
    (cherry picked from commit 965494c544dd8f35ae83b7cf38549009da06c367)
    Reviewed-on: https://gerrit.libreoffice.org/37487
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Jenkins <ci at libreoffice.org>
    (cherry picked from commit 9fd3f402e7a6dfe133433d05de7452f32e1c41ba)

diff --git a/sc/source/core/tool/autoform.cxx b/sc/source/core/tool/autoform.cxx
index 4966475d3180..9708daa13dcb 100644
--- a/sc/source/core/tool/autoform.cxx
+++ b/sc/source/core/tool/autoform.cxx
@@ -912,6 +912,8 @@ ScAutoFormat::ScAutoFormat() :
 bool DefaultFirstEntry::operator() (const OUString& left, const OUString& right) const
 {
     OUString aStrStandard(ScGlobal::GetRscString(STR_STYLENAME_STANDARD));
+    if (ScGlobal::GetpTransliteration()->isEqual( left, right ) )
+        return false;
     if ( ScGlobal::GetpTransliteration()->isEqual( left, aStrStandard ) )
         return true;
     if ( ScGlobal::GetpTransliteration()->isEqual( right, aStrStandard ) )
commit ed508772174055041b409af25c5168f021cc1cad
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Wed May 10 16:06:08 2017 +0200

    tdf#107706 fix crash when closing Calc document
    
    regression from commit e8b49f09074fe184374bee5062715357427ae044
    "new loplugin: useuniqueptr: vcl"
    
    Change-Id: I07ac157a02aa82b1ddbb741797fea093772f93f1
    Reviewed-on: https://gerrit.libreoffice.org/37497
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
    (cherry picked from commit 2ff893426093652221a8602e71c7924c46d3386f)

diff --git a/svx/source/tbxctrls/tbunosearchcontrollers.cxx b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
index b411c6cf18b2..6b9f2364fe9d 100644
--- a/svx/source/tbxctrls/tbunosearchcontrollers.cxx
+++ b/svx/source/tbxctrls/tbunosearchcontrollers.cxx
@@ -191,6 +191,8 @@ void FindTextFieldControl::SetTextToSelected_Impl()
 
 bool FindTextFieldControl::PreNotify( NotifyEvent& rNEvt )
 {
+    if (isDisposed())
+        return true;
     bool bRet= ComboBox::PreNotify( rNEvt );
 
     switch ( rNEvt.GetType() )
commit b36b381587c9ec892f86d7bbd6dbc79c6914c991
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Wed May 10 16:57:59 2017 +0200

    Add distro-pack-install-strip target
    
    ...to be used by dev-tools' flatpak/build.sh
    
    Change-Id: Ie61edfc2aeddf10aa70dee07c3496fd6b2aebcc4
    (cherry picked from commit 58891d589bd8da700f135b098dd50833277c65dc)
    Reviewed-on: https://gerrit.libreoffice.org/37473
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    (cherry picked from commit 6b35505deabbfb9b00d9bc21fa31b95376a0aed0)

diff --git a/Makefile.in b/Makefile.in
index cf3e71fb1ff3..50d9dc0cfb09 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -9,7 +9,7 @@
 
 gb_Top_MODULE_CHECK_TARGETS := slowcheck unitcheck subsequentcheck perfcheck uicheck screenshot
 
-.PHONY : all check-if-root bootstrap gbuild build build-non-l10n-only build-l10n-only check clean clean-build clean-host test-install distclean distro-pack-install docs download etags fetch findunusedcode get-submodules id install install-strip tags debugrun help showmodules translations packageinfo internal.clean $(gb_Top_MODULE_CHECK_TARGETS)
+.PHONY : all check-if-root bootstrap gbuild build build-non-l10n-only build-l10n-only check clean clean-build clean-host test-install distclean distro-pack-install distro-pack-install-strip docs download etags fetch findunusedcode get-submodules id install install-strip tags debugrun help showmodules translations packageinfo internal.clean $(gb_Top_MODULE_CHECK_TARGETS)
 
 MAKECMDGOALS?=all
 build_goal:=$(if $(filter build check,$(MAKECMDGOALS)),all)\
@@ -362,11 +362,18 @@ else
 	@exit 1
 endif
 
+define gb_Top_DistroPackInstall
+$(SRCDIR)/bin/distro-install-clean-up
+$(SRCDIR)/bin/distro-install-desktop-integration
+$(SRCDIR)/bin/distro-install-sdk
+$(SRCDIR)/bin/distro-install-file-lists
+endef
+
 distro-pack-install: install
-	$(SRCDIR)/bin/distro-install-clean-up
-	$(SRCDIR)/bin/distro-install-desktop-integration
-	$(SRCDIR)/bin/distro-install-sdk
-	$(SRCDIR)/bin/distro-install-file-lists
+	$(gb_Top_DistroPackInstall)
+
+distro-pack-install-strip: install-strip
+	$(gb_Top_DistroPackInstall)
 
 install-package-%:
 	$(MAKE) $(GMAKE_OPTIONS) -f $(SRCDIR)/Makefile.gbuild $@


More information about the Libreoffice-commits mailing list