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

Miklos Vajna vmiklos at collabora.co.uk
Tue Jun 14 14:24:31 UTC 2016


 sc/source/core/data/document.cxx |   57 ++++++++++++++++++++++++++++++++++++---
 sc/source/ui/view/tabview3.cxx   |   19 ++++++++++---
 2 files changed, 69 insertions(+), 7 deletions(-)

New commits:
commit f8a2dcce4f089e9fb7ce5cfd51cdb15ce4a87674
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Tue Jun 14 15:09:14 2016 +0200

    sc: implement per-view LOK_CALLBACK_DOCUMENT_SIZE_CHANGED
    
    Need to notify all the views when inserting or deleting a sheet.
    
    Change-Id: Ifadf6af4a307d555eacfa4623eed84400d06c293
    Reviewed-on: https://gerrit.libreoffice.org/26264
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx
index 8e22b96..a99d9e2 100644
--- a/sc/source/core/data/document.cxx
+++ b/sc/source/core/data/document.cxx
@@ -31,6 +31,7 @@
 #include <svx/svdocapt.hxx>
 #include <sfx2/app.hxx>
 #include <sfx2/objsh.hxx>
+#include <sfx2/viewsh.hxx>
 #include <sfx2/docfile.hxx>
 #include <svl/poolcach.hxx>
 #include <unotools/saveopt.hxx>
@@ -584,7 +585,19 @@ bool ScDocument::InsertTab(
         SetAllFormulasDirty(aCxt);
 
         if (comphelper::LibreOfficeKit::isActive() && GetDrawLayer())
-            GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+        {
+            if (comphelper::LibreOfficeKit::isViewCallback())
+            {
+                SfxViewShell* pViewShell = SfxViewShell::GetFirst();
+                while (pViewShell)
+                {
+                    pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                    pViewShell = SfxViewShell::GetNext(*pViewShell);
+                }
+            }
+            else
+                GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+        }
     }
 
     return bValid;
@@ -750,7 +763,19 @@ bool ScDocument::DeleteTab( SCTAB nTab )
                 pChartListenerCollection->UpdateScheduledSeriesRanges();
 
                 if (comphelper::LibreOfficeKit::isActive() && GetDrawLayer())
-                    GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                {
+                    if (comphelper::LibreOfficeKit::isViewCallback())
+                    {
+                        SfxViewShell* pViewShell = SfxViewShell::GetFirst();
+                        while (pViewShell)
+                        {
+                            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                            pViewShell = SfxViewShell::GetNext(*pViewShell);
+                        }
+                    }
+                    else
+                        GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                }
 
                 bValid = true;
             }
@@ -840,7 +865,19 @@ bool ScDocument::DeleteTabs( SCTAB nTab, SCTAB nSheets )
                 pChartListenerCollection->UpdateScheduledSeriesRanges();
 
                 if (comphelper::LibreOfficeKit::isActive() && GetDrawLayer())
-                    GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                {
+                    if (comphelper::LibreOfficeKit::isViewCallback())
+                    {
+                        SfxViewShell* pViewShell = SfxViewShell::GetFirst();
+                        while (pViewShell)
+                        {
+                            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                            pViewShell = SfxViewShell::GetNext(*pViewShell);
+                        }
+                    }
+                    else
+                        GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                }
 
                 bValid = true;
             }
@@ -885,7 +922,19 @@ bool ScDocument::RenameTab( SCTAB nTab, const OUString& rName, bool /* bUpdateRe
                         (*it)->SetStreamValid( false );
 
                 if (comphelper::LibreOfficeKit::isActive() && GetDrawLayer())
-                    GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                {
+                    if (comphelper::LibreOfficeKit::isViewCallback())
+                    {
+                        SfxViewShell* pViewShell = SfxViewShell::GetFirst();
+                        while (pViewShell)
+                        {
+                            pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                            pViewShell = SfxViewShell::GetNext(*pViewShell);
+                        }
+                    }
+                    else
+                        GetDrawLayer()->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                }
             }
         }
     }
diff --git a/sc/source/ui/view/tabview3.cxx b/sc/source/ui/view/tabview3.cxx
index 1c270f2..042b859 100644
--- a/sc/source/ui/view/tabview3.cxx
+++ b/sc/source/ui/view/tabview3.cxx
@@ -322,7 +322,10 @@ void ScTabView::SetCursor( SCCOL nPosX, SCROW nPosY, bool bNew )
 
                 if (pDocSh)
                 {
-                    pDocSh->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                    if (comphelper::LibreOfficeKit::isViewCallback())
+                        aViewData.GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
+                    else
+                        pDocSh->libreOfficeKitCallback(LOK_CALLBACK_DOCUMENT_SIZE_CHANGED, "");
 
                     // New area extended to the right of the sheet after last column
                     // including overlapping area with aNewRowArea
@@ -333,11 +336,21 @@ void ScTabView::SetCursor( SCCOL nPosX, SCROW nPosY, bool bNew )
 
                     // Only invalidate if spreadsheet extended to the right
                     if (aNewColArea.getWidth())
-                        pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewColArea.toString().getStr());
+                    {
+                        if (comphelper::LibreOfficeKit::isViewCallback())
+                            aViewData.GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewColArea.toString().getStr());
+                        else
+                            pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewColArea.toString().getStr());
+                    }
 
                     // Only invalidate if spreadsheet extended to the bottom
                     if (aNewRowArea.getHeight())
-                        pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewRowArea.toString().getStr());
+                    {
+                        if (comphelper::LibreOfficeKit::isViewCallback())
+                            aViewData.GetViewShell()->libreOfficeKitViewCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewRowArea.toString().getStr());
+                        else
+                            pDocSh->libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, aNewRowArea.toString().getStr());
+                    }
                 }
             }
         }


More information about the Libreoffice-commits mailing list