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

Eike Rathke erack at redhat.com
Mon Jul 4 21:26:22 UTC 2016


 sc/source/ui/docshell/docfunc.cxx |   20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

New commits:
commit 9f8e2065c42f1724ac7a24f1bb0531e8c954698a
Author: Eike Rathke <erack at redhat.com>
Date:   Mon Jul 4 23:19:41 2016 +0200

    explicitly disable partial cell shift with change-tracking, tdf#73335 related
    
    ... in ScDocFunc::InsertCells()/DeleteCells() that can be reached via
    API but ChangeTrack produces a SC_CAT_NONE action because the partial
    shift is not handled. UI slots are disabled for this.
    
    Change-Id: Ie0f992b05753bb1467d3f7a80263714bfcc1a2d7

diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 0ed1c89..6f923ba 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1619,6 +1619,16 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
 {
     ScDocShellModificator aModificator( rDocShell );
 
+    if (rDocShell.GetDocument().GetChangeTrack() &&
+            ((eCmd == INS_CELLSDOWN  && (rRange.aStart.Col() != 0 || rRange.aEnd.Col() != MAXCOL)) ||
+             (eCmd == INS_CELLSRIGHT && (rRange.aStart.Row() != 0 || rRange.aEnd.Row() != MAXROW))))
+    {
+        // We should not reach this via UI disabled slots.
+        assert(bApi);
+        SAL_WARN("sc.ui","ScDocFunc::InsertCells - no change-tracking of partial cell shift");
+        return false;
+    }
+
     ScRange aTargetRange( rRange );
 
     // If insertion is for full cols/rows and after the current
@@ -2081,6 +2091,16 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
 {
     ScDocShellModificator aModificator( rDocShell );
 
+    if (rDocShell.GetDocument().GetChangeTrack() &&
+            ((eCmd == DEL_CELLSUP   && (rRange.aStart.Col() != 0 || rRange.aEnd.Col() != MAXCOL)) ||
+             (eCmd == DEL_CELLSLEFT && (rRange.aStart.Row() != 0 || rRange.aEnd.Row() != MAXROW))))
+    {
+        // We should not reach this via UI disabled slots.
+        assert(bApi);
+        SAL_WARN("sc.ui","ScDocFunc::DeleteCells - no change-tracking of partial cell shift");
+        return false;
+    }
+
     SCCOL nStartCol = rRange.aStart.Col();
     SCROW nStartRow = rRange.aStart.Row();
     SCTAB nStartTab = rRange.aStart.Tab();


More information about the Libreoffice-commits mailing list