[Libreoffice-commits] core.git: Branch 'feature/calczoom' - 397 commits - accessibility/inc accessibility/IwyuFilter_accessibility.yaml accessibility/source android/Bootstrap android/source basctl/source basegfx/source basic/source bin/check-elf-dynamic-objects bin/find-can-be-private-symbols.py bin/lo-xlate-lang canvas/IwyuFilter_canvas.yaml canvas/source chart2/qa chart2/source chart2/uiconfig codemaker/source comphelper/qa comphelper/source compilerplugins/clang config_host/config_folders.h.in configmgr/source configure.ac connectivity/source cppcanvas/IwyuFilter_cppcanvas.yaml cppcanvas/qa cppcanvas/source cppu/source cui/source cui/uiconfig dbaccess/source desktop/qa desktop/source desktop/uiconfig dictionaries distro-configs/Jenkins download.lst editeng/inc editeng/source extensions/source external/boost external/breakpad external/coinmp external/glm external/harfbuzz external/icu external/libfreehand extras/source filter/source forms/source formula/source fpicker/inc fpicker/Library_fps_of fice.mk fpicker/source fpicker/uiconfig fpicker/UIConfig_fps.mk framework/inc framework/Library_fwk.mk framework/source helpcontent2 hwpfilter/source i18nlangtag/source i18npool/qa i18npool/source i18nutil/source icon-themes/breeze icon-themes/breeze_dark icon-themes/breeze_svg icon-themes/colibre icon-themes/colibre_svg icon-themes/sifr icon-themes/sifr_dark icon-themes/sifr_svg idlc/source idl/source include/avmedia include/basegfx include/basic include/codemaker include/comphelper include/connectivity include/cui include/dbaccess include/drawinglayer include/editeng include/filter include/formula include/framework include/jvmaccess include/linguistic include/o3tl include/oox include/rtl include/sax include/sfx2 include/sot include/svl include/svtools include/svx include/toolkit include/tools include/ucbhelper include/unoidl include/unotools include/vbahelper include/vcl include/xmloff io/source jvmfwk/plugins libreofficekit/qa libreofficekit/source lotuswordpro/source odk/example s odk/settings offapi/com offapi/UnoApi_offapi.mk officecfg/registry oox/source package/source qadevOOo/objdsc readlicense_oo/docs readlicense_oo/license README.md registry/source RepositoryExternal.mk sal/Module_sal.mk sal/osl sal/qa sal/rtl sal/util sax/qa sax/source sc/CppunitTest_sc_screenshots.mk sc/CppunitTest_sc_styleobj.mk sc/inc sc/Module_sc.mk sc/qa scripting/source sc/source sc/uiconfig sdext/source sd/inc sd/qa sd/sdi sd/source sfx2/inc sfx2/source sfx2/uiconfig shell/source slideshow/source solenv/bin solenv/clang-format solenv/gbuild solenv/sanitizers soltools/mkdepend sot/source starmath/uiconfig stoc/source svl/qa svl/source svtools/CppunitTest_svtools_dialogs_test.mk svtools/inc svtools/Library_svt.mk svtools/qa svtools/source svx/inc svx/sdi svx/source svx/uiconfig sw/inc sw/qa sw/sdi sw/source sw/uiconfig toolkit/source tools/source translations ucb/IwyuFilter_ucb.yaml ucb/qa ucb/source unoxml/source vcl/headless vcl/inc vcl/IwyuFilter_vcl.yaml vcl/Library_vcl.mk vcl/Module_vcl.mk vcl/opengl vcl/osx vcl/qa vcl/source vcl/uiconfig vcl/unx vcl/win vcl/workben writerfilter/source writerperfect/uiconfig xmlhelp/source xmloff/inc xmloff/source xmloff/util xmlscript/source xmlsecurity/source

Fri, 01 Nov 2019 10:00:29 -0700

Rebased ref, commits from common ancestor:
commit 1ae13c158dfda9362ffa6400dae7185ab14b0a2d
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Fri Nov 1 15:40:43 2019 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:54 2019 +0000

    sc lok: cope with non 100% zoom better.
    
    Do the tile rendering and alignment ourselves. More work required
    to get cleaner conversion between view and document twips (view
    twips being rounded to produce nice round pixel sizes when
    re-converted).
    
    Change-Id: I51edb186cfd2dc434005cc074f4ed8de19c85cb3

diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 52da7fba5c5b..24dd5e69a275 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -161,13 +161,15 @@ class ScBoundsProvider
     const bool bColumnHeader;
     const index_type MAX_INDEX;
 
+    double mfPPTX;
+    double mfPPTY;
     index_type nFirstIndex;
     index_type nSecondIndex;
     long nFirstPositionPx;
     long nSecondPositionPx;
 
 public:
-    ScBoundsProvider(ScDocument* pD, SCTAB nT, bool bColumnHeader);
+    ScBoundsProvider(const ScViewData &rView, SCTAB nT, bool bColumnHeader);
 
     void GetStartIndexAndPosition(SCCOL& nIndex, long& nPosition) const;
     void GetEndIndexAndPosition(SCCOL& nIndex, long& nPosition) const;
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 9f924931b09b..3a54172c8760 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1098,7 +1098,7 @@ namespace
         const auto& rStartNearest = 
rPositionHelper.getNearestByPosition(nTileStartPosPx);
         const auto& rEndNearest = 
rPositionHelper.getNearestByPosition(nTileEndPosPx);
 
-        ScBoundsProvider aBoundsProvider(pDoc, nTab, bColumnHeader);
+        ScBoundsProvider aBoundsProvider(*pViewData, nTab, bColumnHeader);
         aBoundsProvider.Compute(rStartNearest, rEndNearest, nTileStartPosPx, 
nTileEndPosPx);
         aBoundsProvider.GetStartIndexAndPosition(nStartIndex, nStartPosPx); 
