diff options
author | Eike Rathke <erack@redhat.com> | 2016-07-04 23:19:41 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@collabora.com> | 2016-08-02 16:42:51 +0300 |
commit | f9cd6d0efdb3dfa820205a126e4d6adb53db861b (patch) | |
tree | e51bc3f199b5808d6a7b66fee676852baea75a09 | |
parent | Resolves: tdf#91995 copying cells to undo doc shallow copied note pointer (diff) | |
download | core-f9cd6d0efdb3dfa820205a126e4d6adb53db861b.tar.gz core-f9cd6d0efdb3dfa820205a126e4d6adb53db861b.zip |
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
(cherry picked from commit 9f8e2065c42f1724ac7a24f1bb0531e8c954698a)
Reviewed-on: https://gerrit.libreoffice.org/26923
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 9fb749f520b94d11ebeaf83c1e913dacb742703b)
-rw-r--r-- | sc/source/ui/docshell/docfunc.cxx | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 41d23f596824..493e8c8b853c 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -1631,6 +1631,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 @@ -2093,6 +2103,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(); |