summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dbaccess/source/ui/querydesign/QueryTableView.cxx2
-rw-r--r--dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx4
-rw-r--r--dbaccess/source/ui/querydesign/querycontroller.cxx2
-rw-r--r--dbaccess/source/ui/tabledesign/TEditControl.cxx2
-rw-r--r--editeng/source/editeng/impedit5.cxx4
-rw-r--r--framework/source/fwe/helper/undomanagerhelper.cxx2
-rw-r--r--include/svl/undo.hxx8
-rw-r--r--reportdesign/inc/UndoActions.hxx2
-rw-r--r--reportdesign/source/ui/dlg/GroupsSorting.cxx4
-rw-r--r--reportdesign/source/ui/report/SectionWindow.cxx2
-rw-r--r--sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx2
-rw-r--r--sc/source/ui/StatisticsDialogs/SamplingDialog.cxx2
-rw-r--r--sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx2
-rw-r--r--sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx2
-rw-r--r--sc/source/ui/docshell/docfunc.cxx31
-rw-r--r--sc/source/ui/docshell/docsh4.cxx5
-rw-r--r--sc/source/ui/drawfunc/drtxtob.cxx5
-rw-r--r--sc/source/ui/drawfunc/futext3.cxx2
-rw-r--r--sc/source/ui/view/cellsh1.cxx2
-rw-r--r--sc/source/ui/view/cellsh2.cxx2
-rw-r--r--sc/source/ui/view/dbfunc.cxx3
-rw-r--r--sc/source/ui/view/dbfunc3.cxx3
-rw-r--r--sc/source/ui/view/editsh.cxx5
-rw-r--r--sc/source/ui/view/formatsh.cxx4
-rw-r--r--sc/source/ui/view/gridwin.cxx6
-rw-r--r--sc/source/ui/view/gridwin2.cxx2
-rw-r--r--sc/source/ui/view/tabvwshf.cxx2
-rw-r--r--sc/source/ui/view/viewfun3.cxx8
-rw-r--r--sc/source/ui/view/viewfun6.cxx3
-rw-r--r--sc/source/ui/view/viewfunc.cxx6
-rw-r--r--sd/inc/undo/undomanager.hxx2
-rw-r--r--sd/source/core/drawdoc3.cxx11
-rw-r--r--sd/source/core/undo/undomanager.cxx4
-rwxr-xr-xsd/source/ui/animations/SlideTransitionPane.cxx2
-rw-r--r--sd/source/ui/func/fubullet.cxx6
-rw-r--r--sd/source/ui/func/fuinsfil.cxx4
-rw-r--r--sd/source/ui/func/fuoaprms.cxx3
-rw-r--r--sd/source/ui/func/fupage.cxx3
-rw-r--r--sd/source/ui/sidebar/DocumentHelper.cxx4
-rw-r--r--sd/source/ui/view/ViewShellImplementation.cxx2
-rw-r--r--sd/source/ui/view/drawview.cxx6
-rw-r--r--sd/source/ui/view/drviews2.cxx2
-rw-r--r--sd/source/ui/view/outlview.cxx2
-rw-r--r--svl/source/undo/undo.cxx18
-rw-r--r--svx/source/svdraw/svdmodel.cxx16
-rw-r--r--sw/source/core/doc/docnew.cxx1
-rw-r--r--sw/source/core/inc/UndoManager.hxx3
-rw-r--r--sw/source/core/undo/docundo.cxx23
-rw-r--r--vcl/source/edit/texteng.cxx2
49 files changed, 168 insertions, 75 deletions
diff --git a/dbaccess/source/ui/querydesign/QueryTableView.cxx b/dbaccess/source/ui/querydesign/QueryTableView.cxx
index cadc44903260..c6fa90fc8e6d 100644
--- a/dbaccess/source/ui/querydesign/QueryTableView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryTableView.cxx
@@ -741,7 +741,7 @@ void OQueryTableView::RemoveTabWin(OTableWindow* pTabWin)
OQueryDesignView* pParent = static_cast<OQueryDesignView*>(getDesignView());
SfxUndoManager& rUndoMgr = m_pView->getController().GetUndoManager();
- rUndoMgr.EnterListAction( OUString( ModuleRes(STR_QUERY_UNDO_TABWINDELETE) ), OUString(), 0 );
+ rUndoMgr.EnterListAction( OUString( ModuleRes(STR_QUERY_UNDO_TABWINDELETE) ), OUString(), 0, -1 );
// add the Undo-Action
OQueryTabWinDelUndoAct* pUndoAction = new OQueryTabWinDelUndoAct(this);
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index d8cdc5844522..65a7c5b3c4d9 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -941,7 +941,7 @@ bool OSelectionBrowseBox::SaveModified()
strOldCellContents = pEntry->GetField();
bListAction = true;
if ( !m_bInUndoMode )
- rController.GetUndoManager().EnterListAction(OUString(),OUString(),0);
+ rController.GetUndoManager().EnterListAction(OUString(),OUString(),0,-1);
sal_Int32 nPos = m_pFieldCell->GetEntryPos(aFieldName);
OUString aAliasName = pEntry->GetAlias();
@@ -2458,7 +2458,7 @@ void OSelectionBrowseBox::appendUndoAction(const OUString& _rOldValue, const OUS
if ( !_bListAction )
{
_bListAction = true;
- static_cast<OQueryController&>(getDesignView()->getController()).GetUndoManager().EnterListAction(OUString(),OUString(),0);
+ static_cast<OQueryController&>(getDesignView()->getController()).GetUndoManager().EnterListAction(OUString(),OUString(),0,-1);
}
appendUndoAction(_rOldValue,_rNewValue,_nRow);
}
diff --git a/dbaccess/source/ui/querydesign/querycontroller.cxx b/dbaccess/source/ui/querydesign/querycontroller.cxx
index 9ce1eaa4f24f..432160bf6519 100644
--- a/dbaccess/source/ui/querydesign/querycontroller.cxx
+++ b/dbaccess/source/ui/querydesign/querycontroller.cxx
@@ -678,7 +678,7 @@ void OQueryController::Execute(sal_uInt16 _nId, const Sequence< PropertyValue >&
break;
case SID_BROWSER_CLEAR_QUERY:
{
- GetUndoManager().EnterListAction( OUString( ModuleRes(STR_QUERY_UNDO_TABWINDELETE) ), OUString(), 0 );
+ GetUndoManager().EnterListAction( OUString( ModuleRes(STR_QUERY_UNDO_TABWINDELETE) ), OUString(), 0, -1 );
getContainer()->clear();
GetUndoManager().LeaveListAction();
diff --git a/dbaccess/source/ui/tabledesign/TEditControl.cxx b/dbaccess/source/ui/tabledesign/TEditControl.cxx
index b8dfd9da650c..0a1f4a6aa15f 100644
--- a/dbaccess/source/ui/tabledesign/TEditControl.cxx
+++ b/dbaccess/source/ui/tabledesign/TEditControl.cxx
@@ -648,7 +648,7 @@ void OTableEditorCtrl::CellModified( long nRow, sal_uInt16 nColId )
default: sActionDescription = ModuleRes( STR_CHANGE_COLUMN_ATTRIBUTE ); break;
}
- GetUndoManager().EnterListAction( sActionDescription, OUString(),0 );
+ GetUndoManager().EnterListAction( sActionDescription, OUString(),0,-1 );
if (!pActFieldDescr)
{
const OTypeInfoMap& rTypeInfoMap = GetView()->getController().getTypeInfo();
diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx
index 224f5e1b5ba1..4dc34fc855f3 100644
--- a/editeng/source/editeng/impedit5.cxx
+++ b/editeng/source/editeng/impedit5.cxx
@@ -226,7 +226,7 @@ void ImpEditEngine::UndoActionStart( sal_uInt16 nId, const ESelection& aSel )
{
if ( IsUndoEnabled() && !IsInUndo() )
{
- GetUndoManager().EnterListAction( GetEditEnginePtr()->GetUndoComment( nId ), OUString(), nId );
+ GetUndoManager().EnterListAction( GetEditEnginePtr()->GetUndoComment( nId ), OUString(), nId, -1 );
DBG_ASSERT( !pUndoMarkSelection, "UndoAction SelectionMarker?" );
pUndoMarkSelection = new ESelection( aSel );
}
@@ -236,7 +236,7 @@ void ImpEditEngine::UndoActionStart( sal_uInt16 nId )
{
if ( IsUndoEnabled() && !IsInUndo() )
{
- GetUndoManager().EnterListAction( GetEditEnginePtr()->GetUndoComment( nId ), OUString(), nId );
+ GetUndoManager().EnterListAction( GetEditEnginePtr()->GetUndoComment( nId ), OUString(), nId, -1 );
DBG_ASSERT( !pUndoMarkSelection, "UndoAction SelectionMarker?" );
}
}
diff --git a/framework/source/fwe/helper/undomanagerhelper.cxx b/framework/source/fwe/helper/undomanagerhelper.cxx
index 88ea67f93132..19c55755d54a 100644
--- a/framework/source/fwe/helper/undomanagerhelper.cxx
+++ b/framework/source/fwe/helper/undomanagerhelper.cxx
@@ -525,7 +525,7 @@ namespace framework
{
::comphelper::FlagGuard aNotificationGuard( m_bAPIActionRunning );
- rUndoManager.EnterListAction( i_title, OUString(), 0 );
+ rUndoManager.EnterListAction( i_title, OUString(), 0, -1 );
}
m_aContextVisibilities.push( i_hidden );
diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx
index ad80d8c63f2b..032738e57851 100644
--- a/include/svl/undo.hxx
+++ b/include/svl/undo.hxx
@@ -130,7 +130,7 @@ class SVL_DLLPUBLIC SfxListUndoAction : public SfxUndoAction, public SfxUndoArra
public:
SfxListUndoAction(
- const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, SfxUndoArray *pFather );
+ const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, sal_Int32 nViewShellId, SfxUndoArray *pFather );
virtual ~SfxListUndoAction();
virtual void Undo() override;
@@ -143,6 +143,8 @@ public:
virtual bool Merge( SfxUndoAction *pNextAction ) override;
virtual OUString GetComment() const override;
+ /// See SfxUndoAction::GetViewShellId().
+ sal_Int32 GetViewShellId() const override;
virtual OUString GetRepeatComment(SfxRepeatTarget&) const override;
virtual sal_uInt16 GetId() const override;
@@ -228,7 +230,7 @@ namespace svl
virtual bool Repeat( SfxRepeatTarget &rTarget ) = 0;
virtual bool CanRepeat( SfxRepeatTarget &rTarget ) const = 0;
- virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId) = 0;
+ virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, sal_Int32 nViewShellId) = 0;
/** leaves the list action entered with EnterListAction
@return the number of the sub actions in the list which has just been left. Note that in case no such
@@ -319,7 +321,7 @@ public:
virtual OUString GetRepeatActionComment( SfxRepeatTarget &rTarget) const override;
virtual bool Repeat( SfxRepeatTarget &rTarget ) override;
virtual bool CanRepeat( SfxRepeatTarget &rTarget ) const override;
- virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId) override;
+ virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, sal_Int32 nViewShellId) override;
virtual size_t LeaveListAction() override;
virtual size_t LeaveAndMergeListAction() override;
virtual bool IsInListAction() const override;
diff --git a/reportdesign/inc/UndoActions.hxx b/reportdesign/inc/UndoActions.hxx
index 4d7b04ebf69c..3d56330fac68 100644
--- a/reportdesign/inc/UndoActions.hxx
+++ b/reportdesign/inc/UndoActions.hxx
@@ -112,7 +112,7 @@ namespace rptui
UndoContext( SfxUndoManager& i_undoManager, const OUString& i_undoTitle )
:m_rUndoManager( i_undoManager )
{
- m_rUndoManager.EnterListAction( i_undoTitle, OUString(), 0 );
+ m_rUndoManager.EnterListAction( i_undoTitle, OUString(), 0, -1 );
}
~UndoContext()
diff --git a/reportdesign/source/ui/dlg/GroupsSorting.cxx b/reportdesign/source/ui/dlg/GroupsSorting.cxx
index d55bc862ae51..87ebac9e3848 100644
--- a/reportdesign/source/ui/dlg/GroupsSorting.cxx
+++ b/reportdesign/source/ui/dlg/GroupsSorting.cxx
@@ -444,7 +444,7 @@ bool OFieldExpressionControl::SaveModified(bool _bAppendRow)
{
bAppend = true;
OUString sUndoAction(ModuleRes(RID_STR_UNDO_APPEND_GROUP));
- m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, OUString(), 0 );
+ m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, OUString(), 0, -1 );
xGroup = m_pParent->getGroups()->createGroup();
xGroup->setHeaderOn(true);
@@ -783,7 +783,7 @@ void OFieldExpressionControl::DeleteRows()
{
bFirstTime = false;
OUString sUndoAction(ModuleRes(RID_STR_UNDO_REMOVE_SELECTION));
- m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, OUString(), 0 );
+ m_pParent->m_pController->getUndoManager().EnterListAction( sUndoAction, OUString(), 0, -1 );
}
sal_Int32 nGroupPos = m_aGroupPositions[nIndex];
diff --git a/reportdesign/source/ui/report/SectionWindow.cxx b/reportdesign/source/ui/report/SectionWindow.cxx
index 09aae0ba4be6..18d3a9c8afc3 100644
--- a/reportdesign/source/ui/report/SectionWindow.cxx
+++ b/reportdesign/source/ui/report/SectionWindow.cxx
@@ -319,7 +319,7 @@ void OSectionWindow::zoom(const Fraction& _aZoom)
IMPL_LINK_NOARG_TYPED( OSectionWindow, StartSplitHdl, Splitter*, void)
{
const OUString sUndoAction( ModuleRes( RID_STR_UNDO_CHANGE_SIZE ) );
- getViewsWindow()->getView()->getReportView()->getController().getUndoManager().EnterListAction( sUndoAction, OUString(), 0 );
+ getViewsWindow()->getView()->getReportView()->getController().getUndoManager().EnterListAction( sUndoAction, OUString(), 0, -1 );
}
IMPL_LINK_NOARG_TYPED( OSectionWindow, EndSplitHdl, Splitter*, void )
diff --git a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
index a859d5974e19..eaf10faedca5 100644
--- a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
@@ -289,7 +289,7 @@ void ScRandomNumberGeneratorDialog::GenerateNumbers(RNG& randomGenerator, const
ScDocShell* pDocShell = mpViewData->GetDocShell();
svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
- pUndoManager->EnterListAction( aUndo, aUndo, 0 );
+ pUndoManager->EnterListAction( aUndo, aUndo, 0, mpViewData->GetViewShell()->GetViewShellId() );
SCROW nRowStart = maInputRange.aStart.Row();
SCROW nRowEnd = maInputRange.aEnd.Row();
diff --git a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
index 9e07e9404025..417de9e6811f 100644
--- a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
@@ -273,7 +273,7 @@ void ScSamplingDialog::PerformSampling()
ScRange aModifiedRange;
- pUndoManager->EnterListAction( aUndo, aUndo, 0 );
+ pUndoManager->EnterListAction( aUndo, aUndo, 0, mViewData->GetViewShell()->GetViewShellId() );
if (mpRandomMethodRadio->IsChecked())
{
diff --git a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
index d2d3e025af38..61a426af4d29 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
@@ -287,7 +287,7 @@ void ScStatisticsInputOutputDialog::CalculateInputAndWriteToOutput()
OUString aUndo(SC_STRLOAD(RID_STATISTICS_DLGS, GetUndoNameId()));
ScDocShell* pDocShell = mViewData->GetDocShell();
svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
- pUndoManager->EnterListAction( aUndo, aUndo, 0 );
+ pUndoManager->EnterListAction( aUndo, aUndo, 0, mViewData->GetViewShell()->GetViewShellId() );
ScRange aOutputRange = ApplyOutput(pDocShell);
diff --git a/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx b/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
index afb34f3a572b..cc4334e1eae8 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
@@ -326,7 +326,7 @@ void ScStatisticsTwoVariableDialog::CalculateInputAndWriteToOutput()
OUString aUndo(SC_STRLOAD(RID_STATISTICS_DLGS, GetUndoNameId()));
ScDocShell* pDocShell = mViewData->GetDocShell();
svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
- pUndoManager->EnterListAction( aUndo, aUndo, 0 );
+ pUndoManager->EnterListAction( aUndo, aUndo, 0, mViewData->GetViewShell()->GetViewShellId() );
ScRange aOutputRange = ApplyOutput(pDocShell);
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 76fd9c511dc3..6e533db37ab4 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -1789,7 +1789,12 @@ bool ScDocFunc::InsertCells( const ScRange& rRange, const ScMarkData* pTabMark,
std::vector<ScRange> qIncreaseRange;
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_INSERTCELLS );
if (bRecord)
- rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ {
+ int nViewShellId = -1;
+ if (pViewSh)
+ nViewShellId = pViewSh->GetViewShellId();
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0, nViewShellId );
+ }
itr = aMark.begin();
for (; itr != itrEnd && nTabCount; ++itr)
@@ -2217,7 +2222,12 @@ bool ScDocFunc::DeleteCells( const ScRange& rRange, const ScMarkData* pTabMark,
bool bDeletingMerge = false;
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_DELETECELLS );
if (bRecord)
- rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ {
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0, nViewShellId );
+ }
itr = aMark.begin();
for (; itr != itrEnd && *itr < nTabCount; ++itr)
@@ -5199,7 +5209,12 @@ void ScDocFunc::ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_RESIZEMATRIX );
bool bUndo(rDoc.IsUndoEnabled());
if (bUndo)
- rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ {
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0, nViewShellId );
+ }
aFormula = aFormula.copy(1, aFormula.getLength()-2);
@@ -5252,7 +5267,10 @@ void ScDocFunc::InsertAreaLink( const OUString& rFile, const OUString& rFilter,
{
// group all remove and the insert action
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_INSERTAREALINK );
- rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0, nViewShellId );
}
ScAreaLink* pOldArea = static_cast<ScAreaLink*>(pBase);
@@ -5449,7 +5467,10 @@ void ScDocFunc::ConvertFormulaToValue( const ScRange& rRange, bool bInteraction
void ScDocFunc::EnterListAction( sal_uInt16 nNameResId )
{
OUString aUndo( ScGlobal::GetRscString( nNameResId ) );
- rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ rDocShell.GetUndoManager()->EnterListAction( aUndo, aUndo, 0, nViewShellId );
}
void ScDocFunc::EndListAction()
diff --git a/sc/source/ui/docshell/docsh4.cxx b/sc/source/ui/docshell/docsh4.cxx
index 056a45cf6b3f..6ce6eae2e36d 100644
--- a/sc/source/ui/docshell/docsh4.cxx
+++ b/sc/source/ui/docshell/docsh4.cxx
@@ -196,7 +196,10 @@ void ScDocShell::Execute( SfxRequest& rReq )
if (bUndo)
{
OUString aStrImport = ScGlobal::GetRscString( STR_UNDO_IMPORTDATA );
- GetUndoManager()->EnterListAction( aStrImport, aStrImport, 0 );
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ GetUndoManager()->EnterListAction( aStrImport, aStrImport, 0, nViewShellId );
}
ScDBData* pDBData = GetDBData( ScRange(aPos), SC_DB_IMPORT, SC_DBSEL_KEEP );
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index 99077e499764..c93267e1bbdf 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -621,7 +621,10 @@ static void lcl_RemoveFields( OutlinerView& rOutView )
if (bUpdate)
pOutliner->SetUpdateMode( false );
OUString aName = ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS );
- pOutliner->GetUndoManager().EnterListAction( aName, aName, 0 );
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ pOutliner->GetUndoManager().EnterListAction( aName, aName, 0, nViewShellId );
bChanged = true;
}
diff --git a/sc/source/ui/drawfunc/futext3.cxx b/sc/source/ui/drawfunc/futext3.cxx
index eeacf24766ab..be4bd71639a2 100644
--- a/sc/source/ui/drawfunc/futext3.cxx
+++ b/sc/source/ui/drawfunc/futext3.cxx
@@ -82,7 +82,7 @@ void FuText::StopEditMode()
if(pCalcUndo)
{
const OUString aUndoStr = ScGlobal::GetRscString( STR_UNDO_EDITNOTE );
- pUndoMgr->EnterListAction( aUndoStr, aUndoStr, 0 );
+ pUndoMgr->EnterListAction( aUndoStr, aUndoStr, 0, pViewShell->GetViewShellId() );
/* Note has been created before editing, if first undo action is
an insert action. Needed below to decide whether to drop the
diff --git a/sc/source/ui/view/cellsh1.cxx b/sc/source/ui/view/cellsh1.cxx
index 50d589260ca6..2f331a28d9f0 100644
--- a/sc/source/ui/view/cellsh1.cxx
+++ b/sc/source/ui/view/cellsh1.cxx
@@ -2268,7 +2268,7 @@ void ScCellShell::ExecuteEdit( SfxRequest& rReq )
size_t nRangeSize = aRanges.size();
OUString aUndo = ScGlobal::GetRscString( bShowNote ? STR_UNDO_SHOWNOTE : STR_UNDO_HIDENOTE );
- pData->GetDocShell()->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pData->GetDocShell()->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pData->GetViewShell()->GetViewShellId() );
for ( size_t i = 0; i < nRangeSize; ++i )
{
diff --git a/sc/source/ui/view/cellsh2.cxx b/sc/source/ui/view/cellsh2.cxx
index 5a6a60b15749..b0107206e236 100644
--- a/sc/source/ui/view/cellsh2.cxx
+++ b/sc/source/ui/view/cellsh2.cxx
@@ -987,7 +987,7 @@ void ScCellShell::ExecuteDB( SfxRequest& rReq )
OSL_ENSURE( pDocSh, "ScCellShell::ExecuteDB: SID_TEXT_TO_COLUMNS - pDocSh is null!" );
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_TEXTTOCOLUMNS );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pData->GetViewShell()->GetViewShellId() );
ScImportExport aImport( pDoc, aRange.aStart );
ScAsciiOptions aOptions;
diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
index cd1ccff504ed..82f3280a7710 100644
--- a/sc/source/ui/view/dbfunc.cxx
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -36,6 +36,7 @@
#include "editable.hxx"
#include "queryentry.hxx"
#include "markdata.hxx"
+#include "tabvwsh.hxx"
ScDBFunc::ScDBFunc( vcl::Window* pParent, ScDocShell& rDocSh, ScTabViewShell* pViewShell ) :
ScViewFunc( pParent, rDocSh, pViewShell )
@@ -325,7 +326,7 @@ void ScDBFunc::ToggleAutoFilter()
// use a list action for the AutoFilter buttons (ScUndoAutoFilter) and the filter operation
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_QUERY );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
ScRange aRange;
pDBData->GetArea( aRange );
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 3ad24ce2318c..26916f85d4e4 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -66,6 +66,7 @@
#include "queryentry.hxx"
#include "markdata.hxx"
#include "stringutil.hxx"
+#include "tabvwsh.hxx"
#include <list>
#include <memory>
@@ -2044,7 +2045,7 @@ void ScDBFunc::ShowDataPilotSourceData( ScDPObject& rDPObj, const Sequence<sheet
::svl::IUndoManager* pMgr = GetViewData().GetDocShell()->GetUndoManager();
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_DOOUTLINE );
- pMgr->EnterListAction( aUndo, aUndo, 0 );
+ pMgr->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
OUString aNewTabName;
pDoc->CreateValidTabName(aNewTabName);
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index b79ab5ccad7d..50a8ff76b6c8 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -135,7 +135,10 @@ static void lcl_RemoveAttribs( EditView& rEditView )
pEngine->SetUpdateMode(false);
OUString aName = ScGlobal::GetRscString( STR_UNDO_DELETECONTENTS );
- pEngine->GetUndoManager().EnterListAction( aName, aName, 0 );
+ int nViewShellId = -1;
+ if (ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell())
+ nViewShellId = pViewSh->GetViewShellId();
+ pEngine->GetUndoManager().EnterListAction( aName, aName, 0, nViewShellId );
rEditView.RemoveAttribs(true);
pEngine->RepeatDefaults(); // paragraph attributes from cell formats must be preserved
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index 96c897910163..3383b1de5325 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -572,7 +572,7 @@ void ScFormatShell::ExecuteStyle( SfxRequest& rReq )
if ( bUndo )
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_EDITCELLSTYLE );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pTabViewShell->GetViewShellId() );
bListAction = true;
}
@@ -630,7 +630,7 @@ void ScFormatShell::ExecuteStyle( SfxRequest& rReq )
if ( bUndo )
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_EDITCELLSTYLE );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pTabViewShell->GetViewShellId() );
bListAction = true;
}
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index fa477a3e1e38..1e7a3bd41a0c 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -4116,7 +4116,7 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
nSourceTab != nThisTab )
{
OUString aUndo = ScGlobal::GetRscString( bIsMove ? STR_UNDO_MOVE : STR_UNDO_COPY );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pViewData->GetViewShell()->GetViewShellId() );
SCsCOL nCorrectCursorPosCol = 0;
SCsROW nCorrectCursorPosRow = 0;
@@ -4270,7 +4270,7 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
if (pSourceSh)
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_COPY );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pViewData->GetViewShell()->GetViewShellId() );
bDone = true;
if ( meDragInsertMode != INS_NONE )
@@ -4330,7 +4330,7 @@ sal_Int8 ScGridWindow::DropTransferObj( ScTransferObj* pTransObj, SCCOL nDestPos
//! or don't start dragging on a part of a matrix
OUString aUndo = ScGlobal::GetRscString( bIsMove ? STR_UNDO_MOVE : STR_UNDO_COPY );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pViewData->GetViewShell()->GetViewShellId() );
bDone = true;
if ( meDragInsertMode != INS_NONE )
diff --git a/sc/source/ui/view/gridwin2.cxx b/sc/source/ui/view/gridwin2.cxx
index c821f4ec9e33..edb5ad6f3ec4 100644
--- a/sc/source/ui/view/gridwin2.cxx
+++ b/sc/source/ui/view/gridwin2.cxx
@@ -961,7 +961,7 @@ void ScGridWindow::PagebreakMove( const MouseEvent& rMEvt, bool bUp )
if (bUndo)
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_DRAG_BREAK );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, pViewData->GetViewShell()->GetViewShellId() );
}
bool bGrow = !bHide && nNew > nPagebreakBreak;
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index c4a28c071adb..91af95af42dc 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -655,7 +655,7 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
::svl::IUndoManager* pUndoManager = pDocSh->GetUndoManager();
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_TAB_RTL );
- pUndoManager->EnterListAction( aUndo, aUndo, 0 );
+ pUndoManager->EnterListAction( aUndo, aUndo, 0, rViewData.GetViewShell()->GetViewShellId() );
ScMarkData::const_iterator itr = rMark.begin(), itrEnd = rMark.end();
for (; itr != itrEnd; ++itr)
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index 54cc27a520f4..44a79431fc0c 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -1181,7 +1181,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
if ( bRecord )
{
OUString aUndo = ScGlobal::GetRscString( pClipDoc->IsCutMode() ? STR_UNDO_MOVE : STR_UNDO_COPY );
- pUndoMgr->EnterListAction( aUndo, aUndo, 0 );
+ pUndoMgr->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
}
if (bClipOver)
@@ -1576,7 +1576,7 @@ bool ScViewFunc::PasteMultiRangesFromClip(
::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
OUString aUndo = ScGlobal::GetRscString(
pClipDoc->IsCutMode() ? STR_UNDO_CUT : STR_UNDO_COPY);
- pUndoMgr->EnterListAction(aUndo, aUndo, 0);
+ pUndoMgr->EnterListAction(aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId());
ScUndoPasteOptions aOptions; // store options for repeat
aOptions.nFunction = nFunction;
@@ -1740,7 +1740,7 @@ bool ScViewFunc::PasteFromClipToMultiRanges(
svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
OUString aUndo = ScGlobal::GetRscString(
pClipDoc->IsCutMode() ? STR_UNDO_CUT : STR_UNDO_COPY);
- pUndoMgr->EnterListAction(aUndo, aUndo, 0);
+ pUndoMgr->EnterListAction(aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId());
ScUndoPasteOptions aOptions; // store options for repeat
aOptions.nFunction = nFunction;
@@ -1809,7 +1809,7 @@ bool ScViewFunc::MoveBlockTo( const ScRange& rSource, const ScAddress& rDestPos,
// moving within one table and several tables selected -> apply to all selected tables
OUString aUndo = ScGlobal::GetRscString( bCut ? STR_UNDO_MOVE : STR_UNDO_COPY );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
// collect ranges of consecutive selected tables
diff --git a/sc/source/ui/view/viewfun6.cxx b/sc/source/ui/view/viewfun6.cxx
index 99e088ed9b4f..ae40363227b9 100644
--- a/sc/source/ui/view/viewfun6.cxx
+++ b/sc/source/ui/view/viewfun6.cxx
@@ -45,6 +45,7 @@
#include "drawview.hxx"
#include "globalnames.hxx"
#include "inputhdl.hxx"
+#include "tabvwsh.hxx"
#include <vector>
@@ -438,7 +439,7 @@ void ScViewFunc::InsertCurrentTime(short nReqFmt, const OUString& rUndoStr)
}
::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
- pUndoMgr->EnterListAction(rUndoStr, rUndoStr, 0);
+ pUndoMgr->EnterListAction(rUndoStr, rUndoStr, 0, rViewData.GetViewShell()->GetViewShellId());
pDocSh->GetDocFunc().SetValueCell(aCurPos, fVal, true);
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index a7d4b186d6af..5f23f4ff4f3e 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2290,7 +2290,7 @@ void ScViewFunc::ProtectSheet( SCTAB nTab, const ScTableProtection& rProtect )
if (bUndo)
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_PROTECT_TAB );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
}
ScMarkData::iterator itr = rMark.begin(), itrEnd = rMark.end();
@@ -2320,7 +2320,7 @@ void ScViewFunc::Protect( SCTAB nTab, const OUString& rPassword )
if (bUndo)
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_PROTECT_TAB );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
}
ScMarkData::iterator itr = rMark.begin(), itrEnd = rMark.end();
@@ -2352,7 +2352,7 @@ bool ScViewFunc::Unprotect( SCTAB nTab, const OUString& rPassword )
if (bUndo)
{
OUString aUndo = ScGlobal::GetRscString( STR_UNDO_UNPROTECT_TAB );
- pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0 );
+ pDocSh->GetUndoManager()->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
}
ScMarkData::iterator itr = rMark.begin(), itrEnd = rMark.end();
diff --git a/sd/inc/undo/undomanager.hxx b/sd/inc/undo/undomanager.hxx
index ecea0ed3949e..a0200382ae27 100644
--- a/sd/inc/undo/undomanager.hxx
+++ b/sd/inc/undo/undomanager.hxx
@@ -31,7 +31,7 @@ class UndoManager : public SdrUndoManager
public:
UndoManager( sal_uInt16 nMaxUndoActionCount = 20 );
- virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId) override;
+ virtual void EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, sal_Int32 nViewShellId) override;
virtual void AddUndoAction( SfxUndoAction *pAction, bool bTryMerg=false ) override;
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index 33656fe616d6..c423141560a9 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -60,6 +60,7 @@
#include "../ui/inc/GraphicDocShell.hxx"
#include "../ui/inc/ViewShell.hxx"
#include "../ui/inc/View.hxx"
+#include "../ui/inc/ViewShellBase.hxx"
#include "../ui/inc/cfgids.hxx"
#include "../ui/inc/strings.hrc"
@@ -484,7 +485,10 @@ bool SdDrawDocument::InsertBookmarkAsPage(
if( mpDocSh )
{
pUndoMgr = mpDocSh->GetUndoManager();
- pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_INSERTPAGES), "", 0);
+ sal_Int32 nViewShellId = -1;
+ if (sd::ViewShell* pViewShell = mpDocSh->GetViewShell())
+ nViewShellId = pViewShell->GetViewShellBase().GetViewShellId();
+ pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_INSERTPAGES), "", 0, nViewShellId);
}
// Refactored copy'n'pasted layout name collection into IterateBookmarkPages
@@ -1422,7 +1426,10 @@ void SdDrawDocument::SetMasterPage(sal_uInt16 nSdPageNum,
if (bUndo)
{
- pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_SET_PRESLAYOUT), OUString(), 0);
+ sal_Int32 nViewShellId = -1;
+ if (sd::ViewShell* pViewShell = mpDocSh->GetViewShell())
+ nViewShellId = pViewShell->GetViewShellBase().GetViewShellId();
+ pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_SET_PRESLAYOUT), OUString(), 0, nViewShellId);
}
SdPage* pSelectedPage = GetSdPage(nSdPageNum, PK_STANDARD);
diff --git a/sd/source/core/undo/undomanager.cxx b/sd/source/core/undo/undomanager.cxx
index 20e13edde08a..bbf2069ce75b 100644
--- a/sd/source/core/undo/undomanager.cxx
+++ b/sd/source/core/undo/undomanager.cxx
@@ -27,12 +27,12 @@ UndoManager::UndoManager( sal_uInt16 nMaxUndoActionCount /* = 20 */ )
{
}
-void UndoManager::EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId /* =0 */)
+void UndoManager::EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, sal_Int32 nViewShellId)
{
if( !IsDoing() )
{
ClearLinkedRedoActions();
- SdrUndoManager::EnterListAction( rComment, rRepeatComment, nId );
+ SdrUndoManager::EnterListAction( rComment, rRepeatComment, nId, nViewShellId );
}
}
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index 92f4d909677f..a59ec42f25cc 100755
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -245,7 +245,7 @@ void lcl_CreateUndoForPages(
return;
OUString aComment( SdResId(STR_UNDO_SLIDE_PARAMS) );
- pManager->EnterListAction(aComment, aComment, 0);
+ pManager->EnterListAction(aComment, aComment, 0, rBase.GetViewShellId());
SdUndoGroup* pUndoGroup = new SdUndoGroup( pDoc );
pUndoGroup->SetComment( aComment );
diff --git a/sd/source/ui/func/fubullet.cxx b/sd/source/ui/func/fubullet.cxx
index f03dfa544f20..ac1b89fa5ba1 100644
--- a/sd/source/ui/func/fubullet.cxx
+++ b/sd/source/ui/func/fubullet.cxx
@@ -25,6 +25,7 @@
#include <editeng/fontitem.hxx>
#include "OutlineViewShell.hxx"
#include "DrawViewShell.hxx"
+#include "ViewShellBase.hxx"
#include "Window.hxx"
#include "drawdoc.hxx"
#include "strings.hrc"
@@ -128,7 +129,7 @@ void FuBullet::InsertFormattingMark( sal_Unicode cMark )
// prepare undo
::svl::IUndoManager& rUndoMgr = pOL->GetUndoManager();
rUndoMgr.EnterListAction(SD_RESSTR(STR_UNDO_INSERT_SPECCHAR),
- "", 0 );
+ "", 0, mpViewShell->GetViewShellBase().GetViewShellId() );
// insert given text
OUString aStr( cMark );
@@ -255,8 +256,9 @@ void FuBullet::InsertSpecialCharacter( SfxRequest& rReq )
aOldSet.Put( pOV->GetAttribs() );
::svl::IUndoManager& rUndoMgr = pOL->GetUndoManager();
+ int nViewShellId = mpViewShell ? mpViewShell->GetViewShellBase().GetViewShellId() : -1;
rUndoMgr.EnterListAction(SD_RESSTR(STR_UNDO_INSERT_SPECCHAR),
- "", 0 );
+ "", 0, nViewShellId );
pOV->InsertText(aChars, true);
// set attributes (set font)
diff --git a/sd/source/ui/func/fuinsfil.cxx b/sd/source/ui/func/fuinsfil.cxx
index 1a4152be0e9c..54f06c2d2e4e 100644
--- a/sd/source/ui/func/fuinsfil.cxx
+++ b/sd/source/ui/func/fuinsfil.cxx
@@ -54,6 +54,7 @@
#include "glob.hrc"
#include "sdpage.hxx"
#include "strmname.h"
+#include "ViewShellBase.hxx"
#include "DrawViewShell.hxx"
#include "OutlineViewShell.hxx"
#include "DrawDocShell.hxx"
@@ -629,8 +630,9 @@ void FuInsertFile::InsTextOrRTFinOlMode(SfxMedium* pMedium)
nNewPages = 0;
+ int nViewShellId = mpViewShell ? mpViewShell->GetViewShellBase().GetViewShellId() : -1;
rDocliner.GetUndoManager().EnterListAction(
- SD_RESSTR(STR_UNDO_INSERT_FILE), OUString(), 0 );
+ SD_RESSTR(STR_UNDO_INSERT_FILE), OUString(), 0, nViewShellId );
sal_Int32 nSourcePos = 0;
SfxStyleSheet* pStyleSheet = pPage->GetStyleSheetForPresObj( PRESOBJ_OUTLINE );
diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx
index 6dc2bbabab40..7c21c3944d49 100644
--- a/sd/source/ui/func/fuoaprms.cxx
+++ b/sd/source/ui/func/fuoaprms.cxx
@@ -36,6 +36,7 @@
#include "glob.hrc"
#include "drawdoc.hxx"
#include "ViewShell.hxx"
+#include "ViewShellBase.hxx"
#include "anminfo.hxx"
#include "unoaprms.hxx"
#include "sdundogr.hxx"
@@ -619,7 +620,7 @@ void FuObjectAnimationParameters::DoExecute( SfxRequest& rReq )
// with 'following curves', we have an additional UndoAction
// therefore cling? here
- pUndoMgr->EnterListAction(aComment, aComment, 0);
+ pUndoMgr->EnterListAction(aComment, aComment, 0, mpViewShell->GetViewShellBase().GetViewShellId());
// create undo group
SdUndoGroup* pUndoGroup = new SdUndoGroup(mpDoc);
diff --git a/sd/source/ui/func/fupage.cxx b/sd/source/ui/func/fupage.cxx
index 712549e1b00f..02df0da5defc 100644
--- a/sd/source/ui/func/fupage.cxx
+++ b/sd/source/ui/func/fupage.cxx
@@ -59,6 +59,7 @@
#include "drawdoc.hxx"
#include "DrawDocShell.hxx"
#include "ViewShell.hxx"
+#include "ViewShellBase.hxx"
#include "DrawViewShell.hxx"
#include "app.hrc"
#include "unchss.hxx"
@@ -417,7 +418,7 @@ const SfxItemSet* FuPage::ExecuteDialog( vcl::Window* pParent )
{
OUString aComment(SdResId(STR_UNDO_CHANGE_PAGEFORMAT));
::svl::IUndoManager* pUndoMgr = mpDocSh->GetUndoManager();
- pUndoMgr->EnterListAction(aComment, aComment, 0);
+ pUndoMgr->EnterListAction(aComment, aComment, 0, mpViewShell->GetViewShellBase().GetViewShellId());
SdUndoGroup* pUndoGroup = new SdUndoGroup(mpDoc);
pUndoGroup->SetComment(aComment);
diff --git a/sd/source/ui/sidebar/DocumentHelper.cxx b/sd/source/ui/sidebar/DocumentHelper.cxx
index 0380081644b9..7c626602f6c6 100644
--- a/sd/source/ui/sidebar/DocumentHelper.cxx
+++ b/sd/source/ui/sidebar/DocumentHelper.cxx
@@ -27,6 +27,8 @@
#include "strings.hrc"
#include "sdresid.hxx"
#include "undoback.hxx"
+#include "ViewShell.hxx"
+#include "ViewShellBase.hxx"
#include <com/sun/star/drawing/XDrawPagesSupplier.hpp>
#include <com/sun/star/drawing/XDrawPages.hpp>
#include <com/sun/star/frame/XComponentLoader.hpp>
@@ -319,7 +321,7 @@ void DocumentHelper::AssignMasterPageToPageList (
::svl::IUndoManager* pUndoMgr = rTargetDocument.GetDocSh()->GetUndoManager();
if( pUndoMgr )
- pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_SET_PRESLAYOUT), OUString(), 0);
+ pUndoMgr->EnterListAction(SD_RESSTR(STR_UNDO_SET_PRESLAYOUT), OUString(), 0, rTargetDocument.GetDocSh()->GetViewShell()->GetViewShellBase().GetViewShellId());
SdPage* pMasterPageInDocument = ProvideMasterPage(rTargetDocument,pMasterPage,rpPageList);
if (pMasterPageInDocument == nullptr)
diff --git a/sd/source/ui/view/ViewShellImplementation.cxx b/sd/source/ui/view/ViewShellImplementation.cxx
index 709ab58a81cf..f13c20307521 100644
--- a/sd/source/ui/view/ViewShellImplementation.cxx
+++ b/sd/source/ui/view/ViewShellImplementation.cxx
@@ -171,7 +171,7 @@ void ViewShell::Implementation::ProcessModifyPageSlot (
if( pUndoManager )
{
OUString aComment( SdResId(STR_UNDO_MODIFY_PAGE) );
- pUndoManager->EnterListAction(aComment, aComment, 0);
+ pUndoManager->EnterListAction(aComment, aComment, 0, mrViewShell.GetViewShellBase().GetViewShellId());
ModifyPageUndoAction* pAction = new ModifyPageUndoAction(
pDocument, pUndoPage, aNewName, aNewAutoLayout, bBVisible, bBObjsVisible);
pUndoManager->AddUndoAction(pAction);
diff --git a/sd/source/ui/view/drawview.cxx b/sd/source/ui/view/drawview.cxx
index 6ba151f9f9f8..a05aa94b1956 100644
--- a/sd/source/ui/view/drawview.cxx
+++ b/sd/source/ui/view/drawview.cxx
@@ -52,6 +52,7 @@
#include "drawdoc.hxx"
#include "DrawDocShell.hxx"
#include "sdpage.hxx"
+#include "ViewShellBase.hxx"
#include "DrawViewShell.hxx"
#include "pres.hxx"
#include "sdresid.hxx"
@@ -181,7 +182,7 @@ bool DrawView::SetAttributes(const SfxItemSet& rSet,
// replace placeholder by template name
OUString aComment(SD_RESSTR(STR_UNDO_CHANGE_PRES_OBJECT));
aComment = aComment.replaceFirst("$", SD_RESSTR(STR_PSEUDOSHEET_OUTLINE));
- mpDocSh->GetUndoManager()->EnterListAction( aComment, OUString(), 0 );
+ mpDocSh->GetUndoManager()->EnterListAction( aComment, OUString(), 0, mpDrawViewShell->GetViewShellBase().GetViewShellId() );
std::vector<Paragraph*> aSelList;
pOV->CreateSelectionList(aSelList);
@@ -545,7 +546,8 @@ void DrawView::DeleteMarked()
{
OUString aUndo(SVX_RESSTR(STR_EditDelete));
aUndo = aUndo.replaceFirst("%1", GetDescriptionOfMarkedObjects());
- pUndoManager->EnterListAction(aUndo, aUndo, 0);
+ sal_Int32 nViewShellId = mpDrawViewShell ? mpDrawViewShell->GetViewShellBase().GetViewShellId() : -1;
+ pUndoManager->EnterListAction(aUndo, aUndo, 0, nViewShellId);
}
SdPage* pPage = nullptr;
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index ca3c3704b529..abe829c7fc37 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -211,7 +211,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
if( rMarkList.GetMarkCount() == 1 )
{
- pUndoManager->EnterListAction("", "", 0);
+ pUndoManager->EnterListAction("", "", 0, GetViewShellBase().GetViewShellId());
mpDrawView->BegUndo();
SdrObject* pObj = rMarkList.GetMark(0)->GetMarkedSdrObj();
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 024b5be5d39f..d4fc5b7e262e 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -1459,7 +1459,7 @@ void OutlineView::IgnoreCurrentPageChanges (bool bIgnoreChanges)
and or the drawing document model. It will create needed undo actions */
void OutlineView::BeginModelChange()
{
- mrOutliner.GetUndoManager().EnterListAction("", "", 0);
+ mrOutliner.GetUndoManager().EnterListAction("", "", 0, mrOutlineViewShell.GetViewShellBase().GetViewShellId());
BegUndo(SD_RESSTR(STR_UNDO_CHANGE_TITLE_AND_LAYOUT));
}
diff --git a/svl/source/undo/undo.cxx b/svl/source/undo/undo.cxx
index 2de91945e2fc..e9b2c0681a8d 100644
--- a/svl/source/undo/undo.cxx
+++ b/svl/source/undo/undo.cxx
@@ -998,7 +998,8 @@ void SfxUndoManager::RemoveUndoListener( SfxUndoListener& i_listener )
* Inserts a ListUndoAction and sets its UndoArray as current.
*/
void SfxUndoManager::EnterListAction( const OUString& rComment,
- const OUString &rRepeatComment, sal_uInt16 nId )
+ const OUString &rRepeatComment, sal_uInt16 nId,
+ sal_Int32 nViewShellId )
{
UndoManagerGuard aGuard( *m_xData );
@@ -1009,7 +1010,7 @@ void SfxUndoManager::EnterListAction( const OUString& rComment,
return;
m_xData->pFatherUndoArray = m_xData->pActUndoArray;
- SfxListUndoAction* pAction = new SfxListUndoAction( rComment, rRepeatComment, nId, m_xData->pActUndoArray );
+ SfxListUndoAction* pAction = new SfxListUndoAction( rComment, rRepeatComment, nId, nViewShellId, m_xData->pActUndoArray );
OSL_VERIFY( ImplAddUndoAction_NoNotify( pAction, false, false, aGuard ) );
// expected to succeed: all conditions under which it could fail should have been checked already
m_xData->pActUndoArray = pAction;
@@ -1265,12 +1266,13 @@ void SfxUndoManager::dumpAsXml(xmlTextWriterPtr pWriter) const
struct SfxListUndoAction::Impl
{
sal_uInt16 mnId;
+ sal_Int32 mnViewShellId;
OUString maComment;
OUString maRepeatComment;
- Impl( sal_uInt16 nId, const OUString& rComment, const OUString& rRepeatComment ) :
- mnId(nId), maComment(rComment), maRepeatComment(rRepeatComment) {}
+ Impl( sal_uInt16 nId, sal_Int32 nViewShellId, const OUString& rComment, const OUString& rRepeatComment ) :
+ mnId(nId), mnViewShellId(nViewShellId), maComment(rComment), maRepeatComment(rRepeatComment) {}
};
sal_uInt16 SfxListUndoAction::GetId() const
@@ -1283,6 +1285,11 @@ OUString SfxListUndoAction::GetComment() const
return mpImpl->maComment;
}
+sal_Int32 SfxListUndoAction::GetViewShellId() const
+{
+ return mpImpl->mnViewShellId;
+}
+
void SfxListUndoAction::SetComment(const OUString& rComment)
{
mpImpl->maComment = rComment;
@@ -1297,8 +1304,9 @@ SfxListUndoAction::SfxListUndoAction(
const OUString &rComment,
const OUString &rRepeatComment,
sal_uInt16 nId,
+ sal_Int32 nViewShellId,
SfxUndoArray *pFather ) :
- mpImpl(new Impl(nId, rComment, rRepeatComment))
+ mpImpl(new Impl(nId, nViewShellId, rComment, rRepeatComment))
{
pFatherUndoArray = pFather;
nMaxUndoActions = USHRT_MAX;
diff --git a/svx/source/svdraw/svdmodel.cxx b/svx/source/svdraw/svdmodel.cxx
index 8dafcc38c05b..b2b1475a10ac 100644
--- a/svx/source/svdraw/svdmodel.cxx
+++ b/svx/source/svdraw/svdmodel.cxx
@@ -93,6 +93,7 @@
#include <libxml/xmlwriter.h>
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
#include <comphelper/lok.hxx>
+#include <sfx2/viewsh.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -464,7 +465,10 @@ void SdrModel::BegUndo()
{
if( mpImpl->mpUndoManager )
{
- mpImpl->mpUndoManager->EnterListAction("","",0);
+ int nViewShellId = -1;
+ if (SfxViewShell* pViewShell = SfxViewShell::Current())
+ nViewShellId = pViewShell->GetViewShellId();
+ mpImpl->mpUndoManager->EnterListAction("","",0,nViewShellId);
nUndoLevel++;
}
else if( IsUndoEnabled() )
@@ -485,7 +489,10 @@ void SdrModel::BegUndo(const OUString& rComment)
{
if( mpImpl->mpUndoManager )
{
- mpImpl->mpUndoManager->EnterListAction( rComment, "", 0 );
+ int nViewShellId = -1;
+ if (SfxViewShell* pViewShell = SfxViewShell::Current())
+ nViewShellId = pViewShell->GetViewShellId();
+ mpImpl->mpUndoManager->EnterListAction( rComment, "", 0, nViewShellId );
nUndoLevel++;
}
else if( IsUndoEnabled() )
@@ -507,7 +514,10 @@ void SdrModel::BegUndo(const OUString& rComment, const OUString& rObjDescr, SdrR
{
aComment = aComment.replaceFirst("%1", rObjDescr);
}
- mpImpl->mpUndoManager->EnterListAction( aComment,"",0 );
+ int nViewShellId = -1;
+ if (SfxViewShell* pViewShell = SfxViewShell::Current())
+ nViewShellId = pViewShell->GetViewShellId();
+ mpImpl->mpUndoManager->EnterListAction( aComment,"",0,nViewShellId );
nUndoLevel++;
}
else if( IsUndoEnabled() )
diff --git a/sw/source/core/doc/docnew.cxx b/sw/source/core/doc/docnew.cxx
index daa055b22863..42dbb2221dca 100644
--- a/sw/source/core/doc/docnew.cxx
+++ b/sw/source/core/doc/docnew.cxx
@@ -611,6 +611,7 @@ void SwDoc::SetDocShell( SwDocShell* pDSh )
if (mpDocShell)
{
mpDocShell->SetUndoManager(& GetUndoManager());
+ GetUndoManager().SetDocShell(mpDocShell);
}
getIDocumentLinksAdministration().GetLinkManager().SetPersist( mpDocShell );
diff --git a/sw/source/core/inc/UndoManager.hxx b/sw/source/core/inc/UndoManager.hxx
index 95a7cbdbfd57..68774c47d003 100644
--- a/sw/source/core/inc/UndoManager.hxx
+++ b/sw/source/core/inc/UndoManager.hxx
@@ -28,6 +28,7 @@
class IDocumentDrawModelAccess;
class IDocumentRedlineAccess;
class IDocumentState;
+class SwDocShell;
namespace sw {
@@ -85,6 +86,7 @@ public:
SwNodes const& GetUndoNodes() const;
SwNodes & GetUndoNodes();
+ void SetDocShell(SwDocShell* pDocShell);
private:
IDocumentDrawModelAccess & m_rDrawModelAccess;
@@ -99,6 +101,7 @@ private:
bool m_bLockUndoNoModifiedPosition : 1;
/// position in Undo-Array at which Doc was saved (and is not modified)
UndoStackMark m_UndoSaveMark;
+ SwDocShell* m_pDocShell;
typedef enum { UNDO = int(true), REDO = int(false) } UndoOrRedo_t;
bool impl_DoUndoRedo(UndoOrRedo_t const undoOrRedo);
diff --git a/sw/source/core/undo/docundo.cxx b/sw/source/core/undo/docundo.cxx
index 056179d5da9f..9f70fa0d1768 100644
--- a/sw/source/core/undo/docundo.cxx
+++ b/sw/source/core/undo/docundo.cxx
@@ -23,6 +23,8 @@
#include <svx/svdmodel.hxx>
#include <swmodule.hxx>
#include <doc.hxx>
+#include <docsh.hxx>
+#include <view.hxx>
#include <drawdoc.hxx>
#include <ndarr.hxx>
#include <pam.hxx>
@@ -79,6 +81,11 @@ bool UndoManager::IsUndoNodes(SwNodes const& rNodes) const
return & rNodes == m_xUndoNodes.get();
}
+void UndoManager::SetDocShell(SwDocShell* pDocShell)
+{
+ m_pDocShell = pDocShell;
+}
+
size_t UndoManager::GetUndoActionCount(const bool bCurrentLevel) const
{
return SdrUndoManager::GetUndoActionCount(bCurrentLevel);
@@ -212,7 +219,13 @@ UndoManager::StartUndo(SwUndoId const i_eUndoId,
comment = pRewriter->Apply(comment);
}
- SdrUndoManager::EnterListAction(comment, comment, eUndoId);
+ int nViewShellId = -1;
+ if (m_pDocShell)
+ {
+ if (const SwView* pView = m_pDocShell->GetView())
+ nViewShellId = pView->GetViewShellId();
+ }
+ SdrUndoManager::EnterListAction(comment, comment, eUndoId, nViewShellId);
return eUndoId;
}
@@ -563,7 +576,13 @@ bool UndoManager::Repeat(::sw::RepeatContext & rContext,
sal_uInt16 const nId(pRepeatAction->GetId());
if (DoesUndo())
{
- EnterListAction(comment, rcomment, nId);
+ int nViewShellId = -1;
+ if (m_pDocShell)
+ {
+ if (const SwView* pView = m_pDocShell->GetView())
+ nViewShellId = pView->GetViewShellId();
+ }
+ EnterListAction(comment, rcomment, nId, nViewShellId);
}
SwPaM* pTmp = rContext.m_pCurrentPaM;
diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx
index deaad286e0dc..c71355780b6e 100644
--- a/vcl/source/edit/texteng.cxx
+++ b/vcl/source/edit/texteng.cxx
@@ -1303,7 +1303,7 @@ void TextEngine::UndoActionStart( sal_uInt16 nId )
if ( IsUndoEnabled() && !IsInUndo() )
{
OUString aComment;
- GetUndoManager().EnterListAction( aComment, OUString(), nId );
+ GetUndoManager().EnterListAction( aComment, OUString(), nId, -1 );
}
}