++nStartIndex;
         aBoundsProvider.GetEndIndexAndPosition(nEndIndex, nEndPosPx);
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index 807dc27d4993..8d84742368d4 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -2495,13 +2495,13 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
     {
         SAL_INFO("sc.lok.header", "Row Header: compute start/end rows.");
         long nEndHeightPx = 0;
-        long nRectTopPx = rRectangle.Top() / TWIPS_PER_PIXEL;
-        long nRectBottomPx = rRectangle.Bottom() / TWIPS_PER_PIXEL;
+        long nRectTopPx = rRectangle.Top() * aViewData.GetPPTX();
+        long nRectBottomPx = rRectangle.Bottom() * aViewData.GetPPTY();
 
         const auto& rTopNearest = 
aViewData.GetLOKHeightHelper().getNearestByPosition(nRectTopPx);
         const auto& rBottomNearest = 
aViewData.GetLOKHeightHelper().getNearestByPosition(nRectBottomPx);
 
-        ScBoundsProvider aBoundingRowsProvider(pDoc, nTab, /*bColumnHeader: */ 
false);
+        ScBoundsProvider aBoundingRowsProvider(aViewData, nTab, 
/*bColumnHeader: */ false);
         aBoundingRowsProvider.Compute(rTopNearest, rBottomNearest, nRectTopPx, 
nRectBottomPx);
         aBoundingRowsProvider.EnlargeBy(2);
         aBoundingRowsProvider.GetStartIndexAndPosition(nStartRow, 
nStartHeightPx);
@@ -2591,7 +2591,7 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
     {
         OUString aText = OUString::number(nStartRow + 1);
         aBuffer.append("{ \"text\": \"").append(aText).append("\", ");
-        aBuffer.append("\"size\": \"").append(OUString::number(nTotalPixels * 
TWIPS_PER_PIXEL)).append("\", ");
+        aBuffer.append("\"size\": \"").append(OUString::number(nTotalPixels / 
aViewData.GetPPTX())).append("\", ");
         aBuffer.append("\"groupLevels\": 
\"").append(OUString::number(nRowGroupDepth)).append("\" }");
     }
 
@@ -2603,7 +2603,7 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
         // nSize will be 0 for hidden rows.
         const long nSizePx = lcl_GetRowHeightPx(pDoc, nRow, nTab);
         nTotalPixels += nSizePx;
-        const long nTotalTwips = nTotalPixels * TWIPS_PER_PIXEL;
+        const long nTotalTwips = nTotalPixels / aViewData.GetPPTY();
 
         if (bRangeHeaderSupport && nRowGroupDepth > 0)
         {
@@ -2638,13 +2638,13 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
     {
         SAL_INFO("sc.lok.header", "Column Header: compute start/end columns.");
         long nEndWidthPx = 0;
-        long nRectLeftPx = rRectangle.Left() / TWIPS_PER_PIXEL;
-        long nRectRightPx = rRectangle.Right() / TWIPS_PER_PIXEL;
+        long nRectLeftPx = rRectangle.Left() * aViewData.GetPPTX();
+        long nRectRightPx = rRectangle.Right() * aViewData.GetPPTY();
 
         const auto& rLeftNearest = 
aViewData.GetLOKWidthHelper().getNearestByPosition(nRectLeftPx);
         const auto& rRightNearest = 
aViewData.GetLOKWidthHelper().getNearestByPosition(nRectRightPx);
 
-        ScBoundsProvider aBoundingColsProvider(pDoc, nTab, /*bColumnHeader: */ 
true);
+        ScBoundsProvider aBoundingColsProvider(aViewData, nTab, 
/*bColumnHeader: */ true);
         aBoundingColsProvider.Compute(rLeftNearest, rRightNearest, 
nRectLeftPx, nRectRightPx);
         aBoundingColsProvider.EnlargeBy(2);
         aBoundingColsProvider.GetStartIndexAndPosition(nStartCol, 
nStartWidthPx);
@@ -2734,7 +2734,7 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
     {
         OUString aText = OUString::number(nStartCol + 1);
         aBuffer.append("{ \"text\": \"").append(aText).append("\", ");
-        aBuffer.append("\"size\": \"").append(OUString::number(nTotalPixels * 
TWIPS_PER_PIXEL)).append("\", ");
+        aBuffer.append("\"size\": \"").append(OUString::number(nTotalPixels / 
aViewData.GetPPTY())).append("\", ");
         aBuffer.append("\"groupLevels\": 
\"").append(OUString::number(nColGroupDepth)).append("\" }");
     }
 
@@ -2746,7 +2746,7 @@ OUString ScTabView::getRowColumnHeaders(const 
tools::Rectangle& rRectangle)
         // nSize will be 0 for hidden columns.
         const long nSizePx = lcl_GetColWidthPx(pDoc, nCol, nTab);
         nTotalPixels += nSizePx;
-        const long nTotalTwips = nTotalPixels * TWIPS_PER_PIXEL;
+        const long nTotalTwips = nTotalPixels / aViewData.GetPPTY();
 
         if (bRangeHeaderSupport && nColGroupDepth > 0)
         {
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 0eb317ff1eca..64b3daed8b39 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -280,11 +280,13 @@ long ScPositionHelper::computePosition(index_type nIndex, 
const std::function<lo
     return nTotalPixels;
 }
 
-ScBoundsProvider::ScBoundsProvider(ScDocument* pD, SCTAB nT, bool bColHeader)
-    : pDoc(pD)
+ScBoundsProvider::ScBoundsProvider(const ScViewData &rView, SCTAB nT, bool 
bColHeader)
+    : pDoc(rView.GetDocument())
     , nTab(nT)
     , bColumnHeader(bColHeader)
-    , MAX_INDEX(bColHeader ? pD->MaxCol() : MAXTILEDROW)
+    , MAX_INDEX(bColHeader ? pDoc->MaxCol() : MAXTILEDROW)
+    , mfPPTX(rView.GetPPTX())
+    , mfPPTY(rView.GetPPTY())
     , nFirstIndex(-1)
     , nSecondIndex(-1)
     , nFirstPositionPx(-1)
@@ -322,7 +324,7 @@ void ScBoundsProvider::GetEndIndexAndPosition(SCROW& 
nIndex, long& nPosition) co
 long ScBoundsProvider::GetSize(index_type nIndex) const
 {
     const sal_uInt16 nSize = bColumnHeader ? pDoc->GetColWidth(nIndex, nTab) : 
pDoc->GetRowHeight(nIndex, nTab);
-    return ScViewData::ToPixel(nSize, 1.0 / TWIPS_PER_PIXEL);
+    return ScViewData::ToPixel(nSize, bColumnHeader ? mfPPTX : mfPPTY);
 }
 
 void ScBoundsProvider::GetIndexAndPos(index_type nNearestIndex, long 
nNearestPosition,
@@ -1372,10 +1374,9 @@ void ScViewData::SetMaxTiledCol( SCCOL nNewMaxCol )
         nNewMaxCol = pDoc->MaxCol();
 
     const SCTAB nTab = GetTabNo();
-    ScDocument* pThisDoc = pDoc;
-    auto GetColWidthPx = [pThisDoc, nTab](SCCOL nCol) {
-        const sal_uInt16 nSize = pThisDoc->GetColWidth(nCol, nTab);
-        const long nSizePx = ScViewData::ToPixel(nSize, 1.0 / TWIPS_PER_PIXEL);
+    auto GetColWidthPx = [this, nTab](SCCOL nCol) {
+        const sal_uInt16 nSize = this->pDoc->GetColWidth(nCol, nTab);
+        const long nSizePx = this->ToPixel(nSize, nPPTX);
         return nSizePx;
     };
 
@@ -1398,10 +1399,9 @@ void ScViewData::SetMaxTiledRow( SCROW nNewMaxRow )
         nNewMaxRow = MAXTILEDROW;
 
     const SCTAB nTab = GetTabNo();
-    ScDocument* pThisDoc = pDoc;
-    auto GetRowHeightPx = [pThisDoc, nTab](SCROW nRow) {
-        const sal_uInt16 nSize = pThisDoc->GetRowHeight(nRow, nTab);
-        const long nSizePx = ScViewData::ToPixel(nSize, 1.0 / TWIPS_PER_PIXEL);
+    auto GetRowHeightPx = [this, nTab](SCROW nRow) {
+        const sal_uInt16 nSize = this->pDoc->GetRowHeight(nRow, nTab);
+        const long nSizePx = this->ToPixel(nSize, nPPTY);
         return nSizePx;
     };
 
commit 6b33f8cd4fa8d8b1733ce32db2205ecc042f4582
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Fri Nov 1 14:50:28 2019 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:53 2019 +0000

    tilebench: polish zoom squash into zoom tests.
    
    Change-Id: Iedf3233c9c39eff969e0a90528f1287f7dfc33f0

diff --git a/libreofficekit/qa/tilebench/tilebench.cxx 
b/libreofficekit/qa/tilebench/tilebench.cxx
index 7660c6bc9d20..f5dccf81affa 100644
--- a/libreofficekit/qa/tilebench/tilebench.cxx
+++ b/libreofficekit/qa/tilebench/tilebench.cxx
@@ -295,6 +295,21 @@ static int diffTiles( const std::vector<unsigned char> 
&vBase,
     return nDifferent;
 }
 
+static std::vector<unsigned char> paintTile( Document *pDocument,
+                                             long nX, long nY,
+                                             long const nTilePixelWidth,
+                                             long const nTilePixelHeight,
+                                             long const nTileTwipWidth,
+                                             long const nTileTwipHeight )
+{
+//    long e = 0; // tweak if we suspect an overlap / visibility issue.
+//    pDocument->setClientVisibleArea( nX - e, nY - e, nTileTwipWidth + e, 
nTileTwipHeight + e );
+    std::vector<unsigned char> vData( nTilePixelWidth * nTilePixelHeight * 4 );
+    pDocument->paintTile( vData.data(), nTilePixelWidth, nTilePixelHeight,
+                          nX, nY, nTileTwipWidth, nTileTwipHeight );
+    return vData;
+}
+
 static bool testJoinsAt( Document *pDocument, long nX, long nY,
                          long const nTilePixelSize,
                          long const nTileTwipSize )
@@ -306,12 +321,26 @@ static bool testJoinsAt( Document *pDocument, long nX, 
long nY,
     long const nTileTwipWidth = nTileTwipSize;
     long const nTileTwipHeight = nTileTwipSize;
 
-    // Get a base image 4x the size
     long initPosX = nX * nTileTwipWidth, initPosY = nY * nTileTwipHeight;
-    std::vector<unsigned char> vBase( nTilePixelWidth * nTilePixelHeight * 4 * 
4 );
 
-    pDocument->paintTile( vBase.data(), nTilePixelWidth * 2, nTilePixelHeight 
* 2,
-                          initPosX, initPosY, nTileTwipWidth * 2, 
nTileTwipHeight * 2 );
+    // Calc has to do significant work on changing zoom ...
+    pDocument->setClientZoom( nTilePixelWidth, nTilePixelHeight,
+                              nTileTwipWidth, nTileTwipHeight );
+
+    // Unfortunately without getting this nothing renders ...
+    std::stringstream aForceHeaders;
+    aForceHeaders << ".uno:ViewRowColumnHeaders?x=" << initPosX << "&y=" << 
initPosY <<
+        "&width=" << (nTileTwipWidth * 2) << "&height=" << (nTileTwipHeight * 
2);
+    std::string cmd = aForceHeaders.str();
+    char* pJSON = pDocument->getCommandValues(cmd.c_str());
+    fprintf(stderr, "command: '%s' values '%s'\n", cmd.c_str(), pJSON);
+    free(pJSON);
+
+    // Get a base image 4x the size
+    std::vector<unsigned char> vBase(
+        paintTile(pDocument, initPosX, initPosY,
+                  nTilePixelWidth * 2, nTilePixelHeight * 2,
+                  nTileTwipWidth * 2, nTileTwipHeight * 2));
 
     const struct {
         long X;
@@ -326,11 +355,13 @@ static bool testJoinsAt( Document *pDocument, long nX, 
long nY,
     // Compare each of the 4x tiles with a sub-tile of the larger image
     for( auto &rPos : aCompare )
     {
-        std::vector<unsigned char> vCompare( nTilePixelWidth * 
nTilePixelHeight * 4 );
-        pDocument->paintTile( vCompare.data(), nTilePixelWidth, 
nTilePixelHeight,
-                              initPosX + rPos.X * nTileTwipWidth,
-                              initPosY + rPos.Y * nTileTwipHeight,
-                              nTileTwipWidth, nTileTwipHeight );
+        std::vector<unsigned char> vCompare(
+            paintTile(pDocument,
+                      initPosX + rPos.X * nTileTwipWidth,
+                      initPosY + rPos.Y * nTileTwipHeight,
+                      nTilePixelWidth, nTilePixelHeight,
+                      nTileTwipWidth, nTileTwipHeight));
+
         std::vector<unsigned char> vDiff( nTilePixelWidth * 3 * 
nTilePixelHeight * 4 );
         int nDifferences = diffTiles( vBase, nTilePixelWidth * 2,
                                       vCompare, nTilePixelWidth,
@@ -368,11 +399,12 @@ static int testJoin( Document *pDocument)
 
     // Use realistic dimensions, similar to the Online client.
     long const nTilePixelSize = 256;
-    long const nTileTwipSize = 1852;
+    long const nTileTwipSize = 3840;
     double fZooms[] = {
-//        0.5, 0.6, 0.7, 0.85,
+        0.5,
+        0.6, 0.7, 0.85,
         1.0,
-//        1.2, 1.5, 1.75,
+        1.2, 1.5, 1.75,
         2.0
     };
     long nFails = 0;
commit 099887108e2b20ca33cd04d7019d71240eb4d1db
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Mon Oct 28 21:39:14 2019 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:53 2019 +0000

    Revert "lok: sc: make hi-dpi/zoom compatible with retrieving cell cursor"
    
    This reverts commit e3ff84aed5be8e0d2780d80b178fa8fc0e388859.
    
    Change-Id: I174dd54cf7b44f12c90c61882814b6dee9be9b7c

diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx 
b/desktop/qa/desktop_lib/test_desktop_lib.cxx
index 49a26253b388..5097f4b0dbc8 100644
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
@@ -813,7 +813,9 @@ void DesktopLOKTest::testCellCursor()
 
     OString aRectangle(aTree.get<std::string>("commandValues").c_str());
     // cell cursor geometry + col + row
-    CPPUNIT_ASSERT_EQUAL(OString("0, 0, 1274, 254, 0, 0"), aRectangle);
+    CPPUNIT_ASSERT_EQUAL(OString("0, 0, 1279, 255, 0, 0"), aRectangle);
+
+    comphelper::LibreOfficeKit::setActive(false);
 }
 
 void DesktopLOKTest::testCommandResult()
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 8f5324a7cd00..0f72c2954a1b 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -5675,7 +5675,7 @@ OString ScGridWindow::getCellCursor( int nOutputWidth, 
int nOutputHeight,
     return getCellCursor(zoomX, zoomY);
 }
 
-OString ScGridWindow::getCellCursor(const Fraction& /*rZoomX*/, const 
Fraction& /*rZoomY*/) const
+OString ScGridWindow::getCellCursor(const Fraction& rZoomX, const Fraction& 
rZoomY) const
 {
     // GridWindow stores a shown cell cursor in mpOOCursors, hence
     // we can use that to determine whether we would want to be showing
@@ -5691,10 +5691,7 @@ OString ScGridWindow::getCellCursor(const Fraction& 
/*rZoomX*/, const Fraction&
     Fraction defaultZoomX = pViewData->GetZoomX();
     Fraction defaultZoomY = pViewData->GetZoomY();
 
-    // hardcode to what we mean as 100% (256px tiles meaning 3840 twips)
-    Fraction aFracX(long(256 * TWIPS_PER_PIXEL), 3840);
-    Fraction aFracY(long(256 * TWIPS_PER_PIXEL), 3840);
-    pViewData->SetZoom(aFracX, aFracY, true);
+    pViewData->SetZoom(rZoomX, rZoomY, true);
 
     Point aScrPos = pViewData->GetScrPos( nX, nY, eWhich, true );
     long nSizeXPix;
commit e1a7224d47a2afb1013786714dfe8d4ce96f6a61
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Mon Oct 28 20:43:46 2019 +0000
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:53 2019 +0000

    Revert "sc lok: Implement hi-dpi and zoom for spreadsheets."
    
    This reverts commit 498dceb43f870bf9e380f1f87e99c6ccadf1963c.
    
    Change-Id: Iadb9da47cf8c9a57385530ab888d55169db7639a

diff --git a/comphelper/source/misc/lok.cxx b/comphelper/source/misc/lok.cxx
index b18314d155e5..4c1337dd927e 100644
--- a/comphelper/source/misc/lok.cxx
+++ b/comphelper/source/misc/lok.cxx
@@ -40,7 +40,7 @@ static Compat g_eCompatFlags(Compat::none);
 
 static LanguageTag g_aLanguageTag("en-US", true);
 
-/// Scaling of the cairo or CoreGraphics canvas painting for HiDPI or zooming 
in Calc.
+/// Scaling of the cairo canvas painting for hi-dpi
 static double g_fDPIScale(1.0);
 
 /// List of <viewid, bMobile> pairs
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index b00638eaa127..e46d11dee080 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2730,15 +2730,9 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     // would do - because that one is trying to fit the lines between cells to 
integer multiples of
     // pixels.
     comphelper::ScopeGuard dpiScaleGuard([]() { 
comphelper::LibreOfficeKit::setDPIScale(1.0); });
-    double fDPIScaleX = 1.0;
-    if (doc_getDocumentType(pThis) == LOK_DOCTYPE_SPREADSHEET)
-    {
-        fDPIScaleX = (nCanvasWidth * 3840.0) / (256.0 * nTileWidth);
-        assert(fabs(fDPIScaleX - ((nCanvasHeight * 3840.0) / (256.0 * 
nTileHeight))) < 0.0001);
-        comphelper::LibreOfficeKit::setDPIScale(fDPIScaleX);
-    }
 
 #if defined(IOS)
+    double fDPIScaleX = 1.0;
     paintTileIOS(pThis, pBuffer, nCanvasWidth, nCanvasHeight, fDPIScaleX, 
nTilePosX, nTilePosY, nTileWidth, nTileHeight);
 #else
     ScopedVclPtrInstance< VirtualDevice > pDevice(DeviceFormat::DEFAULT);
diff --git a/include/comphelper/lok.hxx b/include/comphelper/lok.hxx
index 22d2c6931ab3..b4658913f0d1 100644
--- a/include/comphelper/lok.hxx
+++ b/include/comphelper/lok.hxx
@@ -65,9 +65,9 @@ COMPHELPER_DLLPUBLIC void setTiledPainting(bool 
bTiledPainting);
 COMPHELPER_DLLPUBLIC bool isDialogPainting();
 /// Set if we are painting the dialog.
 COMPHELPER_DLLPUBLIC void setDialogPainting(bool bDialogPainting);
-/// Set the DPI scale for rendering for HiDPI displays.  Used also for zoom in 
Calc.
+/// Set the DPI scale for rendering for HiDPI displays.
 COMPHELPER_DLLPUBLIC void setDPIScale(double fDPIScale);
-/// Get the DPI scale for rendering for HiDPI displays.  Used also for zoom in 
Calc.
+/// Get the DPI scale for rendering for HiDPI displays.
 COMPHELPER_DLLPUBLIC double getDPIScale();
 /// Set if we want no annotations rendering
 COMPHELPER_DLLPUBLIC void setTiledAnnotations(bool bTiledAnnotations);
diff --git a/libreofficekit/qa/tilebench/tilebench.cxx 
b/libreofficekit/qa/tilebench/tilebench.cxx
index 3c46afed18ec..7660c6bc9d20 100644
--- a/libreofficekit/qa/tilebench/tilebench.cxx
+++ b/libreofficekit/qa/tilebench/tilebench.cxx
@@ -370,9 +370,9 @@ static int testJoin( Document *pDocument)
     long const nTilePixelSize = 256;
     long const nTileTwipSize = 1852;
     double fZooms[] = {
-        0.5, 0.6, 0.7, 0.85,
+//        0.5, 0.6, 0.7, 0.85,
         1.0,
-        1.2, 1.5, 1.75,
+//        1.2, 1.5, 1.75,
         2.0
     };
     long nFails = 0;
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 689b785ab982..9b0ae9763001 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -888,12 +888,12 @@ bool ScModelObj::isMimeTypeSupported()
     return EditEngine::HasValidData(aDataHelper.GetTransferable());
 }
 
-void ScModelObj::setClientZoom(int /*nTilePixelWidth_*/, int 
/*nTilePixelHeight_*/, int /*nTileTwipWidth_*/, int /*nTileTwipHeight_*/)
+void ScModelObj::setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, 
int nTileTwipWidth_, int nTileTwipHeight_)
 {
-    mnTilePixelWidth = 256;
-    mnTilePixelHeight = 256;
-    mnTileTwipWidth = mnTilePixelWidth * TWIPS_PER_PIXEL;
-    mnTileTwipHeight = mnTilePixelHeight * TWIPS_PER_PIXEL;
+    mnTilePixelWidth = nTilePixelWidth_;
+    mnTilePixelHeight = nTilePixelHeight_;
+    mnTileTwipWidth = nTileTwipWidth_;
+    mnTileTwipHeight = nTileTwipHeight_;
 }
 
 OUString ScModelObj::getRowColumnHeaders(const tools::Rectangle& rRectangle)
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 76041fdc5b7a..9f924931b09b 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1129,30 +1129,17 @@ void ScGridWindow::PaintTile( VirtualDevice& rDevice,
     // coords only, and avoid all the SetMapMode()'s.
     // Similarly to Writer, we should set the mapmode once on the rDevice, and
     // not care about any zoom settings.
-    //
-    // But until that happens, we actually draw everything at 100%, and only
-    // set cairo's or CoreGraphic's scale factor accordingly, so that 
everything
-    // is painted  bigger or smaller. This is different to what Calc's internal
-    // scaling would do - because that one is trying to fit the lines between
-    // cells to integer multiples of pixels.
-    //
-    // See also desktop/source/lib/init.cxx for details, where we have to set
-    // the stuff accordingly for the VirtualDevice creation.
-
-    // page break zoom, and aLogicMode in ScViewData - hardcode that to what
-    // we mean as 100% (256px tiles meaning 3840 twips)
-    Fraction aFracX(long(256 * TWIPS_PER_PIXEL), 3840);
-    Fraction aFracY(long(256 * TWIPS_PER_PIXEL), 3840);
-    pViewData->SetZoom(aFracX, aFracY, true);
 
-    // Cairo or CoreGraphics scales for us, we have to compensate for that,
-    // otherwise we are painting too far away
-    const double fDPIScale = comphelper::LibreOfficeKit::getDPIScale();
+    Fraction aFracX(long(nOutputWidth * TWIPS_PER_PIXEL), nTileWidth);
+    Fraction aFracY(long(nOutputHeight * TWIPS_PER_PIXEL), nTileHeight);
+
+    // page break zoom, and aLogicMode in ScViewData
+    pViewData->SetZoom(aFracX, aFracY, true);
 
-    const double fTilePosXPixel = static_cast<double>(nTilePosX) * 
nOutputWidth / (nTileWidth * fDPIScale);
-    const double fTilePosYPixel = static_cast<double>(nTilePosY) * 
nOutputHeight / (nTileHeight * fDPIScale);
-    const double fTileBottomPixel = static_cast<double>(nTilePosY + 
nTileHeight) * nOutputHeight / (nTileHeight * fDPIScale);
-    const double fTileRightPixel = static_cast<double>(nTilePosX + nTileWidth) 
* nOutputWidth / (nTileWidth * fDPIScale);
+    const double fTilePosXPixel = static_cast<double>(nTilePosX) * 
nOutputWidth / nTileWidth;
+    const double fTilePosYPixel = static_cast<double>(nTilePosY) * 
nOutputHeight / nTileHeight;
+    const double fTileBottomPixel = static_cast<double>(nTilePosY + 
nTileHeight) * nOutputHeight / nTileHeight;
+    const double fTileRightPixel = static_cast<double>(nTilePosX + nTileWidth) 
* nOutputWidth / nTileWidth;
 
     SCTAB nTab = pViewData->GetTabNo();
     ScDocument* pDoc = pViewData->GetDocument();
commit bf2f77524fdee5df380e85eff23211cdf7c7c8eb
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Fri Oct 25 21:16:42 2019 +0100
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:53 2019 +0000

    lok: implement zoom tests.
    
    Change-Id: Ieffc89b8119c2baf56383ac8b5d3cb54dc9d0d2d

diff --git a/libreofficekit/qa/tilebench/tilebench.cxx 
b/libreofficekit/qa/tilebench/tilebench.cxx
index fef5271bdf27..3c46afed18ec 100644
--- a/libreofficekit/qa/tilebench/tilebench.cxx
+++ b/libreofficekit/qa/tilebench/tilebench.cxx
@@ -339,8 +339,9 @@ static bool testJoinsAt( Document *pDocument, long nX, long 
nY,
                                       vDiff );
         if ( nDifferences > 0 )
         {
-            fprintf( stderr, "  %d differences in sub-tile pixel mismatch at 
%ld, %ld at offset %ld, %ld (twips)\n",
-                     nDifferences, rPos.X, rPos.Y, initPosX, initPosY );
+            fprintf( stderr, "  %d differences in sub-tile pixel mismatch at 
%ld, %ld at offset %ld, %ld (twips) size %ld\n",
+                     nDifferences, rPos.X, rPos.Y, initPosX, initPosY,
+                     nTileTwipWidth);
             dumpTile("_base", nTilePixelWidth * 2, nTilePixelHeight * 2,
                      mode, vBase.data());
 /*            dumpTile("_sub", nTilePixelWidth, nTilePixelHeight,
@@ -368,15 +369,29 @@ static int testJoin( Document *pDocument)
     // Use realistic dimensions, similar to the Online client.
     long const nTilePixelSize = 256;
     long const nTileTwipSize = 1852;
+    double fZooms[] = {
+        0.5, 0.6, 0.7, 0.85,
+        1.0,
+        1.2, 1.5, 1.75,
+        2.0
+    };
     long nFails = 0;
+    std::stringstream results;
 
-    for( long y = 0; y < 5; ++y )
+    for( auto z : fZooms )
     {
-        for( long x = 0; x < 5; ++x )
+        long nBad = 0;
+        for( long y = 0; y < 5; ++y )
         {
-            if ( !testJoinsAt( pDocument, x, y, nTilePixelSize, nTileTwipSize 
) )
-                nFails++;
+            for( long x = 0; x < 5; ++x )
+            {
+                if ( !testJoinsAt( pDocument, x, y, nTilePixelSize, 
nTileTwipSize * z ) )
+                    nBad++;
+            }
         }
+        if (nBad > 0)
+            results << "\tZoom " << z << " bad tiles: " << nBad << "\n";
+        nFails += nBad;
     }
 
     if (nFails > 0)
@@ -384,6 +399,8 @@ static int testJoin( Document *pDocument)
     else
         fprintf( stderr, "All joins compared correctly\n" );
 
+    fprintf(stderr, "%s\n", results.str().c_str());
+
     return nFails;
 }
 
commit 3cdfe6728b9ec931c95cb9d7b5bc16ccbd53153e
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Thu Sep 19 20:24:00 2019 +0100
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Fri Nov 1 16:58:53 2019 +0000

    Drawing calc grid misses pixels on bottom and right.
    
    Change-Id: I2ac7911b35d942b7167a3243d04e1b5710ed367d

diff --git a/vcl/source/outdev/rect.cxx b/vcl/source/outdev/rect.cxx
index ecbeb12fbfee..2bdc7abb793b 100644
--- a/vcl/source/outdev/rect.cxx
+++ b/vcl/source/outdev/rect.cxx
@@ -219,6 +219,10 @@ void OutputDevice::DrawGrid( const tools::Rectangle& 
rRect, const Size& rDist, D
 
     tools::Rectangle aDstRect( PixelToLogic( Point() ), GetOutputSize() );
     aDstRect.Intersection( rRect );
+    // FIXME: seems we have an off-by-one around the border
+    // here with the cairo / svp backend at least.
+    aDstRect.AdjustRight(1);
+    aDstRect.AdjustBottom(1);
 
     if( aDstRect.IsEmpty() || ImplIsRecordLayout() )
         return;
commit 60692ba238c6c5c003722ccaa52702e9ef3ade13
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Nov 1 11:39:13 2019 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Nov 1 16:10:07 2019 +0100

    the label sync button will relaunch itself from its close handler
    
    so rearrange things so that runAsync can survive that
    
    Change-Id: I7d40637fb861ceb64ce32f0e9ecb3451c0d17bad
    Reviewed-on: https://gerrit.libreoffice.org/81884
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 6c318ce0bb91..1c225335753a 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -4117,7 +4117,7 @@ public:
             return;
         if (GTK_IS_DIALOG(m_pDialog))
             
sort_native_button_order(GTK_BOX(gtk_dialog_get_action_area(GTK_DIALOG(m_pDialog))));
-        gtk_widget_show(m_pWidget);
+        GtkInstanceWindow::show();
     }
 
     virtual void set_modal(bool bModal) override
@@ -6030,29 +6030,30 @@ void GtkInstanceDialog::asyncresponse(gint ret)
     if (get_modal())
         m_aDialogRun.dec_modal_count();
     hide();
-    m_aFunc(GtkToVcl(ret));
 
-    if (m_nResponseSignalId)
-    {
-        g_signal_handler_disconnect(m_pDialog, m_nResponseSignalId);
-        m_nResponseSignalId = 0;
-    }
-    if (m_nCancelSignalId)
-    {
-        g_signal_handler_disconnect(m_pDialog, m_nCancelSignalId);
-        m_nCancelSignalId = 0;
-    }
+    // move the self pointer, otherwise it might be de-allocated by time we 
try to reset it
+    auto xRunAsyncSelf = std::move(m_xRunAsyncSelf);
+    auto xDialogController = std::move(m_xDialogController);
+    auto aFunc = std::move(m_aFunc);
+
+    auto nResponseSignalId = m_nResponseSignalId;
+    auto nCancelSignalId = m_nCancelSignalId;
+    auto nSignalDeleteId = m_nSignalDeleteId;
+    m_nResponseSignalId = 0;
+    m_nCancelSignalId = 0;
+    m_nSignalDeleteId = 0;
+
+    aFunc(GtkToVcl(ret));
+
+    if (nResponseSignalId)
+        g_signal_handler_disconnect(m_pDialog, nResponseSignalId);
+    if (nCancelSignalId)
+        g_signal_handler_disconnect(m_pDialog, nCancelSignalId);
     if (m_nSignalDeleteId)
-    {
-        g_signal_handler_disconnect(m_pDialog, m_nSignalDeleteId);
-        m_nSignalDeleteId = 0;
-    }
+        g_signal_handler_disconnect(m_pDialog, nSignalDeleteId);
 
-    m_aFunc = nullptr;
-    // move the self pointer, otherwise it might be de-allocated by time we 
try to reset it
-    std::shared_ptr<weld::Dialog> me = std::move(m_xRunAsyncSelf);
-    m_xDialogController.reset();
-    me.reset();
+    xDialogController.reset();
+    xRunAsyncSelf.reset();
 }
 
 int GtkInstanceDialog::run()
commit 72bb0696122aad9a3c3cb9777214acb8538ad300
Author:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
AuthorDate: Thu Oct 31 09:27:57 2019 -0600
Commit:     Adolfo Jayme Barrientos <fit...@ubuntu.com>
CommitDate: Fri Nov 1 14:07:58 2019 +0100

    README: Add Weblate badge for core l10n
    
    Change-Id: Ie188f4d7e5ac3291933089a72be638e9af935097
    Reviewed-on: https://gerrit.libreoffice.org/81856
    Reviewed-by: Sophie Gautier <gautier.sop...@gmail.com>
    Tested-by: Jenkins
    Reviewed-by: Adolfo Jayme Barrientos <fit...@ubuntu.com>

diff --git a/README.md b/README.md
index 513bb159e3db..1a1dd5d78b17 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
 # LibreOffice
-[![Coverity Scan Build 
Status](https://scan.coverity.com/projects/211/badge.svg)](https://scan.coverity.com/projects/211)
 [![CII Best 
Practices](https://bestpractices.coreinfrastructure.org/projects/307/badge)](https://bestpractices.coreinfrastructure.org/projects/307)
+[![Coverity Scan Build 
Status](https://scan.coverity.com/projects/211/badge.svg)](https://scan.coverity.com/projects/211)
 [![CII Best 
Practices](https://bestpractices.coreinfrastructure.org/projects/307/badge)](https://bestpractices.coreinfrastructure.org/projects/307)
 [![Translation 
status](https://weblate.documentfoundation.org/widgets/libo_ui-master/-/svg-badge.svg)](https://weblate.documentfoundation.org/engage/libo_ui-master/?utm_source=widget)
 
 LibreOffice is an integrated office suite based on copyleft licenses
 and compatible with most document formats and standards. Libreoffice
commit d9956e6a6f22e9b9a4793d3d342d265267427d7d
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Fri Nov 1 09:02:47 2019 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Fri Nov 1 12:45:54 2019 +0100

    Resolves: tdf#128476 limit sidebar navigation panel file name combobox width
    
    Change-Id: I81549ada6f6b736ad54e18a4fec6807b8d0412af
    Reviewed-on: https://gerrit.libreoffice.org/81875
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>
    Tested-by: Caolán McNamara <caol...@redhat.com>

diff --git a/sc/source/ui/navipi/navipi.cxx b/sc/source/ui/navipi/navipi.cxx
index 063823d594c2..1157e13771ea 100644
--- a/sc/source/ui/navipi/navipi.cxx
+++ b/sc/source/ui/navipi/navipi.cxx
@@ -492,6 +492,7 @@ ScNavigatorDlg::ScNavigatorDlg(SfxBindings* pB, 
vcl::Window* pParent)
     aTbxCmd->InsertBreak(3);
     aTbxCmd->SetLineCount(2);
     aLbDocuments->SetDropDownLineCount(9);
+    aLbDocuments->setMaxWidthChars(20);
     aLbDocuments->SetSelectHdl(LINK(this, ScNavigatorDlg, DocumentSelectHdl));
     aStrActive    = " (" + ScResId(SCSTR_ACTIVE) + ")";     // " (active)"
     aStrNotActive = " (" + ScResId(SCSTR_NOTACTIVE) + ")";  // " (not active)"
diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx
index f457d8e945df..904b34226c49 100644
--- a/sd/source/ui/dlg/navigatr.cxx
+++ b/sd/source/ui/dlg/navigatr.cxx
@@ -93,6 +93,7 @@ SdNavigatorWin::SdNavigatorWin(vcl::Window* pParent, 
SfxBindings* pInBindings)
     maTlbObjects->SetSdNavigator(this);
 
     // DragTypeListBox
+    maLbDocs->setMaxWidthChars(20);
     maLbDocs->SetSelectHdl( LINK( this, SdNavigatorWin, SelectDocumentHdl ) );
 }
 
diff --git a/sw/source/uibase/utlui/navipi.cxx 
b/sw/source/uibase/utlui/navipi.cxx
index c2e02c7daf29..f6155e16d80f 100644
--- a/sw/source/uibase/utlui/navipi.cxx
+++ b/sw/source/uibase/utlui/navipi.cxx
@@ -629,6 +629,7 @@ SwNavigationPI::SwNavigationPI(SfxBindings* _pBindings,
     m_aGlobalToolBox->SetHelpId(HID_NAVIGATOR_GLOBAL_TOOLBOX);
     m_aDocListBox->SetHelpId(HID_NAVIGATOR_LISTBOX);
     m_aDocListBox->SetDropDownLineCount(9);
+    m_aDocListBox->setMaxWidthChars(20);
 
     // Insert the numeric field in the toolbox.
     m_xEdit = VclPtr<NumEditAction>::Create(
commit e7536ee31df2279c6730fd629bd4b6d94b02dcd1
Author:     Andras Timar <andras.ti...@collabora.com>
AuthorDate: Fri Nov 1 11:33:44 2019 +0100
Commit:     Gerrit Code Review <ger...@gerrit.libreoffice.org>
CommitDate: Fri Nov 1 11:33:56 2019 +0100

    Update git submodules
    
    * Update translations from branch 'master'
      - Updated Slovenian translations
    
        Change-Id: I205dc5dbdc62bba2c9ac650902d1a8ac1e80db4e

diff --git a/translations b/translations
index 4960b59e9c3b..93e4c126a91f 160000
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit 4960b59e9c3b897c61e24548ef13a8883cc8b781
+Subproject commit 93e4c126a91f83015a1c4bd801a5f4adb0a900e4
commit faff2437d83b437766d1c59dc473cc8b6ad9a548
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Nov 1 11:28:02 2019 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Nov 1 11:27:20 2019 +0100

    loplugin:finalclasses in sd/inc
    
    Change-Id: I29c7656d532fc0c8bcf1379a2f54d052aa4253e8
    Reviewed-on: https://gerrit.libreoffice.org/81877
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sd/inc/CustomAnimationEffect.hxx b/sd/inc/CustomAnimationEffect.hxx
index f60e350ba3cf..cf2cfe7cb7a4 100644
--- a/sd/inc/CustomAnimationEffect.hxx
+++ b/sd/inc/CustomAnimationEffect.hxx
@@ -345,7 +345,7 @@ protected:
 
 class MainSequence;
 
-class InteractiveSequence : public EffectSequenceHelper
+class InteractiveSequence final : public EffectSequenceHelper
 {
 friend class MainSequence;
 friend class MainSequenceChangeGuard;
diff --git a/sd/inc/anminfo.hxx b/sd/inc/anminfo.hxx
index dbd13720ec29..08224994a2ce 100644
--- a/sd/inc/anminfo.hxx
+++ b/sd/inc/anminfo.hxx
@@ -28,7 +28,7 @@
 #include <tools/color.hxx>
 #include "sddllapi.h"
 
-class SD_DLLPUBLIC SdAnimationInfo : public SdrObjUserData
+class SD_DLLPUBLIC SdAnimationInfo final : public SdrObjUserData
 {
 public:
     PresObjKind             mePresObjKind;
diff --git a/sd/inc/drawdoc.hxx b/sd/inc/drawdoc.hxx
index 304d4e282c78..b5b6e574ca0c 100644
--- a/sd/inc/drawdoc.hxx
+++ b/sd/inc/drawdoc.hxx
@@ -128,7 +128,7 @@ namespace sd
 }
 
 // SdDrawDocument
-class SD_DLLPUBLIC SdDrawDocument : public FmFormModel
+class SD_DLLPUBLIC SdDrawDocument final : public FmFormModel
 {
 public:
     SAL_DLLPRIVATE void setDocAccTitle( const OUString& rTitle ) { 
msDocAccTitle = rTitle; }
@@ -200,8 +200,6 @@ private:
     bool mbEmbedFontScriptAsian : 1;
     bool mbEmbedFontScriptComplex : 1;
 
-protected:
-
     SAL_DLLPRIVATE virtual css::uno::Reference< css::uno::XInterface > 
createUnoModel() override;
 
 public:
diff --git a/sd/inc/pglink.hxx b/sd/inc/pglink.hxx
index a6344ca3ef7c..c36b2afcda3a 100644
--- a/sd/inc/pglink.hxx
+++ b/sd/inc/pglink.hxx
@@ -24,7 +24,7 @@
 
 class SdPage;
 
-class SdPageLink : public ::sfx2::SvBaseLink
+class SdPageLink final : public ::sfx2::SvBaseLink
 {
     SdPage* pPage;
 
diff --git a/sd/inc/sdcgmfilter.hxx b/sd/inc/sdcgmfilter.hxx
index 44ba359aab17..000a50bde63d 100644
--- a/sd/inc/sdcgmfilter.hxx
+++ b/sd/inc/sdcgmfilter.hxx
@@ -23,7 +23,7 @@
 #include "sdfilter.hxx"
 
 // SdCGMFilter
-class SdCGMFilter : public SdFilter
+class SdCGMFilter final : public SdFilter
 {
 public:
     SdCGMFilter (
diff --git a/sd/inc/sdgrffilter.hxx b/sd/inc/sdgrffilter.hxx
index 2b34ecf93e52..2ec180a52bf3 100644
--- a/sd/inc/sdgrffilter.hxx
+++ b/sd/inc/sdgrffilter.hxx
@@ -24,7 +24,7 @@
 class ErrCode;
 
 // SdCGMFilter
-class SdGRFFilter : public SdFilter
+class SdGRFFilter final : public SdFilter
 {
 public:
     SdGRFFilter ( SfxMedium& rMedium, ::sd::DrawDocShell& rDocShell );
diff --git a/sd/inc/sdhtmlfilter.hxx b/sd/inc/sdhtmlfilter.hxx
index 86a7eb157fe8..c55d24150b71 100644
--- a/sd/inc/sdhtmlfilter.hxx
+++ b/sd/inc/sdhtmlfilter.hxx
@@ -23,8 +23,7 @@
 #include "sdfilter.hxx"
 
 // SdHTMLFilter
-class SdHTMLFilter
-    : public SdFilter
+class SdHTMLFilter final : public SdFilter
 {
 public:
     SdHTMLFilter (
diff --git a/sd/inc/sdpdffilter.hxx b/sd/inc/sdpdffilter.hxx
index ce085a7036b3..44cae287d19f 100644
--- a/sd/inc/sdpdffilter.hxx
+++ b/sd/inc/sdpdffilter.hxx
@@ -28,7 +28,7 @@ namespace sd
 class DrawDocShell;
 }
 
-class SdPdfFilter : public SdFilter
+class SdPdfFilter final : public SdFilter
 {
 public:
     SdPdfFilter(SfxMedium& rMedium, ::sd::DrawDocShell& rDocShell);
diff --git a/sd/inc/sdpptwrp.hxx b/sd/inc/sdpptwrp.hxx
index 6414226d4596..9126f814d585 100644
--- a/sd/inc/sdpptwrp.hxx
+++ b/sd/inc/sdpptwrp.hxx
@@ -25,7 +25,7 @@
 #include <tools/stream.hxx>
 
 // SdPPTFilter
-class SdPPTFilter : public SdFilter
+class SdPPTFilter final : public SdFilter
 {
 public:
     SdPPTFilter (
diff --git a/sd/inc/sdxmlwrp.hxx b/sd/inc/sdxmlwrp.hxx
index a73ce57d22f7..9fe46506b9a0 100644
--- a/sd/inc/sdxmlwrp.hxx
+++ b/sd/inc/sdxmlwrp.hxx
@@ -32,7 +32,7 @@ enum SdXMLFilterMode
     SDXMLMODE_Organizer ///< only for import, only the styles are loaded
 };
 
-class SdXMLFilter : public SdFilter
+class SdXMLFilter final : public SdFilter
 {
 public:
     SdXMLFilter(
diff --git a/sd/inc/shapelist.hxx b/sd/inc/shapelist.hxx
index beef8211c9bb..c151fa6d2fcd 100644
--- a/sd/inc/shapelist.hxx
+++ b/sd/inc/shapelist.hxx
@@ -27,7 +27,7 @@
 
 namespace sd
 {
-    class ShapeList : public sdr::ObjectUser
+    class ShapeList final : public sdr::ObjectUser
     {
     public:
         ShapeList();
diff --git a/sd/inc/stlfamily.hxx b/sd/inc/stlfamily.hxx
index fbaa825505cc..aff19d1f1739 100644
--- a/sd/inc/stlfamily.hxx
+++ b/sd/inc/stlfamily.hxx
@@ -40,7 +40,7 @@ class SdStyleSheet;
 class SdPage;
 struct SdStyleFamilyImpl;
 
-class SdStyleFamily : public ::cppu::WeakImplHelper< 
css::container::XNameContainer, css::container::XNamed, 
css::container::XIndexAccess, css::lang::XSingleServiceFactory,  
css::lang::XServiceInfo, css::lang::XComponent, css::beans::XPropertySet >
+class SdStyleFamily final : public ::cppu::WeakImplHelper< 
css::container::XNameContainer, css::container::XNamed, 
css::container::XIndexAccess, css::lang::XSingleServiceFactory,  
css::lang::XServiceInfo, css::lang::XComponent, css::beans::XPropertySet >
 {
 public:
     /// creates the style family for the given SfxStyleFamily
diff --git a/sd/inc/textapi.hxx b/sd/inc/textapi.hxx
index 2141c3bfc6ff..40449c2f0cc2 100644
--- a/sd/inc/textapi.hxx
+++ b/sd/inc/textapi.hxx
@@ -30,7 +30,7 @@ namespace sd {
 
 class TextAPIEditSource;
 
-class TextApiObject : public SvxUnoText
+class TextApiObject final : public SvxUnoText
 {
 public:
     static rtl::Reference< TextApiObject > create( SdDrawDocument* pDoc );
diff --git a/sd/inc/undo/undofactory.hxx b/sd/inc/undo/undofactory.hxx
index 379349e37312..6341b006a568 100644
--- a/sd/inc/undo/undofactory.hxx
+++ b/sd/inc/undo/undofactory.hxx
@@ -25,7 +25,7 @@
 namespace sd
 {
 
-class UndoFactory : public SdrUndoFactory
+class UndoFactory final : public SdrUndoFactory
 {
 public:
     virtual std::unique_ptr<SdrUndoAction> CreateUndoRemoveObject(SdrObject& 
rObject) override;
diff --git a/sd/inc/undo/undomanager.hxx b/sd/inc/undo/undomanager.hxx
index 84a0e5394a4a..bed4f0f798f0 100644
--- a/sd/inc/undo/undomanager.hxx
+++ b/sd/inc/undo/undomanager.hxx
@@ -26,7 +26,7 @@
 namespace sd
 {
 
-class SD_DLLPUBLIC UndoManager : public SdrUndoManager
+class SD_DLLPUBLIC UndoManager final : public SdrUndoManager
 {
 public:
     UndoManager();
diff --git a/sd/inc/undo/undoobjects.hxx b/sd/inc/undo/undoobjects.hxx
index 61edc1bbf4c5..53b81b61d911 100644
--- a/sd/inc/undo/undoobjects.hxx
+++ b/sd/inc/undo/undoobjects.hxx
@@ -46,7 +46,7 @@ private:
     std::unique_ptr<SfxUndoAction>  mpUndoPresObj;
 };
 
-class UndoRemoveObject : public SdrUndoRemoveObj, public 
UndoRemovePresObjectImpl
+class UndoRemoveObject final : public SdrUndoRemoveObj, public 
UndoRemovePresObjectImpl
 {
 public:
     UndoRemoveObject(SdrObject& rObject);
@@ -58,7 +58,7 @@ private:
     ::tools::WeakReference<SdrObject> mxSdrObject;
 };
 
-class UndoDeleteObject : public SdrUndoDelObj, public UndoRemovePresObjectImpl
+class UndoDeleteObject final : public SdrUndoDelObj, public 
UndoRemovePresObjectImpl
 {
 public:
     UndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect );
@@ -70,7 +70,7 @@ private:
     ::tools::WeakReference<SdrObject> mxSdrObject;
 };
 
-class UndoReplaceObject : public SdrUndoReplaceObj, public 
UndoRemovePresObjectImpl
+class UndoReplaceObject final : public SdrUndoReplaceObj, public 
UndoRemovePresObjectImpl
 {
 public:
     UndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject );
@@ -82,7 +82,7 @@ private:
     ::tools::WeakReference<SdrObject> mxSdrObject;
 };
 
-class UndoObjectSetText : public SdrUndoObjSetText
+class UndoObjectSetText final : public SdrUndoObjSetText
 {
 public:
     UndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText );
diff --git a/sd/inc/undoanim.hxx b/sd/inc/undoanim.hxx
index 6270ad97c385..68169b686a5c 100644
--- a/sd/inc/undoanim.hxx
+++ b/sd/inc/undoanim.hxx
@@ -33,7 +33,7 @@ namespace sd
 
 struct UndoAnimationImpl;
 
-class UndoAnimation : public SdrUndoAction
+class UndoAnimation final : public SdrUndoAction
 {
 public:
     UndoAnimation( SdDrawDocument* pDoc, SdPage* pThePage );
@@ -49,7 +49,7 @@ private:
 };
 
 struct UndoAnimationPathImpl;
-class UndoAnimationPath : public SdrUndoAction
+class UndoAnimationPath final : public SdrUndoAction
 {
 public:
     UndoAnimationPath( SdDrawDocument* pDoc, SdPage* pThePage, const 
css::uno::Reference< css::animations::XAnimationNode >& xNode );
@@ -66,7 +66,7 @@ private:
 
 struct UndoTransitionImpl;
 
-class UndoTransition : public SdUndoAction
+class UndoTransition final : public SdUndoAction
 {
 public:
     UndoTransition( SdDrawDocument* pDoc, SdPage* pThePage );
commit 202a49a5831fbfcf057350ef949c13e75b3b7446
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Thu Oct 31 13:40:57 2019 +0000
Commit:     Katarina Behrens <katarina.behr...@cib.de>
CommitDate: Fri Nov 1 10:51:51 2019 +0100

    crashtesting: out of bounds on importing tdf90224-2.odt
    
    Change-Id: I5697cefd0859f007023fcd356d69db0e2176d67f
    Reviewed-on: https://gerrit.libreoffice.org/81850
    Tested-by: Jenkins
    Reviewed-by: Katarina Behrens <katarina.behr...@cib.de>

diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index ea99495edc24..d9dd6cc35e42 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -668,7 +668,7 @@ void SdrObjList::sort( std::vector<sal_Int32>& sortOrder)
 
     for (size_t i = 0; i < aNewSortOrder.size(); ++i)
     {
-        aNewList[i] = maList[ sortOrder[i] ];
+        aNewList[i] = maList[ aNewSortOrder[i] ];
         aNewList[i]->SetOrdNum(i);
     }
 
commit bbc0d20310a7031649628a62186b53d96c013891
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Thu Oct 31 09:38:16 2019 +0200
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Fri Nov 1 10:44:34 2019 +0100

    Bin code that has been commented-out for ten years.
    
    Change-Id: I315e22ce296418799b6f51618cb6276c461b537b
    Reviewed-on: https://gerrit.libreoffice.org/81873
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <t...@collabora.com>
    Tested-by: Tor Lillqvist <t...@collabora.com>

diff --git a/svx/source/table/tablecontroller.cxx 
b/svx/source/table/tablecontroller.cxx
index 18d76e2de465..ffd6ca9f1e90 100644
--- a/svx/source/table/tablecontroller.cxx
+++ b/svx/source/table/tablecontroller.cxx
@@ -504,12 +504,6 @@ void SvxTableController::GetState( SfxItemSet& rSet )
                 break;
             }
 
-            case SID_AUTOFORMAT:
-            case SID_TABLE_SORT_DIALOG:
-            case SID_TABLE_AUTOSUM:
-//              if( !mxTable.is() )
-//                  rSet.DisableItem( nWhich );
-                break;
             default:
                 break;
         }
commit 4a98ceceae4bbe06b99d75ffd7c714ffdfe77e39
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Fri Nov 1 10:20:53 2019 +0200
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Fri Nov 1 10:34:28 2019 +0100

    Workaround for crash on macOS Catalina at least when built with Xcode 11
    
    For some unclear reason, for me at least, when I have built with Xcode
    11.1 or 11.2 and run on macOS Cataline, I run into a crash caused by
    boundless recursion related to the progress bar in the recovery
    dialog. Not setting mbProgressNeedsErase to true for the "NWF" seems
    to help.
    
    Whether this has some unintended visually bad side effect I don't
    know, but hey, it's just a progress bar, who cares if it in some
    circumstances doesn't look perfect?
    
    Change-Id: I6c990adde7689633b2c4b5aa42a4a07966565af2
    Reviewed-on: https://gerrit.libreoffice.org/81874
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <t...@collabora.com>
    Tested-by: Tor Lillqvist <t...@collabora.com>

diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx
index 4a23166a0fdc..45f9ba3546f3 100644
--- a/vcl/osx/salinst.cxx
+++ b/vcl/osx/salinst.cxx
@@ -324,7 +324,6 @@ VCLPLUG_OSX_PUBLIC SalInstance* create_SalInstance()
     ImplGetSVData()->maNWFData.mbNoFocusRects = true;
     ImplGetSVData()->maNWFData.mbNoActiveTabTextRaise = true;
     ImplGetSVData()->maNWFData.mbCenteredTabs = true;
-    ImplGetSVData()->maNWFData.mbProgressNeedsErase = true;
     ImplGetSVData()->maNWFData.mnStatusBarLowerRightOffset = 10;
 
     return pInst;
commit 713d2ec43710b8ff36cf43ae1f9eab686a296ca7
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Thu Oct 31 21:09:00 2019 +0100
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Fri Nov 1 10:32:30 2019 +0100

    check-elf-dynamic-objects: GTK3 drags in libharfbuzz.so.0
    
    ... now on Fedora 31; it looks quite stable ABI-wise so we can allow it.
    
    Change-Id: Ic24fa9bdac0d0ce765e3d3844ce4ddcc59c6c9da
    Reviewed-on: https://gerrit.libreoffice.org/81864
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@cib.de>

diff --git a/bin/check-elf-dynamic-objects b/bin/check-elf-dynamic-objects
index f64044dd1e49..640c80a7f079 100755
--- a/bin/check-elf-dynamic-objects
+++ b/bin/check-elf-dynamic-objects
@@ -93,7 +93,7 @@ x11whitelist="libX11.so.6 libXext.so.6 libSM.so.6 libICE.so.6 
libXinerama.so.1 l
 openglwhitelist="libGL.so.1"
 giowhitelist="libgio-2.0.so.0 libgobject-2.0.so.0 libgmodule-2.0.so.0 
libgthread-2.0.so.0 libglib-2.0.so.0 libdbus-glib-1.so.2 libdbus-1.so.3"
 gstreamerwhitelist="libgstaudio-1.0.so.0 libgstpbutils-1.0.so.0 
libgstvideo-1.0.so.0 libgstbase-1.0.so.0 libgstreamer-1.0.so.0"
-gtk3whitelist="libgtk-3.so.0 libgdk-3.so.0 libcairo-gobject.so.2 
libpangocairo-1.0.so.0 libfribidi.so.0 libatk-1.0.so.0 libcairo.so.2 
libgio-2.0.so.0 libpangoft2-1.0.so.0 libpango-1.0.so.0 libfontconfig.so.1 
libfreetype.so.6 libgdk_pixbuf-2.0.so.0 libgobject-2.0.so.0 libglib-2.0.so.0 
libgmodule-2.0.so.0 libgthread-2.0.so.0 libdbus-glib-1.so.2 libdbus-1.so.3"
+gtk3whitelist="libgtk-3.so.0 libgdk-3.so.0 libcairo-gobject.so.2 
libpangocairo-1.0.so.0 libfribidi.so.0 libatk-1.0.so.0 libcairo.so.2 
libgio-2.0.so.0 libpangoft2-1.0.so.0 libpango-1.0.so.0 libfontconfig.so.1 
libfreetype.so.6 libgdk_pixbuf-2.0.so.0 libgobject-2.0.so.0 libglib-2.0.so.0 
libgmodule-2.0.so.0 libgthread-2.0.so.0 libdbus-glib-1.so.2 libdbus-1.so.3 
libharfbuzz.so.0"
 qt5whitelist="libQt5Core.so.5 libQt5Gui.so.5 libQt5Network.so.5 
libQt5Widgets.so.5 libQt5X11Extras.so.5 libcairo.so.2 libglib-2.0.so.0 
libgobject-2.0.so.0 libxcb.so.1"
 kf5whitelist="libKF5ConfigCore.so.5 libKF5CoreAddons.so.5 libKF5I18n.so.5 
libKF5KIOCore.so.5 libKF5KIOFileWidgets.so.5 libKF5KIOWidgets.so.5 
libKF5WindowSystem.so.5"
 avahiwhitelist="libdbus-glib-1.so.2 libdbus-1.so.3 libgobject-2.0.so.0 
libgmodule-2.0.so.0 libgthread-2.0.so.0 libglib-2.0.so.0 libavahi-common.so.3 
libavahi-client.so.3"
commit 82c20b5b1aa76e57a173e0c857ec7f3d02bdda29
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Thu Oct 31 20:59:46 2019 +0100
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Fri Nov 1 10:32:22 2019 +0100

    coinmp: disable "glpk", whatever that is
    
    On Fedora 31, this happens in CppunitTest_sccomp_solver:
    
    - loading component library 
<file:///work/lo/master/instdir/program/libsolverlo.so> failed
    
    > nm -D instdir/program/libCbcSolver.so.3 | grep cbc_glp_prob
                     U cbc_glp_prob
    
    > grep -r COIN_HAS_GLPK workdir/UnpackedTarball/coinmp | grep config.h
    workdir/UnpackedTarball/coinmp/Osi/src/Osi/config.h:/* #undef COIN_HAS_GLPK 
*/
    workdir/UnpackedTarball/coinmp/Clp/src/config.h.in:#undef COIN_HAS_GLPK
    workdir/UnpackedTarball/coinmp/Cbc/src/config.h:#define COIN_HAS_GLPK 1
    workdir/UnpackedTarball/coinmp/CoinUtils/src/config.h.in:#undef 
COIN_HAS_GLPK
    
    Somehow 2 different configures in coinmp got different ideas about
    whether something named "glpk" is available.... no idea what that is,
    it looks like there's a "glpk-devel" package installed on the system,
    and i doubt that a dependency on that would be desirable.
    
    Change-Id: Ief01b6aedc692197c1a8fd6351aef4281e530e70
    Reviewed-on: https://gerrit.libreoffice.org/81863
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@cib.de>

diff --git a/external/coinmp/ExternalProject_coinmp.mk 
b/external/coinmp/ExternalProject_coinmp.mk
index f7362f6a1e1a..e2eeaf93ed8f 100644
--- a/external/coinmp/ExternalProject_coinmp.mk
+++ b/external/coinmp/ExternalProject_coinmp.mk
@@ -33,6 +33,7 @@ $(call gb_ExternalProject_get_state_target,coinmp,build) :
                        $(if $(DISABLE_DYNLOADING),--disable-shared) \
                        --disable-bzlib \
                        $(if $(filter 
MACOSX,$(OS)),--prefix=/@.__________________________________________________OOO)
 \
+                       --without-glpk \
                        --enable-dependency-linking F77=unavailable \
                        $(if $(filter LINUX,$(OS)), \
                                'LDFLAGS=-Wl$(COMMA)-z$(COMMA)origin \
commit 5727f7262d48864ec27aa190631284af7d2a7ce8
Author:     Katarina Behrens <katarina.behr...@cib.de>
AuthorDate: Wed Oct 30 14:32:17 2019 +0100
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Fri Nov 1 10:30:09 2019 +0100

    crashtesting: fix creating increments array in tdf106848-1.odt
    
    else duplicate indexes happen and sort algorithm falls flat on
    its face
    
    Change-Id: I2b79e8df0f0a8e68117029630c0e026b8c202b02
    Reviewed-on: https://gerrit.libreoffice.org/81775
    Reviewed-by: Michael Stahl <michael.st...@cib.de>
    Tested-by: Jenkins

diff --git a/svx/source/svdraw/svdpage.cxx b/svx/source/svdraw/svdpage.cxx
index a6cef0633542..ea99495edc24 100644
--- a/svx/source/svdraw/svdpage.cxx
+++ b/svx/source/svdraw/svdpage.cxx
@@ -627,29 +627,25 @@ void SdrObjList::sort( std::vector<sal_Int32>& sortOrder)
         // example aShapesWithTextbox [0 2]
     }
 
-    aIncrements.push_back(0);
-    aDuplicates.push_back(sortOrder[0]);
+    for (size_t i = 0; i< sortOrder.size(); ++i)
+    {
 
-    // corner case: 1st shape is a textbox, add it twice
-    // otherwise sortOrder loop below will skip it
-    if (aShapesWithTextbox.count(sortOrder[0]) > 0)
-        aDuplicates.push_back(sortOrder[0]);
+         if (aShapesWithTextbox.count(sortOrder[i]) > 0)
+             aDuplicates.push_back(sortOrder[i]);
 
-    for (size_t i = 1; i< sortOrder.size(); ++i)
-    {
          aDuplicates.push_back(sortOrder[i]);
 
-         if (aShapesWithTextbox.count(sortOrder[i]) > 0)
-         {
+         // example aDuplicates [2 2 0 0 1]
+    }
+
+    aIncrements.push_back(0);
+    for (size_t i = 1; i< sortOrder.size(); ++i)
+    {
+         if (aShapesWithTextbox.count(i))
              aIncrements.push_back(aIncrements[i-1] + 1 );
-             aDuplicates.push_back(sortOrder[i]);
-         }
          else
-         {
              aIncrements.push_back(aIncrements[i-1]);
-         }
 
-         // example aDuplicates [2 2 0 0 1]
          // example aIncrements [0 1 1]
     }
 
commit ab3ec039bf5ffc1fb6f6948c1a1a7da2acad30eb
Author:     Tor Lillqvist <t...@collabora.com>
AuthorDate: Fri Nov 1 09:57:08 2019 +0200
Commit:     Tor Lillqvist <t...@collabora.com>
CommitDate: Fri Nov 1 09:43:51 2019 +0100

    Accept iOS SDK 13.2
    
    Change-Id: I5d42a60a257661f39d1c9af6299ca3278f783d2b
    Reviewed-on: https://gerrit.libreoffice.org/81870
    Tested-by: Jenkins
    Reviewed-by: Tor Lillqvist <t...@collabora.com>
    Tested-by: Tor Lillqvist <t...@collabora.com>

diff --git a/configure.ac b/configure.ac
index ebd4f785c202..464129d6cc95 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3019,8 +3019,8 @@ dnl 
===================================================================
 
 if test $_os = iOS; then
     AC_MSG_CHECKING([what iOS SDK to use])
-    current_sdk_ver=13.1
-    older_sdk_vers="13.0 12.4 12.2"
+    current_sdk_ver=13.2
+    older_sdk_vers="13.1 13.0 12.4 12.2"
     if test "$enable_ios_simulator" = "yes"; then
         platform=iPhoneSimulator
         versionmin=-mios-simulator-version-min=12.2
commit 8eba06afac375db28022d320d19943d8a129c436
Author:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
AuthorDate: Thu Oct 31 11:53:00 2019 +0100
Commit:     Samuel Mehrbrodt <samuel.mehrbr...@cib.de>
CommitDate: Fri Nov 1 09:01:15 2019 +0100

    tdf#127921 Don't change slides when clicking in Slide sorter view
    
    Change-Id: I21dfe232234d29dd110771a9edf9d4b9b0f6d53b
    Reviewed-on: https://gerrit.libreoffice.org/81833
    Tested-by: Jenkins
    Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de>

diff --git a/sdext/source/presenter/PresenterWindowManager.cxx 
b/sdext/source/presenter/PresenterWindowManager.cxx
index f9d22ca0a548..5f04037c04a5 100644
--- a/sdext/source/presenter/PresenterWindowManager.cxx
+++ b/sdext/source/presenter/PresenterWindowManager.cxx
@@ -273,7 +273,8 @@ void SAL_CALL PresenterWindowManager::windowPaint (const 
awt::PaintEvent& rEvent
 
 void SAL_CALL PresenterWindowManager::mousePressed (const 
css::awt::MouseEvent&)
 {
-    mbIsMouseClickPending = true;
+    if (!mbIsSlideSorterActive) // tdf#127921
+        mbIsMouseClickPending = true;
 }
 
 void SAL_CALL PresenterWindowManager::mouseReleased (const 
css::awt::MouseEvent& rEvent)
commit a71edbd296c640fb62b99d057ee0142e2a84a8a9
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Thu Oct 31 16:16:24 2019 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Nov 1 08:53:23 2019 +0100

    loplugin:finalclasses in sc/inc
    
    Change-Id: I6a08a86262deae4bed3a05f77d3041a568f23595
    Reviewed-on: https://gerrit.libreoffice.org/81853
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/sc/inc/AccessibleFilterMenuItem.hxx 
b/sc/inc/AccessibleFilterMenuItem.hxx
index 6e8784b8f535..20003ed13444 100644
--- a/sc/inc/AccessibleFilterMenuItem.hxx
+++ b/sc/inc/AccessibleFilterMenuItem.hxx
@@ -31,7 +31,7 @@ class ScMenuFloatingWindow;
 typedef ::cppu::ImplHelper1<
     css::accessibility::XAccessibleAction > ScAccessibleFilterMenuItem_BASE;
 
-class ScAccessibleFilterMenuItem :
+class ScAccessibleFilterMenuItem final :
     public ScAccessibleContextBase,
     public ScAccessibleFilterMenuItem_BASE
 {
@@ -75,17 +75,15 @@ public:
 
     /// Non-UNO Methods
 
-protected:
+private:
 
     virtual tools::Rectangle GetBoundingBoxOnScreen() const override;
 
     virtual tools::Rectangle GetBoundingBox() const override;
 
-private:
     bool isSelected() const;
     void updateStateSet();
 
-private:
     css::uno::Reference< css::accessibility::XAccessibleStateSet > mxStateSet;
 
     VclPtr<ScMenuFloatingWindow> mpWindow;
diff --git a/sc/inc/AccessibleFilterTopWindow.hxx 
b/sc/inc/AccessibleFilterTopWindow.hxx
index 8ef5af28fa81..90dd9bbbfd30 100644
--- a/sc/inc/AccessibleFilterTopWindow.hxx
+++ b/sc/inc/AccessibleFilterTopWindow.hxx
@@ -24,7 +24,7 @@
 
 class ScCheckListMenuWindow;
 
-class ScAccessibleFilterTopWindow : public ScAccessibleFilterMenu
+class ScAccessibleFilterTopWindow final : public ScAccessibleFilterMenu
 {
 public:
     ScAccessibleFilterTopWindow(
diff --git a/sc/inc/AccessibleGlobal.hxx b/sc/inc/AccessibleGlobal.hxx
index 9cc670e4df7c..df699e462937 100644
--- a/sc/inc/AccessibleGlobal.hxx
+++ b/sc/inc/AccessibleGlobal.hxx
@@ -26,7 +26,7 @@
 #include <set>
 
 /// Generic XAccessibleStateSet implementation.
-class ScAccessibleStateSet : public ::cppu::WeakImplHelper< 
css::accessibility::XAccessibleStateSet >
+class ScAccessibleStateSet final : public ::cppu::WeakImplHelper< 
css::accessibility::XAccessibleStateSet >
 {
 public:
     ScAccessibleStateSet();
diff --git a/sc/inc/NumberFormatControl.hxx b/sc/inc/NumberFormatControl.hxx
index a0c1b49adba4..84db53607090 100644
--- a/sc/inc/NumberFormatControl.hxx
+++ b/sc/inc/NumberFormatControl.hxx
@@ -25,7 +25,7 @@
 
 namespace sc {
 
-class SC_DLLPUBLIC ScNumberFormatControl : public SfxToolBoxControl
+class SC_DLLPUBLIC ScNumberFormatControl final : public SfxToolBoxControl
 {
 public:
     SFX_DECL_TOOLBOX_CONTROL();
diff --git a/sc/inc/PivotTableDataProvider.hxx 
b/sc/inc/PivotTableDataProvider.hxx
index 4f803e204e27..90c98fc2f056 100644
--- a/sc/inc/PivotTableDataProvider.hxx
+++ b/sc/inc/PivotTableDataProvider.hxx
@@ -44,7 +44,7 @@ typedef cppu::WeakImplHelper<css::chart2::data::XDataProvider,
                              css::util::XModifyBroadcaster>
             PivotTableDataProvider_Base;
 
-class PivotTableDataProvider : public PivotTableDataProvider_Base, public 
SfxListener
+class PivotTableDataProvider final : public PivotTableDataProvider_Base, 
public SfxListener
 {
 public:
 
diff --git a/sc/inc/PivotTableDataSequence.hxx 
b/sc/inc/PivotTableDataSequence.hxx
index b834e4ae81c5..7d6d04d4c3f1 100644
--- a/sc/inc/PivotTableDataSequence.hxx
+++ b/sc/inc/PivotTableDataSequence.hxx
@@ -79,7 +79,7 @@ typedef cppu::WeakImplHelper<css::chart2::data::XDataSequence,
                              css::lang::XServiceInfo>
         PivotTableDataSequence_Base;
 
-class PivotTableDataSequence : public PivotTableDataSequence_Base, public 
SfxListener
+class PivotTableDataSequence final : public PivotTableDataSequence_Base, 
public SfxListener
 {
 public:
     explicit PivotTableDataSequence(ScDocument* pDocument, OUString const & 
sPivotTableName,
diff --git a/sc/inc/PivotTableDataSource.hxx b/sc/inc/PivotTableDataSource.hxx
index a98f977cc0ec..b5c046683926 100644
--- a/sc/inc/PivotTableDataSource.hxx
+++ b/sc/inc/PivotTableDataSource.hxx
@@ -26,7 +26,7 @@ typedef cppu::WeakImplHelper<css::chart2::data::XDataSource,
                              css::lang::XServiceInfo>
             PivotTableDataSource_Base;
 
-class PivotTableDataSource : public PivotTableDataSource_Base, public 
SfxListener
+class PivotTableDataSource final : public PivotTableDataSource_Base, public 
SfxListener
 {
 public:
     explicit PivotTableDataSource(const 
std::vector<css::uno::Reference<css::chart2::data::XLabeledDataSequence>>& 
xLabeledSequence);
diff --git a/sc/inc/TablePivotChart.hxx b/sc/inc/TablePivotChart.hxx
index c357c6fad230..983aead0317d 100644
--- a/sc/inc/TablePivotChart.hxx
+++ b/sc/inc/TablePivotChart.hxx
@@ -32,7 +32,7 @@ typedef 
cppu::WeakComponentImplHelper<css::table::XTablePivotChart,
                                       css::lang::XServiceInfo>
         TablePivotChart_Base;
 
-class TablePivotChart : public cppu::BaseMutex,
+class TablePivotChart final : public cppu::BaseMutex,
                         public TablePivotChart_Base,
                         public SfxListener
 {
diff --git a/sc/inc/TablePivotCharts.hxx b/sc/inc/TablePivotCharts.hxx
index 2e8d8f4deb8e..b37ae04dd715 100644
--- a/sc/inc/TablePivotCharts.hxx
+++ b/sc/inc/TablePivotCharts.hxx
@@ -28,7 +28,7 @@ typedef cppu::WeakImplHelper<css::table::XTablePivotCharts,
                              css::lang::XServiceInfo>
         TablePivotCharts_Base;
 
-class TablePivotCharts : public TablePivotCharts_Base, public SfxListener
+class TablePivotCharts final : public TablePivotCharts_Base, public SfxListener
 {
 private:
     ScDocShell* m_pDocShell;
diff --git a/sc/inc/addincfg.hxx b/sc/inc/addincfg.hxx
index 9cca48acbf58..0a279c4e8f5d 100644
--- a/sc/inc/addincfg.hxx
+++ b/sc/inc/addincfg.hxx
@@ -22,7 +22,7 @@
 
 #include <unotools/configitem.hxx>
 
-class ScAddInCfg : public utl::ConfigItem
+class ScAddInCfg final : public utl::ConfigItem
 {
 private:
     virtual void    ImplCommit() override;
diff --git a/sc/inc/addruno.hxx b/sc/inc/addruno.hxx
index 7503f865677c..6b7aea7c87b4 100644
--- a/sc/inc/addruno.hxx
+++ b/sc/inc/addruno.hxx
@@ -28,7 +28,7 @@
 
 #include <docsh.hxx>
 
-class ScAddressConversionObj : public ::cppu::WeakImplHelper<
+class ScAddressConversionObj final : public ::cppu::WeakImplHelper<
                                     css::beans::XPropertySet,
                                     css::lang::XServiceInfo >,
                                public SfxListener
diff --git a/sc/inc/afmtuno.hxx b/sc/inc/afmtuno.hxx
index ff997b6e95ca..d8100a1d3bd3 100644
--- a/sc/inc/afmtuno.hxx
+++ b/sc/inc/afmtuno.hxx
@@ -38,7 +38,7 @@ class ScAutoFormatObj;
 
 #define SC_AFMTOBJ_INVALID  USHRT_MAX
 
-class ScAutoFormatsObj : public ::cppu::WeakImplHelper<
+class ScAutoFormatsObj final : public ::cppu::WeakImplHelper<
                             css::container::XNameContainer,
                             css::container::XEnumerationAccess,
                             css::container::XIndexAccess,
diff --git a/sc/inc/appluno.hxx b/sc/inc/appluno.hxx
index 0e923500cb34..3f042c0b507e 100644
--- a/sc/inc/appluno.hxx
+++ b/sc/inc/appluno.hxx
@@ -78,7 +78,7 @@ OUString ScXMLImport_Settings_getImplementationName() throw();
 css::uno::Reference< css::uno::XInterface > 
ScXMLImport_Settings_createInstance(
             const css::uno::Reference< css::lang::XMultiServiceFactory > & 
rSMgr );
 
-class ScSpreadsheetSettings : public cppu::WeakImplHelper<
+class ScSpreadsheetSettings final : public cppu::WeakImplHelper<
                                         css::sheet::XGlobalSheetSettings,
                                         css::beans::XPropertySet,
                                         css::lang::XServiceInfo>
@@ -204,7 +204,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScRecentFunctionsObj : public cppu::WeakImplHelper<
+class ScRecentFunctionsObj final : public cppu::WeakImplHelper<
                                         css::sheet::XRecentFunctions,
                                         css::lang::XServiceInfo>
 {
@@ -223,7 +223,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScFunctionListObj : public cppu::WeakImplHelper<
+class ScFunctionListObj final : public cppu::WeakImplHelper<
                                         css::sheet::XFunctionDescriptions,
                                         css::container::XEnumerationAccess,
                                         css::container::XNameAccess,
diff --git a/sc/inc/arealink.hxx b/sc/inc/arealink.hxx
index cc98b34c3aba..209bb4a3d0de 100644
--- a/sc/inc/arealink.hxx
+++ b/sc/inc/arealink.hxx
@@ -28,7 +28,7 @@
 class SfxObjectShell;
 class ScDocShell;
 
-class SC_DLLPUBLIC ScAreaLink : public ::sfx2::SvBaseLink, public 
ScRefreshTimer
+class SC_DLLPUBLIC ScAreaLink final : public ::sfx2::SvBaseLink, public 
ScRefreshTimer
 {
 private:
     ScDocShell*     m_pDocSh;
diff --git a/sc/inc/attrib.hxx b/sc/inc/attrib.hxx
index 67325fdb8d43..7b9944094d04 100644
--- a/sc/inc/attrib.hxx
+++ b/sc/inc/attrib.hxx
@@ -52,7 +52,7 @@ namespace editeng { class SvxBorderLine; }
 
 bool SC_DLLPUBLIC ScHasPriority( const ::editeng::SvxBorderLine* pThis, const 
::editeng::SvxBorderLine* pOther );
 
-class SC_DLLPUBLIC ScMergeAttr: public SfxPoolItem
+class SC_DLLPUBLIC ScMergeAttr final : public SfxPoolItem
 {
     SCCOL       nColMerge;
     SCROW       nRowMerge;
@@ -80,7 +80,7 @@ public:
     virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
 };
 
-class SC_DLLPUBLIC ScMergeFlagAttr: public SfxInt16Item
+class SC_DLLPUBLIC ScMergeFlagAttr final : public SfxInt16Item
 {
 public:
             ScMergeFlagAttr();
@@ -110,7 +110,7 @@ public:
     virtual void dumpAsXml(xmlTextWriterPtr pWriter) const override;
 };
 
-class SC_DLLPUBLIC ScProtectionAttr: public SfxPoolItem
+class SC_DLLPUBLIC ScProtectionAttr final : public SfxPoolItem
 {
     bool        bProtection;    ///< protect cell
     bool        bHideFormula;   ///< hide formula
@@ -164,7 +164,7 @@ public:
 #define SC_HF_CENTERAREA 2
 #define SC_HF_RIGHTAREA  3
 
-class SC_DLLPUBLIC ScPageHFItem : public SfxPoolItem
+class SC_DLLPUBLIC ScPageHFItem final : public SfxPoolItem
 {
     std::unique_ptr<EditTextObject> pLeftArea;
     std::unique_ptr<EditTextObject> pCenterArea;
@@ -192,7 +192,7 @@ public:
 
 // page format item: contents of header and footer
 
-class SC_DLLPUBLIC ScViewObjectModeItem: public SfxEnumItem<ScVObjMode>
+class SC_DLLPUBLIC ScViewObjectModeItem final : public SfxEnumItem<ScVObjMode>
 {
 public:
                 ScViewObjectModeItem( sal_uInt16 nWhich );
@@ -219,7 +219,7 @@ const sal_uInt8 SC_MID_PAGE_SCALETO_WIDTH    = 1;
 const sal_uInt8 SC_MID_PAGE_SCALETO_HEIGHT   = 2;
 
 /** Contains the "scale to width/height" attribute in page styles. */
-class SC_DLLPUBLIC ScPageScaleToItem : public SfxPoolItem
+class SC_DLLPUBLIC ScPageScaleToItem final : public SfxPoolItem
 {
 public:
     /** Default c'tor sets the width and height to 0. */
@@ -261,7 +261,7 @@ private:
 
 typedef o3tl::sorted_vector<sal_uInt32> ScCondFormatIndexes;
 
-class ScCondFormatItem : public SfxPoolItem
+class ScCondFormatItem final : public SfxPoolItem
 {
 public:
     explicit ScCondFormatItem();
diff --git a/sc/inc/brdcst.hxx b/sc/inc/brdcst.hxx
index 34d7d0394a7c..c8ccdb36f1a4 100644
--- a/sc/inc/brdcst.hxx
+++ b/sc/inc/brdcst.hxx
@@ -22,7 +22,7 @@
 #include "address.hxx"
 #include <svl/hint.hxx>
 
-class ScHint : public SfxHint
+class ScHint final : public SfxHint
 {
     ScAddress   aAddress;
 
@@ -32,7 +32,7 @@ public:
           ScAddress&    GetAddress()       { return aAddress; }
 };
 
-class ScAreaChangedHint : public SfxHint
+class ScAreaChangedHint final : public SfxHint
 {
 private:
     ScRange const aNewRange;
diff --git a/sc/inc/bulkdatahint.hxx b/sc/inc/bulkdatahint.hxx
index 913019edf3f9..6ff94227484a 100644
--- a/sc/inc/bulkdatahint.hxx
+++ b/sc/inc/bulkdatahint.hxx
@@ -19,7 +19,7 @@ namespace sc {
 
 class ColumnSpanSet;
 
-class BulkDataHint : public SfxHint
+class BulkDataHint final : public SfxHint
 {
     struct Impl;
     std::unique_ptr<Impl> mpImpl;
diff --git a/sc/inc/cellsuno.hxx b/sc/inc/cellsuno.hxx
index 0c6790f39eb1..96d7000cef67 100644
--- a/sc/inc/cellsuno.hxx
+++ b/sc/inc/cellsuno.hxx
@@ -117,7 +117,7 @@ struct SfxItemPropertySimpleEntry;
 
 namespace editeng { class SvxBorderLine; }
 
-class ScLinkListener : public SvtListener
+class ScLinkListener final : public SvtListener
 {
     Link<const SfxHint&,void> const  aLink;
 public:
@@ -382,7 +382,7 @@ public:
     UNO3_GETIMPLEMENTATION_DECL(ScCellRangesBase)
 };
 
-class SC_DLLPUBLIC ScCellRangesObj : public ScCellRangesBase,
+class SC_DLLPUBLIC ScCellRangesObj final : public ScCellRangesBase,
                         public css::sheet::XSheetCellRangeContainer,
                         public css::container::XNameContainer,
                         public css::container::XEnumerationAccess
@@ -629,7 +629,7 @@ public:
 
 //! really derive cell from range?
 
-class SC_DLLPUBLIC ScCellObj : public ScCellRangeObj,
+class SC_DLLPUBLIC ScCellObj final : public ScCellRangeObj,
                     public css::text::XText,
                     public css::container::XEnumerationAccess,
                     public css::table::XCell2,
@@ -654,7 +654,6 @@ private:
     css::table::CellContentType GetContentType_Impl();
     sal_Int32 GetResultType_Impl() const;
 
-protected:
     virtual const SfxItemPropertyMap& GetItemPropertyMap() override;
     virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
                                 css::uno::Any& ) override;
@@ -965,13 +964,12 @@ public:
     virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() 
override;
 };
 
-class ScTableColumnObj : public ScCellRangeObj,
+class ScTableColumnObj final : public ScCellRangeObj,
                          public css::container::XNamed
 {
 private:
     const SfxItemPropertySet*       pColPropSet;
 
-protected:
     virtual const SfxItemPropertyMap& GetItemPropertyMap() override;
     virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
                                 css::uno::Any& ) override;
@@ -1005,12 +1003,11 @@ public:
     virtual css::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() 
override;
 };
 
-class ScTableRowObj : public ScCellRangeObj
+class ScTableRowObj final : public ScCellRangeObj
 {
 private:
     const SfxItemPropertySet*       pRowPropSet;
 
-protected:
     virtual const SfxItemPropertyMap& GetItemPropertyMap() override;
     virtual void GetOnePropertyValue( const SfxItemPropertySimpleEntry* pEntry,
                                 css::uno::Any& ) override;
@@ -1031,7 +1028,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScCellsObj : public cppu::WeakImplHelper<
+class ScCellsObj final : public cppu::WeakImplHelper<
                             css::container::XEnumerationAccess,
                             css::lang::XServiceInfo >,
                         public SfxListener
@@ -1060,7 +1057,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScCellsEnumeration : public cppu::WeakImplHelper<
+class ScCellsEnumeration final : public cppu::WeakImplHelper<
                                 css::container::XEnumeration,
                                 css::lang::XServiceInfo >,
                             public SfxListener
@@ -1092,7 +1089,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScCellFormatsObj : public cppu::WeakImplHelper<
+class ScCellFormatsObj final : public cppu::WeakImplHelper<
                             css::container::XIndexAccess,
                             css::container::XEnumerationAccess,
                             css::lang::XServiceInfo >,
@@ -1129,7 +1126,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScCellFormatsEnumeration : public cppu::WeakImplHelper<
+class ScCellFormatsEnumeration final : public cppu::WeakImplHelper<
                                     css::container::XEnumeration,
                                     css::lang::XServiceInfo >,
                                  public SfxListener
@@ -1164,7 +1161,7 @@ public:
 
 typedef std::vector< ScRangeList > ScMyRangeLists;
 
-class ScUniqueCellFormatsObj : public cppu::WeakImplHelper<
+class ScUniqueCellFormatsObj final : public cppu::WeakImplHelper<
                             css::container::XIndexAccess,
                             css::container::XEnumerationAccess,
                             css::lang::XServiceInfo >,
@@ -1199,7 +1196,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScUniqueCellFormatsEnumeration : public cppu::WeakImplHelper<
+class ScUniqueCellFormatsEnumeration final : public cppu::WeakImplHelper<
                                     css::container::XEnumeration,
                                     css::lang::XServiceInfo >,
                                  public SfxListener
diff --git a/sc/inc/chart2uno.hxx b/sc/inc/chart2uno.hxx
index ae1226c30824..ca5c1f7ffe6d 100644
--- a/sc/inc/chart2uno.hxx
+++ b/sc/inc/chart2uno.hxx
@@ -53,7 +53,7 @@ namespace com { namespace sun { namespace star { namespace 
chart2 { namespace da
 class ScDocument;
 
 // DataProvider
-class SC_DLLPUBLIC ScChart2DataProvider : public
+class SC_DLLPUBLIC ScChart2DataProvider final : public
                 ::cppu::WeakImplHelper<
                     css::chart2::data::XDataProvider,
                     css::chart2::data::XSheetDataProvider,
@@ -149,7 +149,7 @@ private:
 };
 
 // DataSource
-class ScChart2DataSource : public
+class ScChart2DataSource final : public
                 ::cppu::WeakImplHelper<
                     css::chart2::data::XDataSource,
                     css::lang::XServiceInfo>,
@@ -187,7 +187,7 @@ private:
 };
 
 // DataSequence
-class ScChart2DataSequence : public
+class ScChart2DataSequence final : public
                 ::cppu::WeakImplHelper<
                     css::chart2::data::XDataSequence,
                     css::chart2::data::XTextualDataSequence,
@@ -290,7 +290,7 @@ private:
     DECL_LINK( ValueListenerHdl, const SfxHint&, void );
 
 private:
-    class ExternalRefListener : public ScExternalRefManager::LinkListener
+    class ExternalRefListener final : public ScExternalRefManager::LinkListener
     {
     public:
         ExternalRefListener(ScChart2DataSequence& rParent, ScDocument* pDoc);
@@ -338,7 +338,7 @@ private:
         Item();
     };
 
-    class HiddenRangeListener : public ScChartHiddenRangeListener
+    class HiddenRangeListener final : public ScChartHiddenRangeListener
     {
     public:
         HiddenRangeListener(ScChart2DataSequence& rParent);
diff --git a/sc/inc/chartlis.hxx b/sc/inc/chartlis.hxx
index 846259d678fa..1b49d168f826 100644
--- a/sc/inc/chartlis.hxx
+++ b/sc/inc/chartlis.hxx
@@ -38,10 +38,10 @@ class Timer;
 class ScDocument;
 class ScChartUnoData;
 
-class SC_DLLPUBLIC ScChartListener : public SvtListener
+class SC_DLLPUBLIC ScChartListener final : public SvtListener
 {
 public:
-    class ExternalRefListener : public ScExternalRefManager::LinkListener
+    class ExternalRefListener final : public ScExternalRefManager::LinkListener
     {
     public:
         ExternalRefListener(ScChartListener& rParent, ScDocument* pDoc);
diff --git a/sc/inc/chartuno.hxx b/sc/inc/chartuno.hxx
index 3e40ead05d40..63b32afc79bc 100644
--- a/sc/inc/chartuno.hxx
+++ b/sc/inc/chartuno.hxx
@@ -39,7 +39,7 @@
 class ScDocShell;
 class ScChartObj;
 
-class ScChartsObj : public cppu::WeakImplHelper<
+class ScChartsObj final : public cppu::WeakImplHelper<
                             css::table::XTableCharts,
                             css::container::XEnumerationAccess,
                             css::container::XIndexAccess,
diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx
index 730cedc20cd0..fcaef910b69c 100644
--- a/sc/inc/chgtrack.hxx
+++ b/sc/inc/chgtrack.hxx
@@ -400,7 +400,7 @@ public:
 //  ScChangeActionDel
 class SAL_DLLPUBLIC_RTTI ScChangeActionMove;
 
-class ScChangeActionDelMoveEntry : public ScChangeActionLinkEntry
+class ScChangeActionDelMoveEntry final : public ScChangeActionLinkEntry
 {
     friend class ScChangeActionDel;
     friend class ScChangeTrack;
@@ -760,7 +760,7 @@ public:
 };
 
 //  ScChangeActionReject
-class ScChangeActionReject : public ScChangeAction
+class ScChangeActionReject final : public ScChangeAction
 {
     friend class ScChangeTrack;
     friend class ScChangeActionContent;
diff --git a/sc/inc/clipcontext.hxx b/sc/inc/clipcontext.hxx
index 6752104fb34c..e2b99ba5bf34 100644
--- a/sc/inc/clipcontext.hxx
+++ b/sc/inc/clipcontext.hxx
@@ -43,7 +43,7 @@ public:
     ColumnBlockPositionSet* getBlockPositionSet() { return mpSet.get(); }
 };
 
-class CopyFromClipContext : public ClipContextBase
+class CopyFromClipContext final : public ClipContextBase
 {
     SCCOL mnDestCol1;
     SCCOL mnDestCol2;
@@ -131,7 +131,7 @@ public:
     bool isDateCell( const ScColumn& rCol, SCROW nRow ) const;
 };
 
-class CopyToClipContext : public ClipContextBase
+class CopyToClipContext final : public ClipContextBase
 {
     bool const mbKeepScenarioFlags:1;
 
@@ -142,7 +142,7 @@ public:
     bool isKeepScenarioFlags() const;
 };
 
-class CopyToDocContext : public ClipContextBase
+class CopyToDocContext final : public ClipContextBase
 {
     bool mbStartListening;
 
@@ -154,7 +154,7 @@ public:
     bool isStartListening() const;
 };
 
-class MixDocContext : public ClipContextBase
+class MixDocContext final : public ClipContextBase
 {
 public:
     MixDocContext(ScDocument& rDoc);
diff --git a/sc/inc/colorscale.hxx b/sc/inc/colorscale.hxx
index 236dac698c54..8a6639de636c 100644
--- a/sc/inc/colorscale.hxx
+++ b/sc/inc/colorscale.hxx
@@ -250,7 +250,7 @@ private:
 
 typedef std::vector<std::unique_ptr<ScColorScaleEntry>> ScColorScaleEntries;
 
-class SC_DLLPUBLIC ScColorScaleFormat : public ScColorFormat
+class SC_DLLPUBLIC ScColorScaleFormat final : public ScColorFormat
 {
 private:
     ScColorScaleEntries maColorScales;
@@ -294,7 +294,7 @@ public:
     void EnsureSize();
 };
 
-class SC_DLLPUBLIC ScDataBarFormat : public ScColorFormat
+class SC_DLLPUBLIC ScDataBarFormat final : public ScColorFormat
 {
 public:
     ScDataBarFormat(ScDocument* pDoc);
@@ -355,7 +355,7 @@ struct ScIconSetFormatData
     ScIconSetFormatData& operator=(ScIconSetFormatData const&) = delete; 
//TODO?
 };
 
-class SC_DLLPUBLIC ScIconSetFormat : public ScColorFormat
+class SC_DLLPUBLIC ScIconSetFormat final : public ScColorFormat
 {
 public:
     ScIconSetFormat(ScDocument* pDoc);
diff --git a/sc/inc/compressedarray.hxx b/sc/inc/compressedarray.hxx
index bfcb07888318..593aeb6e868d 100644
--- a/sc/inc/compressedarray.hxx
+++ b/sc/inc/compressedarray.hxx
@@ -163,7 +163,7 @@ const D& ScCompressedArray<A,D>::GetNextValue( size_t& 
nIndex, A& nEnd ) const
 /** The data type represents bits, manageable by bitwise operations.
  */
 
-template< typename A, typename D > class ScBitMaskCompressedArray : public 
ScCompressedArray<A,D>
+template< typename A, typename D > class ScBitMaskCompressedArray final : 
public ScCompressedArray<A,D>
 {
 public:
                                 ScBitMaskCompressedArray( A nMaxAccessP,
diff --git a/sc/inc/conditio.hxx b/sc/inc/conditio.hxx
index 0ab1d114f8f4..40cfdffc2f21 100644
--- a/sc/inc/conditio.hxx
+++ b/sc/inc/conditio.hxx
@@ -180,7 +180,7 @@ inline std::basic_ostream<charT, traits> & operator 
<<(std::basic_ostream<charT,
     return stream;
 }
 
-class ScFormulaListener : public SvtListener
+class ScFormulaListener final : public SvtListener
 {
 private:
     mutable bool mbDirty;
@@ -446,7 +446,7 @@ private:
 };
 
 //  single condition entry for conditional formatting
-class SC_DLLPUBLIC ScCondFormatEntry : public ScConditionEntry
+class SC_DLLPUBLIC ScCondFormatEntry final : public ScConditionEntry
 {
     OUString aStyleName;
     Type eCondFormatType = Type::Condition;
@@ -476,7 +476,7 @@ public:
     virtual ScFormatEntry* Clone(ScDocument* pDoc) const override;
     virtual Type GetType() const override { return eCondFormatType; }
 
-protected:
+private:
     virtual void    DataChanged() const override;
 };
 
@@ -501,7 +501,7 @@ enum ScCondFormatDateType
 
 }
 
-class SC_DLLPUBLIC ScCondDateFormatEntry : public ScFormatEntry
+class SC_DLLPUBLIC ScCondDateFormatEntry final : public ScFormatEntry
 {
 public:
     ScCondDateFormatEntry(ScDocument* pDoc);
diff --git a/sc/inc/confuno.hxx b/sc/inc/confuno.hxx
index 6aa970e3efcf..7665ddac2497 100644
--- a/sc/inc/confuno.hxx
+++ b/sc/inc/confuno.hxx
@@ -28,7 +28,7 @@
 
 class ScDocShell;
 
-class ScDocumentConfiguration : public cppu::WeakImplHelper<
+class ScDocumentConfiguration final : public cppu::WeakImplHelper<
                                         css::beans::XPropertySet,
                                         css::lang::XServiceInfo>,
                                 public SfxListener
diff --git a/sc/inc/cursuno.hxx b/sc/inc/cursuno.hxx
index 256d7690c66d..861fb075bdd7 100644
--- a/sc/inc/cursuno.hxx
+++ b/sc/inc/cursuno.hxx
@@ -25,7 +25,7 @@
 #include <com/sun/star/sheet/XSheetCellCursor.hpp>
 #include <com/sun/star/sheet/XUsedAreaCursor.hpp>
 
-class ScCellCursorObj : public ScCellRangeObj,
+class ScCellCursorObj final : public ScCellRangeObj,
                         public css::sheet::XSheetCellCursor,
                         public css::sheet::XUsedAreaCursor,
                         public css::table::XCellCursor
diff --git a/sc/inc/dapiuno.hxx b/sc/inc/dapiuno.hxx
index e73e824c309c..12a8e9d4db1c 100644
--- a/sc/inc/dapiuno.hxx
+++ b/sc/inc/dapiuno.hxx
@@ -76,7 +76,7 @@ public:
 };
 
 /** DataPilotTables collection per sheet. */
-class ScDataPilotTablesObj : public cppu::WeakImplHelper<
+class ScDataPilotTablesObj final : public cppu::WeakImplHelper<
                                         css::sheet::XDataPilotTables,
                                         css::container::XEnumerationAccess,
                                         css::container::XIndexAccess,
@@ -202,7 +202,7 @@ public:
                             // XServiceInfo is in derived classes
 };
 
-class ScDataPilotDescriptor : public ScDataPilotDescriptorBase
+class ScDataPilotDescriptor final : public ScDataPilotDescriptorBase
 {
 private:
     std::unique_ptr<ScDPObject>  mpDPObject;
@@ -339,7 +339,7 @@ typedef ::cppu::WeakImplHelper
 ScDataPilotFieldsObjImpl;
 
 /** Collection of all DataPilot fields, or of all fields from a specific 
dimension. */
-class ScDataPilotFieldsObj : public ScDataPilotChildObjBase, public 
ScDataPilotFieldsObjImpl
+class ScDataPilotFieldsObj final : public ScDataPilotChildObjBase, public 
ScDataPilotFieldsObjImpl
 {
 public:
     explicit            ScDataPilotFieldsObj(
@@ -498,7 +498,7 @@ ScDataPilotFieldGroupsObjImpl;
     field. Grouping info has to be written back with the GroupInfo property of
     the DataPilot field after modifying this object.
  */
-class ScDataPilotFieldGroupsObj : public ScDataPilotFieldGroupsObjImpl
+class ScDataPilotFieldGroupsObj final : public ScDataPilotFieldGroupsObjImpl
 {
 public:
     explicit            ScDataPilotFieldGroupsObj( const ScFieldGroups& 
rGroups );
@@ -558,7 +558,7 @@ typedef ::cppu::WeakImplHelper
 >
 ScDataPilotFieldGroupObjImpl;
 
-class ScDataPilotFieldGroupObj : public ScDataPilotFieldGroupObjImpl
+class ScDataPilotFieldGroupObj final : public ScDataPilotFieldGroupObjImpl
 {
 public:
     explicit            ScDataPilotFieldGroupObj( ScDataPilotFieldGroupsObj& 
rParent, const OUString& rGroupName );
@@ -611,7 +611,7 @@ typedef ::cppu::WeakImplHelper
 >
 ScDataPilotFieldGroupItemObjImpl;
 
-class ScDataPilotFieldGroupItemObj : public ScDataPilotFieldGroupItemObjImpl
+class ScDataPilotFieldGroupItemObj final : public 
ScDataPilotFieldGroupItemObjImpl
 {
 public:
     explicit            ScDataPilotFieldGroupItemObj( 
ScDataPilotFieldGroupObj& rParent, const OUString& rName );
@@ -640,7 +640,7 @@ typedef ::cppu::WeakImplHelper
 >
 ScDataPilotItemsObjImpl;
 
-class ScDataPilotItemsObj : public ScDataPilotChildObjBase, public 
ScDataPilotItemsObjImpl
+class ScDataPilotItemsObj final : public ScDataPilotChildObjBase, public 
ScDataPilotItemsObjImpl
 {
 public:
     explicit            ScDataPilotItemsObj( ScDataPilotDescriptorBase& 
rParent, const ScFieldIdentifier& rFieldId );
diff --git a/sc/inc/datauno.hxx b/sc/inc/datauno.hxx
index 92f172532a4c..14c06d4b4848 100644
--- a/sc/inc/datauno.hxx
+++ b/sc/inc/datauno.hxx
@@ -172,7 +172,7 @@ public:
 
 //  ScSubTotalDescriptor - dummy container to use with XImportTarget
 
-class ScSubTotalDescriptor : public ScSubTotalDescriptorBase
+class ScSubTotalDescriptor final : public ScSubTotalDescriptorBase
 {
 private:
     ScSubTotalParam         aStoredParam;
@@ -191,7 +191,7 @@ public:
 
 //  ScRangeSubTotalDescriptor - SubTotalDescriptor of a data base area
 
-class ScRangeSubTotalDescriptor : public ScSubTotalDescriptorBase
+class ScRangeSubTotalDescriptor final : public ScSubTotalDescriptorBase
 {
 private:
     rtl::Reference<ScDatabaseRangeObj>  mxParent;
@@ -231,7 +231,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScConsolidationDescriptor : public cppu::WeakImplHelper<
+class ScConsolidationDescriptor final : public cppu::WeakImplHelper<
                                         css::sheet::XConsolidationDescriptor,
                                         css::lang::XServiceInfo >
 {
@@ -341,7 +341,7 @@ public:
 
 //  ScFilterDescriptor - dummy container to use with XFilterable
 
-class ScFilterDescriptor : public ScFilterDescriptorBase
+class ScFilterDescriptor final : public ScFilterDescriptorBase
 {
 private:
     ScQueryParam            aStoredParam;       // nField[] here within the 
area
@@ -361,7 +361,7 @@ public:
 
 //  ScRangeFilterDescriptor - FilterDescriptor of a data base area
 
-class ScRangeFilterDescriptor : public ScFilterDescriptorBase
+class ScRangeFilterDescriptor final : public ScFilterDescriptorBase
 {
 private:
     rtl::Reference<ScDatabaseRangeObj>  mxParent;
@@ -377,7 +377,7 @@ public:
 
 //  ScDataPilotFilterDescriptor - FilterDescriptor of a DataPilotDescriptors
 
-class ScDataPilotFilterDescriptor : public ScFilterDescriptorBase
+class ScDataPilotFilterDescriptor final : public ScFilterDescriptorBase
 {
 private:
     rtl::Reference<ScDataPilotDescriptorBase>  mxParent;
@@ -479,7 +479,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScDatabaseRangesObj : public cppu::WeakImplHelper<
+class ScDatabaseRangesObj final : public cppu::WeakImplHelper<
                                 css::sheet::XDatabaseRanges,
                                 css::container::XEnumerationAccess,
                                 css::container::XIndexAccess,
@@ -526,7 +526,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScUnnamedDatabaseRangesObj : public cppu::WeakImplHelper<
+class ScUnnamedDatabaseRangesObj final : public cppu::WeakImplHelper<
                                 css::sheet::XUnnamedDatabaseRanges>,
                             public SfxListener
 {
diff --git a/sc/inc/dbdata.hxx b/sc/inc/dbdata.hxx
index 7fd60a530b66..a7dc35c3b61b 100644
--- a/sc/inc/dbdata.hxx
+++ b/sc/inc/dbdata.hxx
@@ -58,7 +58,7 @@ protected:
     ScRangeList maDirtyTableColumnNames;
 };
 
-class SAL_DLLPUBLIC_RTTI ScDBData : public SvtListener, public ScRefreshTimer
+class SAL_DLLPUBLIC_RTTI ScDBData final : public SvtListener, public 
ScRefreshTimer
 {
 private:
     std::unique_ptr<ScSortParam> mpSortParam;
@@ -111,7 +111,7 @@ public:
              bool bByR = true, bool bHasH = true, bool bTotals = false);
     ScDBData(const ScDBData& rData);
     ScDBData(const OUString& rName, const ScDBData& rData);
-    virtual ~ScDBData() override;
+    SC_DLLPUBLIC virtual ~ScDBData() override;
 
     virtual void Notify( const SfxHint& rHint ) override;
 
@@ -232,7 +232,7 @@ public:
     /**
      * Stores global named database ranges.
      */
-    class SC_DLLPUBLIC NamedDBs : public ScDBDataContainerBase
+    class SC_DLLPUBLIC NamedDBs final : public ScDBDataContainerBase
     {
         friend class ScDBCollection;
 
diff --git a/sc/inc/defaultsoptions.hxx b/sc/inc/defaultsoptions.hxx
index 3bfcb0dd593a..dd48dd83d4f9 100644
--- a/sc/inc/defaultsoptions.hxx
+++ b/sc/inc/defaultsoptions.hxx
@@ -37,7 +37,7 @@ public:
 
 // item for the dialog / options page
 
-class SC_DLLPUBLIC ScTpDefaultsItem : public SfxPoolItem
+class SC_DLLPUBLIC ScTpDefaultsItem final : public SfxPoolItem
 {
 public:
     ScTpDefaultsItem( const ScDefaultsOptions& rOpt );
@@ -59,7 +59,7 @@ private:
 
 // config item
 
-class ScDefaultsCfg : public ScDefaultsOptions, public utl::ConfigItem
+class ScDefaultsCfg final : public ScDefaultsOptions, public utl::ConfigItem
 {
 private:
     static css::uno::Sequence<OUString> GetPropertyNames();
diff --git a/sc/inc/defltuno.hxx b/sc/inc/defltuno.hxx
index eaf88b049049..5713afbab7a7 100644
--- a/sc/inc/defltuno.hxx
+++ b/sc/inc/defltuno.hxx
@@ -29,7 +29,7 @@
 
 class ScDocShell;
 
-class ScDocDefaultsObj : public ::cppu::WeakImplHelper<
+class ScDocDefaultsObj final : public ::cppu::WeakImplHelper<
                             css::beans::XPropertySet,
                             css::beans::XPropertyState,
                             css::lang::XServiceInfo >,
diff --git a/sc/inc/dispuno.hxx b/sc/inc/dispuno.hxx
index c6dab173dc44..de458cb59ebf 100644
--- a/sc/inc/dispuno.hxx
+++ b/sc/inc/dispuno.hxx
@@ -32,7 +32,7 @@ namespace com { namespace sun { namespace star { namespace 
frame {
 
 class ScTabViewShell;
 
-class ScDispatchProviderInterceptor : public cppu::WeakImplHelper<
+class ScDispatchProviderInterceptor final : public cppu::WeakImplHelper<
                                         
css::frame::XDispatchProviderInterceptor,
                                         css::lang::XEventListener>,
                                     public SfxListener
@@ -78,7 +78,7 @@ public:
     virtual void SAL_CALL   disposing( const css::lang::EventObject& Source ) 
override;
 };
 
-class ScDispatch : public cppu::WeakImplHelper<
+class ScDispatch final : public cppu::WeakImplHelper<
                                     css::frame::XDispatch,
                                     css::view::XSelectionChangeListener >,
                                 public SfxListener
diff --git a/sc/inc/dociter.hxx b/sc/inc/dociter.hxx
index 1f57be4856c7..a6a8d370270b 100644
--- a/sc/inc/dociter.hxx
+++ b/sc/inc/dociter.hxx
@@ -127,7 +127,7 @@ private:
         virtual bool getNext(Value& rValue) = 0;
     };
 
-    class DataAccessInternal : public DataAccess
+    class DataAccessInternal final : public DataAccess
     {
         typedef std::pair<sc::CellStoreType::const_iterator,size_t> 
PositionType;
     public:
@@ -157,7 +157,7 @@ private:
         bool const          bCalcAsShown;
     };
 
-    class DataAccessMatrix : public DataAccess
+    class DataAccessMatrix final : public DataAccess
     {
     public:
         DataAccessMatrix(ScDBQueryParamMatrix* pParam);
diff --git a/sc/inc/docoptio.hxx b/sc/inc/docoptio.hxx
index 1a488abcaf0a..215ba4ee29a3 100644
--- a/sc/inc/docoptio.hxx
+++ b/sc/inc/docoptio.hxx
@@ -133,7 +133,7 @@ inline bool ScDocOptions::operator!=( const ScDocOptions& 
rOpt ) const
 
 // Item for preferences dialog - calculation
 
-class SC_DLLPUBLIC ScTpCalcItem : public SfxPoolItem
+class SC_DLLPUBLIC ScTpCalcItem final : public SfxPoolItem
 {
 public:
                 ScTpCalcItem( sal_uInt16 nWhich,
diff --git a/sc/inc/docpool.hxx b/sc/inc/docpool.hxx
index 0b91a5494526..75989a1beb77 100644
--- a/sc/inc/docpool.hxx
+++ b/sc/inc/docpool.hxx
@@ -27,14 +27,14 @@
 class ScStyleSheet;
 class ScDocument;
 
-class SC_DLLPUBLIC ScDocumentPool: public SfxItemPool
+class SC_DLLPUBLIC ScDocumentPool final : public SfxItemPool
 {
     std::vector<SfxPoolItem*> mvPoolDefaults;
     sal_uInt64 mnCurrentMaxKey;
 
 public:
             ScDocumentPool();
-protected:
+private:
             virtual ~ScDocumentPool() override;
 public:
 
@@ -47,7 +47,7 @@ public:
                                   MapUnit          ePresentationMetric,
                                   OUString&           rText,
                                   const IntlWrapper& rIntl ) const override;
-protected:
+private:
     virtual const SfxPoolItem&  PutImpl( const SfxPoolItem&, sal_uInt16 nWhich 
= 0, bool bPassingOwnership = false ) override;
 };
 
diff --git a/sc/inc/docuno.hxx b/sc/inc/docuno.hxx
index b5a5e71b1a60..e7cf7f1d3263 100644
--- a/sc/inc/docuno.hxx
+++ b/sc/inc/docuno.hxx
@@ -388,7 +388,7 @@ public:
     OUString getPostItsPos() override;
 };
 
-class ScDrawPagesObj : public cppu::WeakImplHelper<
+class ScDrawPagesObj final : public cppu::WeakImplHelper<
                                 css::drawing::XDrawPages,
                                 css::lang::XServiceInfo>,
                         public SfxListener
@@ -424,7 +424,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScTableSheetsObj : public cppu::WeakImplHelper<
+class ScTableSheetsObj final : public cppu::WeakImplHelper<
                                 css::sheet::XSpreadsheets2,
                                 css::sheet::XCellRangesAccess,
                                 css::container::XEnumerationAccess,
@@ -499,7 +499,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScTableColumnsObj : public cppu::WeakImplHelper<
+class ScTableColumnsObj final : public cppu::WeakImplHelper<
                                 css::table::XTableColumns,
                                 css::container::XEnumerationAccess,
                                 css::container::XNameAccess,
@@ -566,7 +566,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScTableRowsObj : public cppu::WeakImplHelper<
+class ScTableRowsObj final : public cppu::WeakImplHelper<
                                 css::table::XTableRows,
                                 css::container::XEnumerationAccess,
                                 css::beans::XPropertySet,
@@ -625,7 +625,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScSpreadsheetSettingsObj : public cppu::WeakImplHelper<
+class ScSpreadsheetSettingsObj final : public cppu::WeakImplHelper<
                                     css::beans::XPropertySet,
                                     css::lang::XServiceInfo>,
                                  public SfxListener
@@ -654,7 +654,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScAnnotationsObj : public cppu::WeakImplHelper<
+class ScAnnotationsObj final : public cppu::WeakImplHelper<
                                 css::sheet::XSheetAnnotations,
                                 css::container::XEnumerationAccess,
                                 css::lang::XServiceInfo>,
@@ -696,7 +696,7 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() 
override;
 };
 
-class ScScenariosObj : public cppu::WeakImplHelper<
+class ScScenariosObj final : public cppu::WeakImplHelper<
                                 css::sheet::XScenarios,
                                 css::container::XEnumerationAccess,
                                 css::container::XIndexAccess,
diff --git a/sc/inc/dpfilteredcache.hxx b/sc/inc/dpfilteredcache.hxx
index c88d8df716d1..f110131180c5 100644
--- a/sc/inc/dpfilteredcache.hxx
+++ b/sc/inc/dpfilteredcache.hxx
@@ -60,7 +60,7 @@ public:
     };
 
     /** ordinary single-item filter. */
-    class SingleFilter : public FilterBase
+    class SingleFilter final : public FilterBase
     {
     public:
         explicit SingleFilter(const ScDPItemData &rItem);
@@ -73,7 +73,7 @@ public:
     };
 
     /** multi-item (group) filter. */
-    class GroupFilter : public FilterBase
+    class GroupFilter final : public FilterBase
     {
     public:
         GroupFilter();
diff --git a/sc/inc/dpgroup.hxx b/sc/inc/dpgroup.hxx
index 9952b7bf3639..f109dd7bfd12 100644
--- a/sc/inc/dpgroup.hxx
+++ b/sc/inc/dpgroup.hxx
@@ -117,7 +117,7 @@ public:
 
 //  proxy implementation of ScDPTableData to add grouped items
 
-class ScDPGroupTableData : public ScDPTableData
+class ScDPGroupTableData final : public ScDPTableData
 {
     std::shared_ptr<ScDPTableData> pSourceData;
     long                    nSourceCount;
diff --git a/sc/inc/dpsdbtab.hxx b/sc/inc/dpsdbtab.hxx
index 8c11160cf141..c1e602121482 100644
--- a/sc/inc/dpsdbtab.hxx
+++ b/sc/inc/dpsdbtab.hxx
@@ -55,7 +55,7 @@ struct ScImportSourceDesc
 /**
  * This class represents source data from database source.
  */
-class ScDatabaseDPData : public ScDPTableData
+class ScDatabaseDPData final : public ScDPTableData
 {
 private:
     ScDPFilteredCache aCacheTable;
diff --git a/sc/inc/dpshttab.hxx b/sc/inc/dpshttab.hxx
index 3b15cefd117e..3e2ec432e5f7 100644
--- a/sc/inc/dpshttab.hxx
+++ b/sc/inc/dpshttab.hxx
@@ -83,7 +83,7 @@ private:
 /**
  * Implementation of ScDPTableData with sheet data.
  */
-class SC_DLLPUBLIC ScSheetDPData : public ScDPTableData
+class SC_DLLPUBLIC ScSheetDPData final : public ScDPTableData
 {
 private:
     ScQueryParam    aQuery;
diff --git a/sc/inc/dptabsrc.hxx b/sc/inc/dptabsrc.hxx
index c175600c9cd6..609f3e848e0d 100644
--- a/sc/inc/dptabsrc.hxx
+++ b/sc/inc/dptabsrc.hxx
@@ -72,7 +72,7 @@ enum class ScGeneralFunction;
 
 //  implementation of DataPilotSource using ScDPTableData
 
-class ScDPSource : public cppu::WeakImplHelper<
+class ScDPSource final : public cppu::WeakImplHelper<
                             css::sheet::XDimensionsSupplier,
                             css::sheet::XDataPilotResults,
                             css::util::XRefreshable,
diff --git a/sc/inc/drawpage.hxx b/sc/inc/drawpage.hxx
index fa7806a94ccf..b8edefe25acf 100644
--- a/sc/inc/drawpage.hxx
+++ b/sc/inc/drawpage.hxx
@@ -24,7 +24,7 @@
 
 class ScDrawLayer;
 
-class ScDrawPage : public FmFormPage
+class ScDrawPage final : public FmFormPage
 {
     ScDrawPage& operator=(const ScDrawPage&) = delete;
     ScDrawPage(const ScDrawPage&) = delete;
diff --git a/sc/inc/drdefuno.hxx b/sc/inc/drdefuno.hxx
index 1207aecf3614..6d21599e55d7 100644
--- a/sc/inc/drdefuno.hxx
+++ b/sc/inc/drdefuno.hxx
@@ -25,7 +25,7 @@
 
 class ScDocShell;
 
-class ScDrawDefaultsObj : public SvxUnoDrawPool, public SfxListener
+class ScDrawDefaultsObj final : public SvxUnoDrawPool, public SfxListener
 {
 private:
     ScDocShell*             pDocShell;
diff --git a/sc/inc/drwlayer.hxx b/sc/inc/drwlayer.hxx
index a2f9cadbc25d..3fa25a13f2ff 100644
--- a/sc/inc/drwlayer.hxx
+++ b/sc/inc/drwlayer.hxx
@@ -30,7 +30,7 @@ class ScDrawObjData;
 class ScMacroInfo;
 class ScMarkData;
 
-class ScTabDeletedHint : public SfxHint
+class ScTabDeletedHint final : public SfxHint
 {
 private:
     SCTAB const   nTab;
@@ -41,7 +41,7 @@ public:
     SCTAB   GetTab() const { return nTab; }
 };
 
-class ScTabSizeChangedHint : public SfxHint
+class ScTabSizeChangedHint final : public SfxHint
 {
 private:

... etc. - the rest is truncated
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to