diff options
-rw-r--r-- | sc/inc/chgtrack.hxx | 2 | ||||
-rw-r--r-- | sc/source/core/tool/chgtrack.cxx | 7 | ||||
-rw-r--r-- | sc/source/ui/docshell/docsh3.cxx | 2 |
3 files changed, 8 insertions, 3 deletions
diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx index cb56004520dd..54a6570c0f1d 100644 --- a/sc/inc/chgtrack.hxx +++ b/sc/inc/chgtrack.hxx @@ -1373,7 +1373,7 @@ public: BOOL bAllFlat = FALSE ) const; // Reject visible Action (und abhaengige) - BOOL Reject( ScChangeAction* ); + BOOL Reject( ScChangeAction*, bool bShared = false ); // Accept visible Action (und abhaengige) SC_DLLPUBLIC BOOL Accept( ScChangeAction* ); diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index 8d69b86770b1..5f1213e79b35 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -4851,8 +4851,13 @@ BOOL ScChangeTrack::RejectAll() } -BOOL ScChangeTrack::Reject( ScChangeAction* pAct ) +BOOL ScChangeTrack::Reject( ScChangeAction* pAct, bool bShared ) { + // #i100895# When collaboration changes are reversed, it must be possible + // to reject a deleted row above another deleted row. + if ( bShared && pAct->IsDeletedIn() ) + pAct->RemoveAllDeletedIn(); + if ( !pAct->IsRejectable() ) return FALSE; diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index 6e4940f96fd3..fcdfa8612a02 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -1292,7 +1292,7 @@ bool ScDocShell::MergeSharedDocument( ScDocShell* pSharedDocShell ) ScChangeAction* pAction = pThisTrack->GetLast(); while ( pAction && pAction->GetActionNumber() >= nStartShared ) { - pThisTrack->Reject( pAction ); + pThisTrack->Reject( pAction, true ); pAction = pAction->GetPrev(); } |