[Libreoffice-commits] core.git: 2 commits - sc/inc sc/source

Jan Holesovsky kendy at collabora.com
Tue May 10 10:06:26 UTC 2016


 sc/inc/document.hxx              |    2 +-
 sc/source/core/data/documen2.cxx |   31 +++++++++++++++++++++++++++++--
 sc/source/ui/unoobj/docuno.cxx   |    6 +-----
 sc/source/ui/view/gridwin4.cxx   |    4 +---
 sc/source/ui/view/tabview.cxx    |    2 --
 sc/source/ui/view/tabview3.cxx   |   11 ++++++-----
 6 files changed, 38 insertions(+), 18 deletions(-)

New commits:
commit 6928136177a4caebfdc01d5f0c1106fa8e1683fa
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Tue May 10 11:49:41 2016 +0200

    sc lok: Extend the spreadsheet area when we are "close enough" to the end.
    
    We can tweak later what the "close enough" means - for the moment it is 10
    columns and 25 rows.
    
    Change-Id: I92127a71aa6683c03692e96b9e0da7827942c94b

diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index a2ac002..9315d95 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -302,16 +302,17 @@ void ScTabView::SetCursor( SCCOL nPosX, SCROW nPosY, bool bNew )
 
         if (comphelper::LibreOfficeKit::isActive())
         {
-            if ( nPosX > aViewData.GetMaxTiledCol() || nPosY > aViewData.GetMaxTiledRow() )
+            if (nPosX > aViewData.GetMaxTiledCol() - 10 || nPosY > aViewData.GetMaxTiledRow() - 25)
             {
-                aViewData.SetMaxTiledCol( std::max( nPosX, aViewData.GetMaxTiledCol() ) );
-                aViewData.SetMaxTiledRow( std::max( nPosY, aViewData.GetMaxTiledRow() ) );
+                if (nPosX > aViewData.GetMaxTiledCol() - 10)
+                    aViewData.SetMaxTiledCol(std::max(nPosX, aViewData.GetMaxTiledCol()) + 10);
+
+                if (nPosY > aViewData.GetMaxTiledRow() - 25)
+                    aViewData.SetMaxTiledRow(std::max(nPosY, aViewData.GetMaxTiledRow()) + 25);
 
                 ScDocShell* pDocSh = aViewData.GetDocShell();
                 if (pDocSh)
-                {
                     pDocSh->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
-                }
             }
         }
     }
commit 5ab5c19b13bfb35eaf84e8ea5863b30d47cb515a
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Tue May 10 10:50:13 2016 +0200

    sc lok: Move the handling of the area back to GetTiledRenderingArea().
    
    Change-Id: I4dbfc090ab43065c719f83b5355cd9832ee4d1e3

diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 05b93f3..2120405 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1289,7 +1289,7 @@ public:
     void            InvalidateTableArea();
 
     /// Return the number of columns / rows that should be visible for the tiled rendering.
-    SC_DLLPUBLIC bool           GetTiledRenderingArea(SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow) const;
+    SC_DLLPUBLIC void           GetTiledRenderingArea(SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow) const;
 
     SC_DLLPUBLIC bool           GetDataStart( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow ) const;
 
diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx
index a56a0a3..77be2de 100644
--- a/sc/source/core/data/documen2.cxx
+++ b/sc/source/core/data/documen2.cxx
@@ -84,6 +84,7 @@
 #include "externalrefmgr.hxx"
 #include "appoptio.hxx"
 #include "scmod.hxx"
+#include "../../ui/inc/viewdata.hxx"
 #include "../../ui/inc/viewutil.hxx"
 #include "tabprotection.hxx"
 #include "formulaparserpool.hxx"
@@ -697,9 +698,35 @@ bool ScDocument::GetDataStart( SCTAB nTab, SCCOL& rStartCol, SCROW& rStartRow )
     return false;
 }
 
-bool ScDocument::GetTiledRenderingArea(SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow) const
+void ScDocument::GetTiledRenderingArea(SCTAB nTab, SCCOL& rEndCol, SCROW& rEndRow) const
 {
-    return GetPrintArea(nTab, rEndCol, rEndRow, false);
+    bool bHasPrintArea = GetPrintArea(nTab, rEndCol, rEndRow, false);
+
+    // we need some reasonable minimal document size
+    ScViewData* pViewData = ScDocShell::GetViewData();
+    if (!pViewData)
+    {
+        if (!bHasPrintArea)
+        {
+            rEndCol = 20;
+            rEndRow = 50;
+        }
+        else
+        {
+            rEndCol += 20;
+            rEndRow += 50;
+        }
+    }
+    else if (!bHasPrintArea)
+    {
+        rEndCol = pViewData->GetMaxTiledCol();
+        rEndRow = pViewData->GetMaxTiledRow();
+    }
+    else
+    {
+        rEndCol = std::max(rEndCol, pViewData->GetMaxTiledCol());
+        rEndRow = std::max(rEndRow, pViewData->GetMaxTiledRow());
+    }
 }
 
 bool ScDocument::MoveTab( SCTAB nOldPos, SCTAB nNewPos, ScProgress* pProgress )
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 7aeb40c..064c8b6 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -543,11 +543,7 @@ Size ScModelObj::getDocumentSize()
     SCROW nEndRow = 0;
     const ScDocument& rDoc = pDocShell->GetDocument();
 
-    if (!rDoc.GetTiledRenderingArea(nTab, nEndCol, nEndRow))
-        return aSize;
-
-    nEndCol = std::max(nEndCol, pViewData->GetMaxTiledCol());
-    nEndRow = std::max(nEndRow, pViewData->GetMaxTiledRow());
+    rDoc.GetTiledRenderingArea(nTab, nEndCol, nEndRow);
 
     // convert to twips
     aSize.setWidth(rDoc.GetColWidth(0, nEndCol, nTab));
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index da1c843..3da00b5 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -1625,9 +1625,7 @@ void ScGridWindow::GetSelectionRects( ::std::vector< Rectangle >& rPixelRects )
     {
         SCCOL nMaxTiledCol;
         SCROW nMaxTiledRow;
-        pDoc->GetTiledRenderingArea( nTab, nMaxTiledCol, nMaxTiledRow );
-        nMaxTiledCol = std::max(nMaxTiledCol, pViewData->GetMaxTiledCol());
-        nMaxTiledRow = std::max(nMaxTiledRow, pViewData->GetMaxTiledRow());
+        pDoc->GetTiledRenderingArea(nTab, nMaxTiledCol, nMaxTiledRow);
 
         if (nX2 > nMaxTiledCol)
             nX2 = nMaxTiledCol;
diff --git a/sc/source/ui/view/tabview.cxx b/sc/source/ui/view/tabview.cxx
index 420e892..e4671f6 100644
--- a/sc/source/ui/view/tabview.cxx
+++ b/sc/source/ui/view/tabview.cxx
@@ -2312,8 +2312,6 @@ OUString ScTabView::getRowColumnHeaders(const Rectangle& rRectangle)
     SCCOL nEndCol = 0;
     SCROW nEndRow = 0;
     pDoc->GetTiledRenderingArea(aViewData.GetTabNo(), nEndCol, nEndRow);
-    nEndCol = std::max(nEndCol, aViewData.GetMaxTiledCol());
-    nEndRow = std::max(nEndRow, aViewData.GetMaxTiledRow());
 
     boost::property_tree::ptree aRows;
     long nTotal = 0;


More information about the Libreoffice-commits mailing list