[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-5.3' - sc/source

Marco Cecchetti marco.cecchetti at collabora.com
Tue May 16 12:05:37 UTC 2017


 sc/source/ui/undo/undoblk.cxx  |   44 ++++++++++++++++++++++++++++++++++++++++-
 sc/source/ui/undo/undoblk2.cxx |    3 ++
 2 files changed, 46 insertions(+), 1 deletion(-)

New commits:
commit c01df160eb45e1f5a386f9ad7cb3da72fc7f278f
Author: Marco Cecchetti <marco.cecchetti at collabora.com>
Date:   Wed May 3 22:57:09 2017 +0200

    lok: sc: invalidate cached position on undo row/col operations
    
    Change-Id: I822ecdeda0e7c26c65096e5a249a35f7c2f3a9fe
    Reviewed-on: https://gerrit.libreoffice.org/37259
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sc/source/ui/undo/undoblk.cxx b/sc/source/ui/undo/undoblk.cxx
index d79fd8335c0c..6af80db9eb15 100644
--- a/sc/source/ui/undo/undoblk.cxx
+++ b/sc/source/ui/undo/undoblk.cxx
@@ -159,6 +159,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
 
     // refresh of merged cells has to be after inserting/deleting
 
+    ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
     switch (eCmd)
     {
         case INS_INSROWS_BEFORE:
@@ -166,12 +167,19 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
         case INS_CELLSDOWN:
             for( i=0; i<nCount; i++ )
             {
+
                 if (bUndo)
                     rDoc.DeleteRow( aEffRange.aStart.Col(), pTabs[i], aEffRange.aEnd.Col(), pTabs[i]+pScenarios[i],
                     aEffRange.aStart.Row(), static_cast<SCSIZE>(aEffRange.aEnd.Row()-aEffRange.aStart.Row()+1));
                 else
                     rDoc.InsertRow( aEffRange.aStart.Col(), pTabs[i], aEffRange.aEnd.Col(), pTabs[i]+pScenarios[i],
                     aEffRange.aStart.Row(), static_cast<SCSIZE>(aEffRange.aEnd.Row()-aEffRange.aStart.Row()+1));
+
+                if (pViewShell)
+                {
+                    const long nSign = bUndo ? -1 : 1;
+                    pViewShell->OnLOKInsertDeleteRow(aEffRange.aStart.Row(), nSign * (aEffRange.aEnd.Row()-aEffRange.aStart.Row()+1));
+                }
             }
             break;
         case INS_INSCOLS_BEFORE:
@@ -185,6 +193,12 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
                 else
                     rDoc.InsertCol( aEffRange.aStart.Row(), pTabs[i], aEffRange.aEnd.Row(), pTabs[i]+pScenarios[i],
                     aEffRange.aStart.Col(), static_cast<SCSIZE>(aEffRange.aEnd.Col()-aEffRange.aStart.Col()+1));
+
+                if (pViewShell)
+                {
+                    const long nSign = bUndo ? -1 : 1;
+                    pViewShell->OnLOKInsertDeleteColumn(aEffRange.aStart.Col(), nSign * (aEffRange.aEnd.Col()-aEffRange.aStart.Col()+1));
+                }
             }
             break;
         default:
@@ -210,7 +224,7 @@ void ScUndoInsertCells::DoChange( const bool bUndo )
     // Undo for displaced attributes?
 
     PaintPartFlags nPaint = PaintPartFlags::Grid;
-    ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
     switch (eCmd)
     {
         case INS_INSROWS_BEFORE:
@@ -385,6 +399,8 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
     else
         SetChangeTrack();
 
+    ScTabViewShell* pViewShell = ScTabViewShell::GetActiveViewShell();
+
     switch (eCmd)
     {
         case DEL_DELROWS:
@@ -397,6 +413,12 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
                 else
                     rDoc.DeleteRow( aEffRange.aStart.Col(), pTabs[i], aEffRange.aEnd.Col(), pTabs[i]+pScenarios[i],
                     aEffRange.aStart.Row(), static_cast<SCSIZE>(aEffRange.aEnd.Row()-aEffRange.aStart.Row()+1));
+
+                if (pViewShell)
+                {
+                    const long nSign = bUndo ? 1 : -1;
+                    pViewShell->OnLOKInsertDeleteRow(aEffRange.aStart.Row(), nSign * (aEffRange.aEnd.Row()-aEffRange.aStart.Row()+1));
+                }
             }
             break;
         case DEL_DELCOLS:
@@ -409,6 +431,12 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
                 else
                     rDoc.DeleteCol( aEffRange.aStart.Row(), pTabs[i], aEffRange.aEnd.Row(), pTabs[i]+pScenarios[i],
                     aEffRange.aStart.Col(), static_cast<SCSIZE>(aEffRange.aEnd.Col()-aEffRange.aStart.Col()+1));
+
+                if (pViewShell)
+                {
+                    const long nSign = bUndo ? 1 : -1;
+                    pViewShell->OnLOKInsertDeleteColumn(aEffRange.aStart.Col(), nSign * (aEffRange.aEnd.Col()-aEffRange.aStart.Col()+1));
+                }
             }
             break;
         default:
@@ -507,6 +535,20 @@ void ScUndoDeleteCells::DoChange( const bool bUndo )
 
     pDocShell->PostDataChanged();
     //  CellContentChanged comes with the selection
+
+    if (pViewShell)
+    {
+        if (comphelper::LibreOfficeKit::isActive())
+        {
+            if (eCmd == DEL_DELCOLS || eCmd == DEL_CELLSLEFT)
+                ScTabViewShell::notifyAllViewsHeaderInvalidation("column",  pViewShell->GetViewData().GetTabNo());
+
+            if (eCmd == DEL_DELROWS || eCmd == DEL_CELLSUP)
+                ScTabViewShell::notifyAllViewsHeaderInvalidation("row",  pViewShell->GetViewData().GetTabNo());
+        }
+
+    }
+
 }
 
 void ScUndoDeleteCells::Undo()
diff --git a/sc/source/ui/undo/undoblk2.cxx b/sc/source/ui/undo/undoblk2.cxx
index cdf75b9f1882..8a1247cbca14 100644
--- a/sc/source/ui/undo/undoblk2.cxx
+++ b/sc/source/ui/undo/undoblk2.cxx
@@ -101,6 +101,9 @@ void ScUndoWidthOrHeight::Undo()
     ScMarkData::iterator itr = aMarkData.begin(), itrEnd = aMarkData.end();
     for (; itr != itrEnd && *itr < nTabCount; ++itr)
     {
+        if (pViewShell)
+            pViewShell->OnLOKSetWidthOrHeight(nStart, bWidth);
+
         if (bWidth) // Width
         {
             pUndoDoc->CopyToDocument(static_cast<SCCOL>(nStart), 0, *itr,


More information about the Libreoffice-commits mailing list