[Libreoffice-commits] core.git: basctl/source chart2/source cui/source dbaccess/source desktop/source editeng/source framework/source include/editeng include/framework include/sfx2 include/svl include/svx include/vcl reportdesign/source sc/source sd/inc sd/source sfx2/source starmath/inc starmath/source svl/source svx/source sw/source vcl/source

Noel Grandin noel.grandin at collabora.co.uk
Fri Jul 13 06:39:50 UTC 2018


 basctl/source/basicide/baside2.cxx                             |    2 
 basctl/source/basicide/baside2.hxx                             |    2 
 basctl/source/basicide/baside3.cxx                             |    2 
 basctl/source/basicide/basidesh.cxx                            |    4 
 basctl/source/basicide/bastypes.cxx                            |    2 
 basctl/source/inc/baside3.hxx                                  |    2 
 basctl/source/inc/basidesh.hxx                                 |    2 
 basctl/source/inc/bastypes.hxx                                 |    8 
 chart2/source/model/main/UndoManager.cxx                       |    4 
 cui/source/dialogs/SpellDialog.cxx                             |    4 
 dbaccess/source/ui/misc/dbaundomanager.cxx                     |    4 
 desktop/source/lib/init.cxx                                    |    2 
 editeng/source/editeng/editeng.cxx                             |    4 
 editeng/source/editeng/impedit.hxx                             |    6 
 editeng/source/outliner/outliner.cxx                           |    4 
 framework/source/fwe/helper/undomanagerhelper.cxx              |   63 +-
 include/editeng/editeng.hxx                                    |    6 
 include/editeng/outliner.hxx                                   |    9 
 include/framework/undomanagerhelper.hxx                        |   23 
 include/sfx2/shell.hxx                                         |   12 
 include/svl/undo.hxx                                           |  240 +++-------
 include/svx/svdedxv.hxx                                        |    2 
 include/vcl/texteng.hxx                                        |   10 
 reportdesign/source/ui/report/ReportController.cxx             |    4 
 sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx |    2 
 sc/source/ui/StatisticsDialogs/SamplingDialog.cxx              |    2 
 sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx |    2 
 sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx |    2 
 sc/source/ui/docshell/docfunc.cxx                              |   12 
 sc/source/ui/docshell/docfuncutil.cxx                          |    2 
 sc/source/ui/docshell/docsh.cxx                                |    2 
 sc/source/ui/drawfunc/drawsh2.cxx                              |    2 
 sc/source/ui/drawfunc/drtxtob.cxx                              |    2 
 sc/source/ui/drawfunc/futext3.cxx                              |    2 
 sc/source/ui/inc/docfuncutil.hxx                               |    2 
 sc/source/ui/inc/docsh.hxx                                     |    2 
 sc/source/ui/inc/tabvwsh.hxx                                   |    2 
 sc/source/ui/view/auditsh.cxx                                  |    2 
 sc/source/ui/view/dbfunc3.cxx                                  |    2 
 sc/source/ui/view/drawview.cxx                                 |    2 
 sc/source/ui/view/editsh.cxx                                   |    2 
 sc/source/ui/view/formatsh.cxx                                 |    2 
 sc/source/ui/view/gridwin.cxx                                  |    2 
 sc/source/ui/view/pgbrksh.cxx                                  |    2 
 sc/source/ui/view/pivotsh.cxx                                  |    2 
 sc/source/ui/view/tabvwsh4.cxx                                 |    4 
 sc/source/ui/view/tabvwshb.cxx                                 |    4 
 sc/source/ui/view/tabvwshf.cxx                                 |    2 
 sc/source/ui/view/viewfun3.cxx                                 |    8 
 sc/source/ui/view/viewfun6.cxx                                 |    2 
 sd/inc/undo/undomanager.hxx                                    |    4 
 sd/source/core/drawdoc3.cxx                                    |    6 
 sd/source/core/sdpage.cxx                                      |   12 
 sd/source/core/undo/undomanager.cxx                            |    2 
 sd/source/ui/animations/CustomAnimationPane.cxx                |    4 
 sd/source/ui/animations/SlideTransitionPane.cxx                |    2 
 sd/source/ui/dlg/LayerTabBar.cxx                               |    4 
 sd/source/ui/docshell/docshell.cxx                             |    4 
 sd/source/ui/func/fubullet.cxx                                 |    4 
 sd/source/ui/func/fuoaprms.cxx                                 |    2 
 sd/source/ui/inc/DrawDocShell.hxx                              |    3 
 sd/source/ui/inc/SlideSorterViewShell.hxx                      |    2 
 sd/source/ui/inc/ViewShell.hxx                                 |    2 
 sd/source/ui/sidebar/DocumentHelper.cxx                        |    4 
 sd/source/ui/slidesorter/controller/SlsSlotManager.cxx         |    2 
 sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx        |    2 
 sd/source/ui/view/ViewShellImplementation.cxx                  |    2 
 sd/source/ui/view/ViewShellManager.cxx                         |    4 
 sd/source/ui/view/drviews2.cxx                                 |    4 
 sd/source/ui/view/drviewsb.cxx                                 |    2 
 sd/source/ui/view/outlview.cxx                                 |    4 
 sd/source/ui/view/viewshe3.cxx                                 |    4 
 sd/source/ui/view/viewshel.cxx                                 |   10 
 sfx2/source/appl/appcfg.cxx                                    |    2 
 sfx2/source/control/shell.cxx                                  |    4 
 sfx2/source/doc/docundomanager.cxx                             |   13 
 sfx2/source/doc/objserv.cxx                                    |    2 
 sfx2/source/view/viewfrm.cxx                                   |    4 
 starmath/inc/document.hxx                                      |    2 
 starmath/source/document.cxx                                   |   30 -
 svl/source/undo/undo.cxx                                       |   10 
 svx/source/svdraw/svdedxv.cxx                                  |    2 
 sw/source/core/inc/UndoManager.hxx                             |    2 
 sw/source/core/undo/docundo.cxx                                |    2 
 sw/source/uibase/inc/annotsh.hxx                               |    2 
 sw/source/uibase/inc/drwtxtsh.hxx                              |    2 
 sw/source/uibase/shells/annotsh.cxx                            |   14 
 sw/source/uibase/shells/drwtxtsh.cxx                           |   14 
 sw/source/uibase/uiview/srcview.cxx                            |    2 
 vcl/source/edit/texteng.cxx                                    |    2 
 90 files changed, 302 insertions(+), 389 deletions(-)

New commits:
commit 2d71dd52b6d91660cda6cb8f9457463439f56e20
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Thu Jul 12 09:42:07 2018 +0200

    merge IUndoManager into SfxUndoManager
    
    SfxUndoManager is the only implementation of the IUnderManager
    "interface", and it lives in the same header.
    Plus this way we can get rid of some covariant parameters,
    which will make using std::unique_ptr easier.
    
    Change-Id: I6661b9876b18da830bead78794d237886cd3c5c9
    Reviewed-on: https://gerrit.libreoffice.org/57317
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/basctl/source/basicide/baside2.cxx b/basctl/source/basicide/baside2.cxx
index 1e8d8a771cf6..7e39d8f9da5e 100644
--- a/basctl/source/basicide/baside2.cxx
+++ b/basctl/source/basicide/baside2.cxx
@@ -1251,7 +1251,7 @@ sal_uInt16 ModulWindow::StartSearchAndReplace( const SvxSearchItem& rSearchItem,
     return nFound;
 }
 
-svl::IUndoManager* ModulWindow::GetUndoManager()
+SfxUndoManager* ModulWindow::GetUndoManager()
 {
     if ( GetEditEngine() )
         return &GetEditEngine()->GetUndoManager();
diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx
index 05b8bda07041..c899f1dfdde6 100644
--- a/basctl/source/basicide/baside2.hxx
+++ b/basctl/source/basicide/baside2.hxx
@@ -386,7 +386,7 @@ public:
     virtual void        BasicStarted() override;
     virtual void        BasicStopped() override;
 
-    virtual ::svl::IUndoManager*
+    virtual SfxUndoManager*
                         GetUndoManager() override;
 
     const OUString&         GetModule() const { return m_aModule; }
diff --git a/basctl/source/basicide/baside3.cxx b/basctl/source/basicide/baside3.cxx
index f43d141bb55a..91e1d4972539 100644
--- a/basctl/source/basicide/baside3.cxx
+++ b/basctl/source/basicide/baside3.cxx
@@ -1131,7 +1131,7 @@ bool DialogWindow::IsModified()
     return m_pEditor->IsModified();
 }
 
-::svl::IUndoManager* DialogWindow::GetUndoManager()
+SfxUndoManager* DialogWindow::GetUndoManager()
 {
     return m_pUndoMgr.get();
 }
diff --git a/basctl/source/basicide/basidesh.cxx b/basctl/source/basicide/basidesh.cxx
index b0b7a3769110..78009761502d 100644
--- a/basctl/source/basicide/basidesh.cxx
+++ b/basctl/source/basicide/basidesh.cxx
@@ -473,9 +473,9 @@ bool Shell::NextPage( bool bPrev )
     return bRet;
 }
 
-::svl::IUndoManager* Shell::GetUndoManager()
+SfxUndoManager* Shell::GetUndoManager()
 {
-    ::svl::IUndoManager* pMgr = nullptr;
+    SfxUndoManager* pMgr = nullptr;
     if( pCurWin )
         pMgr = pCurWin->GetUndoManager();
 
diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx
index d648353c08f9..87d0b85123d1 100644
--- a/basctl/source/basicide/bastypes.cxx
+++ b/basctl/source/basicide/bastypes.cxx
@@ -196,7 +196,7 @@ bool BaseWindow::IsModified ()
     return true;
 }
 
-::svl::IUndoManager* BaseWindow::GetUndoManager()
+SfxUndoManager* BaseWindow::GetUndoManager()
 {
     return nullptr;
 }
diff --git a/basctl/source/inc/baside3.hxx b/basctl/source/inc/baside3.hxx
index 9c078e608d00..6d332ca90c65 100644
--- a/basctl/source/inc/baside3.hxx
+++ b/basctl/source/inc/baside3.hxx
@@ -103,7 +103,7 @@ public:
     virtual bool        IsModified() override;
     bool                IsPasteAllowed();
 
-    virtual svl::IUndoManager* GetUndoManager() override;
+    virtual SfxUndoManager* GetUndoManager() override;
     // return number of pages to be printed
     virtual sal_Int32 countPages( Printer* pPrinter ) override;
     // print page
diff --git a/basctl/source/inc/basidesh.hxx b/basctl/source/inc/basidesh.hxx
index 5bf56c915afb..d732e53747f9 100644
--- a/basctl/source/inc/basidesh.hxx
+++ b/basctl/source/inc/basidesh.hxx
@@ -162,7 +162,7 @@ public:
 
     SdrView*            GetCurDlgView() const;
 
-    svl::IUndoManager*  GetUndoManager() override;
+    SfxUndoManager*     GetUndoManager() override;
 
     virtual css::uno::Reference< css::view::XRenderable > GetRenderable() override;
 
diff --git a/basctl/source/inc/bastypes.hxx b/basctl/source/inc/bastypes.hxx
index 09820d2f6e43..87a5ffc644c9 100644
--- a/basctl/source/inc/bastypes.hxx
+++ b/basctl/source/inc/bastypes.hxx
@@ -35,11 +35,7 @@ class SfxRequest;
 class SvxSearchItem;
 class Printer;
 enum class SearchOptionFlags;
-
-namespace svl
-{
-    class IUndoManager;
-}
+class SfxUndoManager;
 
 namespace weld
 {
@@ -215,7 +211,7 @@ public:
     void AddStatus(int n) { nStatus |= n; }
     void ClearStatus(int n) { nStatus &= ~n; }
 
-    virtual svl::IUndoManager* GetUndoManager ();
+    virtual SfxUndoManager* GetUndoManager ();
 
     virtual SearchOptionFlags  GetSearchOptions();
     virtual sal_uInt16  StartSearchAndReplace (SvxSearchItem const&, bool bFromStart = false);
diff --git a/chart2/source/model/main/UndoManager.cxx b/chart2/source/model/main/UndoManager.cxx
index efc408fce7bf..2e9ac941bf19 100644
--- a/chart2/source/model/main/UndoManager.cxx
+++ b/chart2/source/model/main/UndoManager.cxx
@@ -67,7 +67,7 @@ namespace chart
 
             ::osl::Mutex&                       getMutex();
             // IUndoManagerImplementation
-            virtual ::svl::IUndoManager&        getImplUndoManager() override;
+            virtual SfxUndoManager&             getImplUndoManager() override;
             virtual Reference< XUndoManager >   getThis() override;
 
             // attribute access
@@ -97,7 +97,7 @@ namespace chart
             return m_rMutex;
         }
 
-        ::svl::IUndoManager& UndoManager_Impl::getImplUndoManager()
+        SfxUndoManager& UndoManager_Impl::getImplUndoManager()
         {
             return m_aUndoManager;
         }
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx
index b782ed533d73..b3672ff1c727 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -1906,7 +1906,7 @@ svx::SpellPortions SentenceEditWindow_Impl::CreateSpellPortions() const
 
 void SentenceEditWindow_Impl::Undo()
 {
-    ::svl::IUndoManager& rUndoMgr = GetTextEngine()->GetUndoManager();
+    SfxUndoManager& rUndoMgr = GetTextEngine()->GetUndoManager();
     DBG_ASSERT(GetUndoActionCount(), "no undo actions available" );
     if(!GetUndoActionCount())
         return;
@@ -1932,7 +1932,7 @@ void SentenceEditWindow_Impl::ResetUndo()
 
 void SentenceEditWindow_Impl::AddUndoAction( SfxUndoAction *pAction )
 {
-    ::svl::IUndoManager& rUndoMgr = GetTextEngine()->GetUndoManager();
+    SfxUndoManager& rUndoMgr = GetTextEngine()->GetUndoManager();
     rUndoMgr.AddUndoAction(pAction);
     GetSpellDialog()->m_pUndoPB->Enable();
 }
diff --git a/dbaccess/source/ui/misc/dbaundomanager.cxx b/dbaccess/source/ui/misc/dbaundomanager.cxx
index 2b8c5f06e1f1..6e9bb502400f 100644
--- a/dbaccess/source/ui/misc/dbaundomanager.cxx
+++ b/dbaccess/source/ui/misc/dbaundomanager.cxx
@@ -69,11 +69,11 @@ namespace dbaui
         ::framework::UndoManagerHelper  aUndoHelper;
 
         // IUndoManagerImplementation
-        virtual ::svl::IUndoManager&        getImplUndoManager() override;
+        virtual SfxUndoManager&             getImplUndoManager() override;
         virtual Reference< XUndoManager >   getThis() override;
     };
 
-    ::svl::IUndoManager& UndoManager_Impl::getImplUndoManager()
+    SfxUndoManager& UndoManager_Impl::getImplUndoManager()
     {
         return aUndoManager;
     }
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index a3723158e2c7..5cc15580e263 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -2991,7 +2991,7 @@ static char* getUndoOrRedo(LibreOfficeKitDocument* pThis, UndoOrRedo eCommand)
     if (!pObjectShell)
         return nullptr;
 
-    svl::IUndoManager* pUndoManager = pObjectShell->GetUndoManager();
+    SfxUndoManager* pUndoManager = pObjectShell->GetUndoManager();
     if (!pUndoManager)
         return nullptr;
 
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 4f8acffacdd4..5699c920878a 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -120,12 +120,12 @@ bool EditEngine::IsInUndo()
     return pImpEditEngine->IsInUndo();
 }
 
-::svl::IUndoManager& EditEngine::GetUndoManager()
+SfxUndoManager& EditEngine::GetUndoManager()
 {
     return pImpEditEngine->GetUndoManager();
 }
 
-::svl::IUndoManager* EditEngine::SetUndoManager(::svl::IUndoManager* pNew)
+SfxUndoManager* EditEngine::SetUndoManager(SfxUndoManager* pNew)
 {
     return pImpEditEngine->SetUndoManager(pNew);
 }
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 741fa77b3da0..737b347a4192 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -732,7 +732,7 @@ public:
     ImpEditEngine&          operator=(const ImpEditEngine&) = delete;
 
     inline EditUndoManager& GetUndoManager();
-    inline ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew);
+    inline SfxUndoManager* SetUndoManager(SfxUndoManager* pNew);
 
     void                    SetUpdateMode( bool bUp, EditView* pCurView = nullptr, bool bForceUpdate = false );
     bool                    GetUpdateMode() const   { return bUpdate; }
@@ -1145,9 +1145,9 @@ inline EditUndoManager& ImpEditEngine::GetUndoManager()
     return *pUndoManager;
 }
 
-inline ::svl::IUndoManager* ImpEditEngine::SetUndoManager(::svl::IUndoManager* pNew)
+inline SfxUndoManager* ImpEditEngine::SetUndoManager(SfxUndoManager* pNew)
 {
-    ::svl::IUndoManager* pRetval = pUndoManager;
+    SfxUndoManager* pRetval = pUndoManager;
 
     if(pUndoManager)
     {
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
index d595486c2fdb..294f000d3796 100644
--- a/editeng/source/outliner/outliner.cxx
+++ b/editeng/source/outliner/outliner.cxx
@@ -1151,12 +1151,12 @@ void Outliner::ImpFilterIndents( sal_Int32 nFirstPara, sal_Int32 nLastPara )
     pEditEngine->SetUpdateMode( bUpdate );
 }
 
-::svl::IUndoManager& Outliner::GetUndoManager()
+SfxUndoManager& Outliner::GetUndoManager()
 {
     return pEditEngine->GetUndoManager();
 }
 
-::svl::IUndoManager* Outliner::SetUndoManager(::svl::IUndoManager* pNew)
+SfxUndoManager* Outliner::SetUndoManager(SfxUndoManager* pNew)
 {
     return pEditEngine->SetUndoManager(pNew);
 }
diff --git a/framework/source/fwe/helper/undomanagerhelper.cxx b/framework/source/fwe/helper/undomanagerhelper.cxx
index 65f350b88a30..656d1f05d26b 100644
--- a/framework/source/fwe/helper/undomanagerhelper.cxx
+++ b/framework/source/fwe/helper/undomanagerhelper.cxx
@@ -61,7 +61,6 @@ namespace framework
     using ::com::sun::star::util::InvalidStateException;
     using ::com::sun::star::lang::IllegalArgumentException;
     using ::com::sun::star::util::XModifyListener;
-    using ::svl::IUndoManager;
 
     //= UndoActionWrapper
 
@@ -226,7 +225,7 @@ namespace framework
         {
         }
 
-        IUndoManager& getUndoManager() const
+        SfxUndoManager& getUndoManager() const
         {
             return m_rUndoManagerImplementation.getImplUndoManager();
         }
@@ -339,7 +338,7 @@ namespace framework
         const UndoManagerEvent aEvent( buildEvent( i_title ) );
 
         // TODO: this notification method here is used by UndoManagerHelper_Impl, to multiplex the notifications we
-        // receive from the IUndoManager. Those notifications are sent with a locked SolarMutex, which means
+        // receive from the SfxUndoManager. Those notifications are sent with a locked SolarMutex, which means
         // we're doing the multiplexing here with a locked SM, too. Which is Bad (TM).
         // Fixing this properly would require outsourcing all the notifications into an own thread - which might lead
         // to problems of its own, since clients might expect synchronous notifications.
@@ -420,7 +419,7 @@ namespace framework
 
         if ( ++m_nLockCount == 1 )
         {
-            IUndoManager& rUndoManager = getUndoManager();
+            SfxUndoManager& rUndoManager = getUndoManager();
             rUndoManager.EnableUndo( false );
         }
         // <--- SYNCHRONIZED
@@ -436,7 +435,7 @@ namespace framework
 
         if ( --m_nLockCount == 0 )
         {
-            IUndoManager& rUndoManager = getUndoManager();
+            SfxUndoManager& rUndoManager = getUndoManager();
             rUndoManager.EnableUndo( true );
         }
         // <--- SYNCHRONIZED
@@ -508,7 +507,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( !rUndoManager.IsUndoEnabled() )
             // ignore this request if the manager is locked
             return;
@@ -539,7 +538,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( !rUndoManager.IsUndoEnabled() )
             // ignore this request if the manager is locked
             return;
@@ -555,7 +554,7 @@ namespace framework
         const bool isHiddenContext = m_aContextVisibilities.top();
         m_aContextVisibilities.pop();
 
-        const bool bHadRedoActions = ( rUndoManager.GetRedoActionCount( IUndoManager::TopLevel ) > 0 );
+        const bool bHadRedoActions = ( rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel ) > 0 );
         {
             ::comphelper::FlagGuard aNotificationGuard( m_bAPIActionRunning );
             if ( isHiddenContext )
@@ -563,7 +562,7 @@ namespace framework
             else
                 nContextElements = rUndoManager.LeaveListAction();
         }
-        const bool bHasRedoActions = ( rUndoManager.GetRedoActionCount( IUndoManager::TopLevel ) > 0 );
+        const bool bHasRedoActions = ( rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel ) > 0 );
 
         // prepare notification
         void ( SAL_CALL XUndoManagerListener::*notificationMethod )( const UndoManagerEvent& ) = nullptr;
@@ -602,13 +601,13 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( rUndoManager.IsInListAction() )
             throw UndoContextNotClosedException( OUString(), getXUndoManager() );
 
         const size_t nElements  =   i_undo
-                                ?   rUndoManager.GetUndoActionCount( IUndoManager::TopLevel )
-                                :   rUndoManager.GetRedoActionCount( IUndoManager::TopLevel );
+                                ?   rUndoManager.GetUndoActionCount( SfxUndoManager::TopLevel )
+                                :   rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel );
         if ( nElements == 0 )
             throw EmptyUndoStackException("stack is empty", getXUndoManager() );
 
@@ -632,7 +631,7 @@ namespace framework
         }
 
         // note that in opposite to all of the other methods, we do *not* have our mutex locked when calling
-        // into the IUndoManager implementation. This ensures that an actual XUndoAction::undo/redo is also
+        // into the SfxUndoManager implementation. This ensures that an actual XUndoAction::undo/redo is also
         // called without our mutex being locked.
         // As a consequence, we do not set m_bAPIActionRunning here. Instead, our actionUndone/actionRedone methods
         // *always* multiplex the event to our XUndoManagerListeners, not only when m_bAPIActionRunning is FALSE (This
@@ -645,7 +644,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( !rUndoManager.IsUndoEnabled() )
             // ignore the request if the manager is locked
             return;
@@ -674,7 +673,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( rUndoManager.IsInListAction() )
             throw UndoContextNotClosedException( OUString(), getXUndoManager() );
 
@@ -696,7 +695,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         if ( rUndoManager.IsInListAction() )
             throw UndoContextNotClosedException( OUString(), getXUndoManager() );
 
@@ -718,7 +717,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::ClearableMutexGuard aGuard( m_aMutex );
 
-        IUndoManager& rUndoManager = getUndoManager();
+        SfxUndoManager& rUndoManager = getUndoManager();
         {
             ::comphelper::FlagGuard aNotificationGuard( m_bAPIActionRunning );
             rUndoManager.Reset();
@@ -895,10 +894,10 @@ namespace framework
     {
         // SYNCHRONIZED --->
         ::osl::MutexGuard aGuard( m_xImpl->getMutex() );
-        IUndoManager& rUndoManager = m_xImpl->getUndoManager();
+        SfxUndoManager& rUndoManager = m_xImpl->getUndoManager();
         if ( rUndoManager.IsInListAction() )
             return false;
-        return rUndoManager.GetUndoActionCount( IUndoManager::TopLevel ) > 0;
+        return rUndoManager.GetUndoActionCount( SfxUndoManager::TopLevel ) > 0;
         // <--- SYNCHRONIZED
     }
 
@@ -906,10 +905,10 @@ namespace framework
     {
         // SYNCHRONIZED --->
         ::osl::MutexGuard aGuard( m_xImpl->getMutex() );
-        const IUndoManager& rUndoManager = m_xImpl->getUndoManager();
+        const SfxUndoManager& rUndoManager = m_xImpl->getUndoManager();
         if ( rUndoManager.IsInListAction() )
             return false;
-        return rUndoManager.GetRedoActionCount( IUndoManager::TopLevel ) > 0;
+        return rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel ) > 0;
         // <--- SYNCHRONIZED
     }
 
@@ -921,10 +920,10 @@ namespace framework
             // SYNCHRONIZED --->
             ::osl::MutexGuard aGuard( i_impl.getMutex() );
 
-            const IUndoManager& rUndoManager = i_impl.getUndoManager();
+            const SfxUndoManager& rUndoManager = i_impl.getUndoManager();
             const size_t nActionCount = i_undo
-                                    ?   rUndoManager.GetUndoActionCount( IUndoManager::TopLevel )
-                                    :   rUndoManager.GetRedoActionCount( IUndoManager::TopLevel );
+                                    ?   rUndoManager.GetUndoActionCount( SfxUndoManager::TopLevel )
+                                    :   rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel );
             if ( nActionCount == 0 )
                 throw EmptyUndoStackException(
                     i_undo ? OUString( "no action on the undo stack" )
@@ -932,8 +931,8 @@ namespace framework
                     i_impl.getXUndoManager()
                 );
             return  i_undo
-                ?   rUndoManager.GetUndoActionComment( 0, IUndoManager::TopLevel )
-                :   rUndoManager.GetRedoActionComment( 0, IUndoManager::TopLevel );
+                ?   rUndoManager.GetUndoActionComment( 0, SfxUndoManager::TopLevel )
+                :   rUndoManager.GetRedoActionComment( 0, SfxUndoManager::TopLevel );
             // <--- SYNCHRONIZED
         }
 
@@ -942,17 +941,17 @@ namespace framework
             // SYNCHRONIZED --->
             ::osl::MutexGuard aGuard( i_impl.getMutex() );
 
-            const IUndoManager& rUndoManager = i_impl.getUndoManager();
+            const SfxUndoManager& rUndoManager = i_impl.getUndoManager();
             const size_t nCount =   i_undo
-                                ?   rUndoManager.GetUndoActionCount( IUndoManager::TopLevel )
-                                :   rUndoManager.GetRedoActionCount( IUndoManager::TopLevel );
+                                ?   rUndoManager.GetUndoActionCount( SfxUndoManager::TopLevel )
+                                :   rUndoManager.GetRedoActionCount( SfxUndoManager::TopLevel );
 
             Sequence< OUString > aTitles( nCount );
             for ( size_t i=0; i<nCount; ++i )
             {
                 aTitles[i] =    i_undo
-                            ?   rUndoManager.GetUndoActionComment( i, IUndoManager::TopLevel )
-                            :   rUndoManager.GetRedoActionComment( i, IUndoManager::TopLevel );
+                            ?   rUndoManager.GetUndoActionComment( i, SfxUndoManager::TopLevel )
+                            :   rUndoManager.GetRedoActionComment( i, SfxUndoManager::TopLevel );
             }
             return aTitles;
             // <--- SYNCHRONIZED
@@ -1009,7 +1008,7 @@ namespace framework
         // SYNCHRONIZED --->
         ::osl::MutexGuard aGuard( m_xImpl->getMutex() );
 
-        IUndoManager& rUndoManager = m_xImpl->getUndoManager();
+        SfxUndoManager& rUndoManager = m_xImpl->getUndoManager();
         return !rUndoManager.IsUndoEnabled();
         // <--- SYNCHRONIZED
     }
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 52a052570dd0..a94cf2abd0fb 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -62,7 +62,7 @@ struct SpellPortion;
 typedef std::vector<SpellPortion> SpellPortions;
 }
 
-namespace svl { class IUndoManager; }
+class SfxUndoManager;
 namespace basegfx { class B2DPolyPolygon; }
 namespace editeng {
     struct MisspellRanges;
@@ -337,8 +337,8 @@ public:
 
     void            ShowParagraph( sal_Int32 nParagraph, bool bShow );
 
-    ::svl::IUndoManager& GetUndoManager();
-    ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew);
+    SfxUndoManager& GetUndoManager();
+    SfxUndoManager* SetUndoManager(SfxUndoManager* pNew);
     void            UndoActionStart( sal_uInt16 nId );
     void            UndoActionStart(sal_uInt16 nId, const ESelection& rSel);
     void            UndoActionEnd();
diff --git a/include/editeng/outliner.hxx b/include/editeng/outliner.hxx
index c0d4a9a82437..d534b8862771 100644
--- a/include/editeng/outliner.hxx
+++ b/include/editeng/outliner.hxx
@@ -87,11 +87,8 @@ class OutlinerViewShell;
 enum class CharCompressType;
 enum class TransliterationFlags;
 class SvxFieldData;
+class SfxUndoManager;
 
-namespace svl
-{
-    class IUndoManager;
-}
 namespace com { namespace sun { namespace star { namespace linguistic2 {
     class XSpellChecker1;
     class XHyphenator;
@@ -881,8 +878,8 @@ public:
 
     ErrCode             Read( SvStream& rInput, const OUString& rBaseURL, EETextFormat, SvKeyValueIterator* pHTTPHeaderAttrs = nullptr );
 
-    ::svl::IUndoManager& GetUndoManager();
-    ::svl::IUndoManager* SetUndoManager(::svl::IUndoManager* pNew);
+    SfxUndoManager& GetUndoManager();
+    SfxUndoManager* SetUndoManager(SfxUndoManager* pNew);
 
     void            QuickSetAttribs( const SfxItemSet& rSet, const ESelection& rSel );
     void            QuickInsertField( const SvxFieldItem& rFld, const ESelection& rSel );
diff --git a/include/framework/undomanagerhelper.hxx b/include/framework/undomanagerhelper.hxx
index 09ac28b01fd2..261936a862e9 100644
--- a/include/framework/undomanagerhelper.hxx
+++ b/include/framework/undomanagerhelper.hxx
@@ -28,10 +28,7 @@
 
 #include <memory>
 
-namespace svl
-{
-    class IUndoManager;
-}
+class SfxUndoManager;
 
 
 namespace framework
@@ -63,15 +60,15 @@ namespace framework
     class SAL_NO_VTABLE IUndoManagerImplementation
     {
     public:
-        /** returns the IUndoManager interface to the actual Undo stack
+        /** returns the SfxUndoManager interface to the actual Undo stack
 
             @throws css::lang::DisposedException
-                when the instance is already disposed, and no IUndoManager can be provided
+                when the instance is already disposed, and no SfxUndoManager can be provided
 
             @throws css::lang::NotInitializedException
-                when the instance is not initialized, yet, and no IUndoManager can be provided
+                when the instance is not initialized, yet, and no SfxUndoManager can be provided
         */
-        virtual ::svl::IUndoManager&    getImplUndoManager() = 0;
+        virtual SfxUndoManager&        getImplUndoManager() = 0;
 
         /** provides access to an UNO interface for the XUndoManager implementation. Used when throwing exceptions.
         */
@@ -95,15 +92,15 @@ namespace framework
         The following locking strategy is used for this mutex:
         <ul><li>Any notifications to the registered XUndoManagerListeners are after the guard has been cleared. i.e.
                 without the mutex being locked.</p>
-            <li>Any calls into the <code>IUndoManager</code> implementation is made without the mutex being locked.
-                Note that this implies that the <code>IUndoManager</code> implementation must be thread-safe in itself
+            <li>Any calls into the <code>SfxUndoManager</code> implementation is made without the mutex being locked.
+                Note that this implies that the <code>SfxUndoManager</code> implementation must be thread-safe in itself
                 (which is true for the default implementation, SfxUndoManager).</li>
-            <li>An exception to the previous item are the <member>IUndoManager::Undo</member> and
-                <member>IUndoManager::Redo</member> methods: They're called with the given external mutex being
+            <li>An exception to the previous item are the <member>SfxUndoManager::Undo</member> and
+                <member>SfxUndoManager::Redo</member> methods: They're called with the given external mutex being
                 locked.</li>
         </ul>
 
-        The reason for the exception for IUndoManager::Undo and IUndoManager::Redo is that those are expected to
+        The reason for the exception for SfxUndoManager::Undo and SfxUndoManager::Redo is that those are expected to
         modify the actual document which the UndoManager works for. And as long as our documents are not thread-safe,
         and as long as we do not re-fit <strong>all</strong> existing SfxUndoImplementations to <em>not</em> expect
         the dreaded SolarMutex being locked when they're called, the above behavior is a compromise between "how it should
diff --git a/include/sfx2/shell.hxx b/include/sfx2/shell.hxx
index 7aeeed54bdd2..d2d72093338a 100644
--- a/include/sfx2/shell.hxx
+++ b/include/sfx2/shell.hxx
@@ -57,11 +57,7 @@ class SbxVariable;
 class SbxBase;
 class SfxBindings;
 class SfxModule;
-
-namespace svl
-{
-    class IUndoManager;
-}
+class SfxUndoManager;
 
 /**
     Id for <SfxInterface>s, gives a quasi-static access to the interface
@@ -143,7 +139,7 @@ class SFX2_DLLPUBLIC SfxShell: public SfxBroadcaster
 
     std::unique_ptr< SfxShell_Impl >              pImpl;
     SfxItemPool*                pPool;
-    ::svl::IUndoManager*        pUndoMgr;
+    SfxUndoManager*             pUndoMgr;
 
 private:
                                 SfxShell( const SfxShell & ) = delete;
@@ -298,7 +294,7 @@ public:
         The class SfxShell itself does not have a SfxUndoManager, a NULL-pointer
         is therefore returned.
         */
-    virtual ::svl::IUndoManager* GetUndoManager();
+    virtual SfxUndoManager*     GetUndoManager();
 
     /**
         Sets a <SfxUndoManager> for this <SfxShell> Instance. For the undo
@@ -311,7 +307,7 @@ public:
         'pNewUndoMgr' must exist until the Destructor of SfxShell instance is called
         or until the next 'SetUndoManager()'.
         */
-    void                        SetUndoManager( ::svl::IUndoManager *pNewUndoMgr );
+    void                        SetUndoManager( SfxUndoManager *pNewUndoMgr );
 
     /**
         Returns a pointer to the <SfxRepeatTarget> instance that is used in
diff --git a/include/svl/undo.hxx b/include/svl/undo.hxx
index e91aca41a69a..fea14a7b6bb1 100644
--- a/include/svl/undo.hxx
+++ b/include/svl/undo.hxx
@@ -181,122 +181,6 @@ protected:
 };
 
 
-namespace svl
-{
-    class SAL_NO_VTABLE SAL_DLLPUBLIC_RTTI IUndoManager
-    {
-    public:
-        static bool const CurrentLevel = true;
-        static bool const TopLevel = false;
-
-        virtual                 ~IUndoManager() { };
-
-        virtual void            SetMaxUndoActionCount( size_t nMaxUndoActionCount ) = 0;
-
-        virtual void            AddUndoAction( SfxUndoAction *pAction, bool bTryMerg=false ) = 0;
-
-        virtual size_t          GetUndoActionCount( bool const i_currentLevel = CurrentLevel ) const = 0;
-        virtual OUString        GetUndoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const = 0;
-        virtual SfxUndoAction*  GetUndoAction( size_t nNo=0 ) const = 0;
-        /// Get info about all undo actions (comment, view shell id, etc.)
-        virtual OUString        GetUndoActionsInfo() const = 0;
-
-        virtual size_t          GetRedoActionCount( bool const i_currentLevel = CurrentLevel ) const = 0;
-        virtual OUString        GetRedoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const = 0;
-        virtual SfxUndoAction*  GetRedoAction() const = 0;
-        /// Get info about all redo actions (comment, view shell id, etc.)
-        virtual OUString        GetRedoActionsInfo() const = 0;
-
-        virtual bool            Undo() = 0;
-        virtual bool            Redo() = 0;
-
-        /** clears both the Redo and the Undo stack.
-
-            Will assert and bail out when called while within a list action (<member>IsInListAction</member>).
-        */
-        virtual void            Clear() = 0;
-
-        /** clears the Redo stack.
-
-            Will assert and bail out when called while within a list action (<member>IsInListAction</member>).
-        */
-        virtual void            ClearRedo() = 0;
-
-        /** leaves any possible open list action (<member>IsInListAction</member>), and clears both the Undo and the
-            Redo stack.
-
-            Effectively, calling this method is equivalent to <code>while ( IsInListAction() ) LeaveListAction();</code>,
-            followed by <code>Clear()</code>. The only difference to this calling sequence is that Reset is an
-            atomic operation, also resulting in only one notification.
-        */
-        virtual void            Reset() = 0;
-
-        /** determines whether an Undo or Redo is currently running
-        */
-        virtual bool            IsDoing() const = 0;
-
-        virtual size_t          GetRepeatActionCount() const = 0;
-        virtual OUString        GetRepeatActionComment( SfxRepeatTarget &rTarget) const = 0;
-        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, ViewShellId 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
-                actions exist, the list action does not contribute to the Undo stack, but is silently removed.
-        */
-        virtual size_t          LeaveListAction() = 0;
-
-        /** leaves the list action entered with EnterListAction, and forcefully merges the previous
-            action on the stack into the newly created list action.
-
-            Say you have an Undo action A on the stack, then call EnterListAction, followed by one or more calls to
-            AddUndoAction, followed by a call to LeaveAndMergeListAction. In opposite to LeaveListAction, your Undo
-            stack will now still contain one undo action: the newly created list action, whose first child is the
-            original A, whose other children are those you added via AddUndoAction, and whose comment is the same as
-            the comment of A.
-
-            Effectively, this means that all actions added between EnterListAction and LeaveAndMergeListAction are
-            hidden from the user.
-
-            @return the number of the sub actions in the list which has just been left. Note that in case no such
-                actions exist, the list action does not contribute to the Undo stack, but is silently removed.
-        */
-        virtual size_t          LeaveAndMergeListAction() = 0;
-
-        /// determines whether we're within a ListAction context, i.e. a LeaveListAction/LeaveAndMergeListAction call is pending
-        virtual bool            IsInListAction() const = 0;
-
-        /// determines how many nested list actions are currently open
-        virtual size_t          GetListActionDepth() const = 0;
-
-        /** clears the redo stack and removes the top undo action */
-        virtual void            RemoveLastUndoAction() = 0;
-
-        /** enables (true) or disables (false) recording of undo actions
-
-            If undo actions are added while undo is disabled, they are deleted.
-            Disabling undo does not clear the current undo buffer!
-
-            Multiple calls to <code>EnableUndo</code> are not cumulative. That is, calling <code>EnableUndo( false )</code>
-            twice, and then calling <code>EnableUndo( true )</code> means that Undo is enable afterwards.
-        */
-        virtual void            EnableUndo( bool bEnable ) = 0;
-
-        // returns true if undo is currently enabled
-        // This returns false if undo was disabled using EnableUndo( false ) and
-        // also during the runtime of the Undo() and Redo() methods.
-        virtual bool            IsUndoEnabled() const = 0;
-
-        /// adds a new listener to be notified about changes in the UndoManager's state
-        virtual void            AddUndoListener( SfxUndoListener& i_listener ) = 0;
-        virtual void            RemoveUndoListener( SfxUndoListener& i_listener ) = 0;
-        virtual bool            IsEmptyActions() const = 0;
-   };
-}
-
-
 namespace svl { namespace undo { namespace impl
 {
     class UndoManagerGuard;
@@ -304,46 +188,100 @@ namespace svl { namespace undo { namespace impl
 } } }
 
 struct SfxUndoManager_Data;
-class SVL_DLLPUBLIC SfxUndoManager : public ::svl::IUndoManager
+class SVL_DLLPUBLIC SfxUndoManager
 {
     std::unique_ptr< SfxUndoManager_Data >
                             m_xData;
 public:
+    static bool const CurrentLevel = true;
+    static bool const TopLevel = false;
+
                             SfxUndoManager( size_t nMaxUndoActionCount = 20 );
-    virtual                 ~SfxUndoManager() override;
-
-    // IUndoManager overridables
-    virtual void            SetMaxUndoActionCount( size_t nMaxUndoActionCount ) override;
-    virtual void            AddUndoAction( SfxUndoAction *pAction, bool bTryMerg=false ) override;
-    virtual size_t          GetUndoActionCount( bool const i_currentLevel = CurrentLevel ) const override;
-    virtual OUString        GetUndoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const override;
-    virtual SfxUndoAction*  GetUndoAction( size_t nNo=0 ) const override;
-    OUString                GetUndoActionsInfo() const override;
-    virtual size_t          GetRedoActionCount( bool const i_currentLevel = CurrentLevel ) const override;
-    virtual OUString        GetRedoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const override;
-    virtual SfxUndoAction*  GetRedoAction() const override;
-    OUString                GetRedoActionsInfo() const override;
-    virtual bool            Undo() override;
-    virtual bool            Redo() override;
-    virtual void            Clear() override;
-    virtual void            ClearRedo() override;
-    virtual void            Reset() override;
-    virtual bool            IsDoing() const override;
-    virtual size_t          GetRepeatActionCount() const override;
-    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, ViewShellId nViewShellId) override;
-    virtual size_t          LeaveListAction() override;
-    virtual size_t          LeaveAndMergeListAction() override;
-    virtual bool            IsInListAction() const override;
-    virtual size_t          GetListActionDepth() const override;
-    virtual void            RemoveLastUndoAction() override;
-    virtual void            EnableUndo( bool bEnable ) override;
-    virtual bool            IsUndoEnabled() const override;
-    virtual void            AddUndoListener( SfxUndoListener& i_listener ) override;
-    virtual void            RemoveUndoListener( SfxUndoListener& i_listener ) override;
-    virtual bool            IsEmptyActions() const override;
+    virtual                 ~SfxUndoManager();
+
+    virtual void            SetMaxUndoActionCount( size_t nMaxUndoActionCount );
+    virtual void            AddUndoAction( SfxUndoAction *pAction, bool bTryMerg=false );
+    virtual size_t          GetUndoActionCount( bool const i_currentLevel = CurrentLevel ) const;
+    virtual OUString        GetUndoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const;
+    virtual SfxUndoAction*  GetUndoAction( size_t nNo=0 ) const;
+    /// Get info about all undo actions (comment, view shell id, etc.)
+    OUString                GetUndoActionsInfo() const;
+    virtual size_t          GetRedoActionCount( bool const i_currentLevel = CurrentLevel ) const;
+    virtual OUString        GetRedoActionComment( size_t nNo=0, bool const i_currentLevel = CurrentLevel ) const;
+    virtual SfxUndoAction*  GetRedoAction() const;
+    /// Get info about all redo actions (comment, view shell id, etc.)
+    OUString                GetRedoActionsInfo() const;
+    virtual bool            Undo();
+    virtual bool            Redo();
+    /** Clears both the Redo and the Undo stack.
+        Will assert and bail out when called while within a list action (<member>IsInListAction</member>).
+    */
+    virtual void            Clear();
+    /** Clears the Redo stack.
+        Will assert and bail out when called while within a list action (<member>IsInListAction</member>).
+    */
+    virtual void            ClearRedo();
+    /** leaves any possible open list action (<member>IsInListAction</member>), and clears both the Undo and the
+        Redo stack.
+
+        Effectively, calling this method is equivalent to <code>while ( IsInListAction() ) LeaveListAction();</code>,
+        followed by <code>Clear()</code>. The only difference to this calling sequence is that Reset is an
+        atomic operation, also resulting in only one notification.
+    */
+    virtual void            Reset();
+    /** determines whether an Undo or Redo is currently running
+    */
+    virtual bool            IsDoing() const;
+    virtual size_t          GetRepeatActionCount() const;
+    virtual OUString        GetRepeatActionComment( SfxRepeatTarget &rTarget) const;
+    virtual bool            Repeat( SfxRepeatTarget &rTarget );
+    virtual bool            CanRepeat( SfxRepeatTarget &rTarget ) const;
+    virtual void            EnterListAction(const OUString &rComment, const OUString& rRepeatComment, sal_uInt16 nId, ViewShellId nViewShellId);
+    /** 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
+            actions exist, the list action does not contribute to the Undo stack, but is silently removed.
+    */
+    virtual size_t          LeaveListAction();
+
+    /** Leaves the list action entered with EnterListAction, and forcefully merges the previous
+        action on the stack into the newly created list action.
+
+        Say you have an Undo action A on the stack, then call EnterListAction, followed by one or more calls to
+        AddUndoAction, followed by a call to LeaveAndMergeListAction. In opposite to LeaveListAction, your Undo
+        stack will now still contain one undo action: the newly created list action, whose first child is the
+        original A, whose other children are those you added via AddUndoAction, and whose comment is the same as
+        the comment of A.
+
+        Effectively, this means that all actions added between EnterListAction and LeaveAndMergeListAction are
+        hidden from the user.
+
+        @return the number of the sub actions in the list which has just been left. Note that in case no such
+            actions exist, the list action does not contribute to the Undo stack, but is silently removed.
+    */
+    virtual size_t          LeaveAndMergeListAction();
+    /// determines whether we're within a ListAction context, i.e. a LeaveListAction/LeaveAndMergeListAction call is pending
+    virtual bool            IsInListAction() const;
+    /// Determines how many nested list actions are currently open
+    virtual size_t          GetListActionDepth() const;
+    /** Clears the redo stack and removes the top undo action */
+    virtual void            RemoveLastUndoAction();
+    /** enables (true) or disables (false) recording of undo actions
+
+        If undo actions are added while undo is disabled, they are deleted.
+        Disabling undo does not clear the current undo buffer!
+
+        Multiple calls to <code>EnableUndo</code> are not cumulative. That is, calling <code>EnableUndo( false )</code>
+        twice, and then calling <code>EnableUndo( true )</code> means that Undo is enable afterwards.
+    */
+    virtual void            EnableUndo( bool bEnable );
+    /// returns true if undo is currently enabled.
+    /// This returns false if undo was disabled using EnableUndo( false ) and
+    /// also during the runtime of the Undo() and Redo() methods.
+    virtual bool            IsUndoEnabled() const;
+    /// Adds a new listener to be notified about changes in the UndoManager's state
+    virtual void            AddUndoListener( SfxUndoListener& i_listener );
+    virtual void            RemoveUndoListener( SfxUndoListener& i_listener );
+    virtual bool            IsEmptyActions() const;
 
 
     /** marks the current top-level element of the Undo stack, and returns a unique ID for it
diff --git a/include/svx/svdedxv.hxx b/include/svx/svdedxv.hxx
index 6a2a1f5de509..b7f5eb31caae 100644
--- a/include/svx/svdedxv.hxx
+++ b/include/svx/svdedxv.hxx
@@ -102,7 +102,7 @@ protected:
     rtl::Reference< sdr::SelectionController > mxLastSelectionController;
 
 private:
-    ::svl::IUndoManager* mpOldTextEditUndoManager;
+    SfxUndoManager* mpOldTextEditUndoManager;
 
     SVX_DLLPRIVATE void ImpClearVars();
 
diff --git a/include/vcl/texteng.hxx b/include/vcl/texteng.hxx
index 82a60c7af122..97a370747ce8 100644
--- a/include/vcl/texteng.hxx
+++ b/include/vcl/texteng.hxx
@@ -54,12 +54,7 @@ class OutputDevice;
 class SfxUndoAction;
 class KeyEvent;
 class Timer;
-
-namespace svl
-{
-    class IUndoManager;
-}
-
+class SfxUndoManager;
 class TextLine;
 class TETextPortion;
 struct TEIMEInfos;
@@ -267,8 +262,7 @@ public:
     bool                IsRightToLeft() const { return mbRightToLeft; }
 
     bool                HasUndoManager() const { return mpUndoManager != nullptr; }
-    ::svl::IUndoManager&
-                        GetUndoManager();
+    SfxUndoManager&     GetUndoManager();
     void                UndoActionStart( sal_uInt16 nId = 0 );
     void                UndoActionEnd();
     void                InsertUndo( TextUndo* pUndo, bool bTryMerge = false );
diff --git a/reportdesign/source/ui/report/ReportController.cxx b/reportdesign/source/ui/report/ReportController.cxx
index 7f19e49543a7..013733fb128e 100644
--- a/reportdesign/source/ui/report/ReportController.cxx
+++ b/reportdesign/source/ui/report/ReportController.cxx
@@ -434,13 +434,13 @@ FeatureState OReportController::GetState(sal_uInt16 _nId) const
                     ( _nId == SID_UNDO ) ? &SfxUndoManager::GetUndoActionCount : &SfxUndoManager::GetRedoActionCount;
 
                 SfxUndoManager& rUndoManager( getUndoManager() );
-                aReturn.bEnabled = ( rUndoManager.*retrieveCount )( ::svl::IUndoManager::TopLevel ) > 0;
+                aReturn.bEnabled = ( rUndoManager.*retrieveCount )( SfxUndoManager::TopLevel ) > 0;
                 if ( aReturn.bEnabled )
                 {
                     // TODO: add "Undo/Redo: prefix"
                     OUString ( SfxUndoManager::*retrieveComment )( size_t, bool const ) const =
                         ( _nId == SID_UNDO ) ? &SfxUndoManager::GetUndoActionComment : &SfxUndoManager::GetRedoActionComment;
-                    aReturn.sTitle = (rUndoManager.*retrieveComment)( 0, ::svl::IUndoManager::TopLevel );
+                    aReturn.sTitle = (rUndoManager.*retrieveComment)( 0, SfxUndoManager::TopLevel );
                 }
             }
             break;
diff --git a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
index 379378c65def..564b0ea30372 100644
--- a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
@@ -288,7 +288,7 @@ void ScRandomNumberGeneratorDialog::GenerateNumbers(RNG& randomGenerator, const
     aUndo = aUndo.replaceAll("$(DISTRIBUTION)",  aDistributionName);
 
     ScDocShell* pDocShell = mpViewData->GetDocShell();
-    svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
+    SfxUndoManager* pUndoManager = pDocShell->GetUndoManager();
     pUndoManager->EnterListAction( aUndo, aUndo, 0, mpViewData->GetViewShell()->GetViewShellId() );
 
     SCROW nRowStart = maInputRange.aStart.Row();
diff --git a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
index 642b874fef1c..3a097a08c479 100644
--- a/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/SamplingDialog.cxx
@@ -269,7 +269,7 @@ void ScSamplingDialog::PerformSampling()
 {
     OUString aUndo(ScResId(STR_SAMPLING_UNDO_NAME));
     ScDocShell* pDocShell = mViewData->GetDocShell();
-    svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
+    SfxUndoManager* pUndoManager = pDocShell->GetUndoManager();
 
     ScRange aModifiedRange;
 
diff --git a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
index 50645199cd07..228a19933e6c 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsInputOutputDialog.cxx
@@ -285,7 +285,7 @@ void ScStatisticsInputOutputDialog::CalculateInputAndWriteToOutput()
 {
     OUString aUndo(ScResId(GetUndoNameId()));
     ScDocShell* pDocShell = mViewData->GetDocShell();
-    svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
+    SfxUndoManager* pUndoManager = pDocShell->GetUndoManager();
     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 85fff5b57ad2..b44b7b9a5f55 100644
--- a/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/StatisticsTwoVariableDialog.cxx
@@ -318,7 +318,7 @@ void ScStatisticsTwoVariableDialog::CalculateInputAndWriteToOutput()
 {
     OUString aUndo(ScResId(GetUndoNameId()));
     ScDocShell* pDocShell = mViewData->GetDocShell();
-    svl::IUndoManager* pUndoManager = pDocShell->GetUndoManager();
+    SfxUndoManager* pUndoManager = pDocShell->GetUndoManager();
     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 518410f25f47..cda63a35e1e1 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -833,7 +833,7 @@ bool ScDocFunc::SetValueCell( const ScAddress& rPos, double fVal, bool bInteract
 
     if (bUndo)
     {
-        svl::IUndoManager* pUndoMgr = rDocShell.GetUndoManager();
+        SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager();
         ScCellValue aNewVal;
         aNewVal.assign(rDoc, rPos);
         pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal));
@@ -871,7 +871,7 @@ void ScDocFunc::SetValueCells( const ScAddress& rPos, const std::vector<double>&
         sc::UndoSetCells* pUndoObj = new sc::UndoSetCells(&rDocShell, rPos);
         rDoc.TransferCellValuesTo(rPos, aVals.size(), pUndoObj->GetOldValues());
         pUndoObj->SetNewValues(aVals);
-        svl::IUndoManager* pUndoMgr = rDocShell.GetUndoManager();
+        SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager();
         pUndoMgr->AddUndoAction(pUndoObj);
     }
 
@@ -903,7 +903,7 @@ bool ScDocFunc::SetStringCell( const ScAddress& rPos, const OUString& rStr, bool
 
     if (bUndo)
     {
-        svl::IUndoManager* pUndoMgr = rDocShell.GetUndoManager();
+        SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager();
         ScCellValue aNewVal;
         aNewVal.assign(rDoc, rPos);
         pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal));
@@ -938,7 +938,7 @@ bool ScDocFunc::SetEditCell( const ScAddress& rPos, const EditTextObject& rStr,
 
     if (bUndo)
     {
-        svl::IUndoManager* pUndoMgr = rDocShell.GetUndoManager();
+        SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager();
         ScCellValue aNewVal;
         aNewVal.assign(rDoc, rPos);
         pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal));
@@ -1002,7 +1002,7 @@ bool ScDocFunc::SetFormulaCell( const ScAddress& rPos, ScFormulaCell* pCell, boo
 
     if (bUndo)
     {
-        svl::IUndoManager* pUndoMgr = rDocShell.GetUndoManager();
+        SfxUndoManager* pUndoMgr = rDocShell.GetUndoManager();
         ScCellValue aNewVal;
         aNewVal.assign(rDoc, rPos);
         pUndoMgr->AddUndoAction(new ScUndoSetCell(&rDocShell, rPos, aOldVal, aNewVal));
@@ -1248,7 +1248,7 @@ void ScDocFunc::ReplaceNote( const ScAddress& rPos, const OUString& rNoteText, c
     if (aTester.IsEditable())
     {
         ScDrawLayer* pDrawLayer = rDoc.GetDrawLayer();
-        ::svl::IUndoManager* pUndoMgr = (pDrawLayer && rDoc.IsUndoEnabled()) ? rDocShell.GetUndoManager() : nullptr;
+        SfxUndoManager* pUndoMgr = (pDrawLayer && rDoc.IsUndoEnabled()) ? rDocShell.GetUndoManager() : nullptr;
 
         ScNoteData aOldData;
         ScPostIt* pOldNote = rDoc.ReleaseNote( rPos );
diff --git a/sc/source/ui/docshell/docfuncutil.cxx b/sc/source/ui/docshell/docfuncutil.cxx
index f00fa56608fb..0ee0805ee905 100644
--- a/sc/source/ui/docshell/docfuncutil.cxx
+++ b/sc/source/ui/docshell/docfuncutil.cxx
@@ -75,7 +75,7 @@ ScDocumentUniquePtr DocFuncUtil::createDeleteContentsUndoDoc(
 }
 
 void DocFuncUtil::addDeleteContentsUndo(
-    svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
+    SfxUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
     const ScRange& rRange, ScDocumentUniquePtr&& pUndoDoc, InsertDeleteFlags nFlags,
     const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
     bool bMulti, bool bDrawUndo )
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index ab0759367d59..ee8194189d8b 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2924,7 +2924,7 @@ ScDocShell::~ScDocShell()
     }
 }
 
-::svl::IUndoManager* ScDocShell::GetUndoManager()
+SfxUndoManager* ScDocShell::GetUndoManager()
 {
     return m_aDocument.GetUndoManager();
 }
diff --git a/sc/source/ui/drawfunc/drawsh2.cxx b/sc/source/ui/drawfunc/drawsh2.cxx
index a1cc5388a2ea..4b2880676407 100644
--- a/sc/source/ui/drawfunc/drawsh2.cxx
+++ b/sc/source/ui/drawfunc/drawsh2.cxx
@@ -61,7 +61,7 @@ ScDrawShell::ScDrawShell( ScViewData* pData ) :
             vcl::EnumContext::Context::Cell))
 {
     SetPool( &pViewData->GetScDrawView()->GetModel()->GetItemPool() );
-    ::svl::IUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !pViewData->GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index a1720a8b73db..b4418e7f8750 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -117,7 +117,7 @@ ScDrawTextObjectBar::ScDrawTextObjectBar(ScViewData* pData) :
     SetPool( pViewData->GetScDrawView()->GetDefaultAttr().GetPool() );
 
     //  At the switching-over the UndoManager is changed to edit mode
-    ::svl::IUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !pViewData->GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/drawfunc/futext3.cxx b/sc/source/ui/drawfunc/futext3.cxx
index 4a003558c88d..fe33bb3d3c70 100644
--- a/sc/source/ui/drawfunc/futext3.cxx
+++ b/sc/source/ui/drawfunc/futext3.cxx
@@ -72,7 +72,7 @@ void FuText::StopEditMode()
     }
 
     ScDocShell* pDocShell = rViewData.GetDocShell();
-    ::svl::IUndoManager* pUndoMgr = rDoc.IsUndoEnabled() ? pDocShell->GetUndoManager() : nullptr;
+    SfxUndoManager* pUndoMgr = rDoc.IsUndoEnabled() ? pDocShell->GetUndoManager() : nullptr;
     bool bNewNote = false;
     if( pNote && pUndoMgr )
     {
diff --git a/sc/source/ui/inc/docfuncutil.hxx b/sc/source/ui/inc/docfuncutil.hxx
index ee86afa5871d..0293db3168dc 100644
--- a/sc/source/ui/inc/docfuncutil.hxx
+++ b/sc/source/ui/inc/docfuncutil.hxx
@@ -30,7 +30,7 @@ public:
         InsertDeleteFlags nFlags, bool bOnlyMarked );
 
     static void addDeleteContentsUndo(
-        svl::IUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
+        SfxUndoManager* pUndoMgr, ScDocShell* pDocSh, const ScMarkData& rMark,
         const ScRange& rRange, ScDocumentUniquePtr&& pUndoDoc, InsertDeleteFlags nFlags,
         const std::shared_ptr<ScSimpleUndo::DataSpansType>& pSpans,
         bool bMulti, bool bDrawUndo );
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
index 1005799e192f..3e4bf487127f 100644
--- a/sc/source/ui/inc/docsh.hxx
+++ b/sc/source/ui/inc/docsh.hxx
@@ -179,7 +179,7 @@ public:
     explicit        ScDocShell( const SfxModelFlags i_nSfxCreationFlags = SfxModelFlags::EMBEDDED_OBJECT );
                     virtual ~ScDocShell() override;
 
-    virtual ::svl::IUndoManager*
+    virtual SfxUndoManager*
                     GetUndoManager() override;
 
     virtual void    FillClass( SvGlobalName * pClassName,
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index fd531de17a8b..ebdbab699253 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -305,7 +305,7 @@ public:
     bool            IsDrawTextShell() const;
     bool            IsAuditShell() const;
 
-    void            SetDrawTextUndo( ::svl::IUndoManager* pUndoMgr );
+    void            SetDrawTextUndo( SfxUndoManager* pUndoMgr );
 
     void            FillFieldData( ScHeaderFieldData& rData );
 
diff --git a/sc/source/ui/view/auditsh.cxx b/sc/source/ui/view/auditsh.cxx
index a90fda38efa2..876c6ac5407e 100644
--- a/sc/source/ui/view/auditsh.cxx
+++ b/sc/source/ui/view/auditsh.cxx
@@ -47,7 +47,7 @@ ScAuditingShell::ScAuditingShell(ScViewData* pData) :
     nFunction( SID_FILL_ADD_PRED )
 {
     SetPool( &pViewData->GetViewShell()->GetPool() );
-    ::svl::IUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !pViewData->GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/view/dbfunc3.cxx b/sc/source/ui/view/dbfunc3.cxx
index 6350e235f8f9..008d57eb9f49 100644
--- a/sc/source/ui/view/dbfunc3.cxx
+++ b/sc/source/ui/view/dbfunc3.cxx
@@ -2069,7 +2069,7 @@ void ScDBFunc::ShowDataPilotSourceData( ScDPObject& rDPObj, const Sequence<sheet
     pInsDoc->GetCellArea( nNewTab, nEndCol, nEndRow );
     pInsDoc->SetClipArea( ScRange( 0, 0, nNewTab, nEndCol, nEndRow, nNewTab ) );
 
-    ::svl::IUndoManager* pMgr = GetViewData().GetDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = GetViewData().GetDocShell()->GetUndoManager();
     OUString aUndo = ScResId( STR_UNDO_DOOUTLINE );
     pMgr->EnterListAction( aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId() );
 
diff --git a/sc/source/ui/view/drawview.cxx b/sc/source/ui/view/drawview.cxx
index ca10345efed0..d0c16e8dd162 100644
--- a/sc/source/ui/view/drawview.cxx
+++ b/sc/source/ui/view/drawview.cxx
@@ -853,7 +853,7 @@ void ScDrawView::DeleteMarked()
     {
         ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
         ScDocShell* pDocShell = pViewData ? pViewData->GetDocShell() : nullptr;
-        ::svl::IUndoManager* pUndoMgr = pDocShell ? pDocShell->GetUndoManager() : nullptr;
+        SfxUndoManager* pUndoMgr = pDocShell ? pDocShell->GetUndoManager() : nullptr;
         bool bUndo = pDrawLayer && pDocShell && pUndoMgr && pDoc->IsUndoEnabled();
 
         // remove the cell note from document, we are its owner now
diff --git a/sc/source/ui/view/editsh.cxx b/sc/source/ui/view/editsh.cxx
index 2b286e59ad48..ff519a49dd48 100644
--- a/sc/source/ui/view/editsh.cxx
+++ b/sc/source/ui/view/editsh.cxx
@@ -1277,7 +1277,7 @@ void ScEditShell::GetUndoState(SfxItemSet &rSet)
     EditView* pTopView = pHdl->GetTopView();
     if (pTopView)
     {
-        ::svl::IUndoManager& rTopMgr = pTopView->GetEditEngine()->GetUndoManager();
+        SfxUndoManager& rTopMgr = pTopView->GetEditEngine()->GetUndoManager();
         if ( rTopMgr.GetUndoActionCount() == 0 )
             rSet.DisableItem( SID_UNDO );
         if ( rTopMgr.GetRedoActionCount() == 0 )
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index aa19eb2a0bfa..8f4bf0e0742e 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -138,7 +138,7 @@ ScFormatShell::ScFormatShell(ScViewData* pData) :
     ScTabViewShell* pTabViewShell = GetViewData()->GetViewShell();
 
     SetPool( &pTabViewShell->GetPool() );
-    ::svl::IUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = pViewData->GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !pViewData->GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index e94a46c3c46b..9280eea07be7 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1899,7 +1899,7 @@ void ScGridWindow::MouseButtonUp( const MouseEvent& rMEvt )
 
     if (nMouseStatus == SC_GM_WATERUNDO)    // Undo in format paintbrush mode
     {
-        ::svl::IUndoManager* pMgr = pViewData->GetDocShell()->GetUndoManager();
+        SfxUndoManager* pMgr = pViewData->GetDocShell()->GetUndoManager();
         if ( pMgr->GetUndoActionCount() && dynamic_cast<ScUndoSelectionStyle*>(pMgr->GetUndoAction()) )
             pMgr->Undo();
         return;
diff --git a/sc/source/ui/view/pgbrksh.cxx b/sc/source/ui/view/pgbrksh.cxx
index 7b1cc4de7b98..f4b01dfaa801 100644
--- a/sc/source/ui/view/pgbrksh.cxx
+++ b/sc/source/ui/view/pgbrksh.cxx
@@ -46,7 +46,7 @@ ScPageBreakShell::ScPageBreakShell( ScTabViewShell* pViewSh ) :
 {
     SetPool( &pViewSh->GetPool() );
     ScViewData& rViewData = pViewSh->GetViewData();
-    ::svl::IUndoManager* pMgr = rViewData.GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = rViewData.GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !rViewData.GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/view/pivotsh.cxx b/sc/source/ui/view/pivotsh.cxx
index f069f075bb84..79f7900b7f49 100644
--- a/sc/source/ui/view/pivotsh.cxx
+++ b/sc/source/ui/view/pivotsh.cxx
@@ -55,7 +55,7 @@ ScPivotShell::ScPivotShell( ScTabViewShell* pViewSh ) :
 {
     SetPool( &pViewSh->GetPool() );
     ScViewData& rViewData = pViewSh->GetViewData();
-    ::svl::IUndoManager* pMgr = rViewData.GetSfxDocShell()->GetUndoManager();
+    SfxUndoManager* pMgr = rViewData.GetSfxDocShell()->GetUndoManager();
     SetUndoManager( pMgr );
     if ( !rViewData.GetDocument()->IsUndoEnabled() )
     {
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index 7490a92c7e7d..c90fe8df5bdc 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -1006,7 +1006,7 @@ bool ScTabViewShell::IsAuditShell() const
     return ( pAuditingShell && ( GetMySubShell() == pAuditingShell.get() ) );
 }
 
-void ScTabViewShell::SetDrawTextUndo( ::svl::IUndoManager* pNewUndoMgr )
+void ScTabViewShell::SetDrawTextUndo( SfxUndoManager* pNewUndoMgr )
 {
     // Default: undo manager for DocShell
     if (!pNewUndoMgr)
@@ -1508,7 +1508,7 @@ void ScTabViewShell::Construct( TriState nForceDesignMode )
         MakeDrawView( nForceDesignMode );
     ViewOptionsHasChanged(false, false);   // possibly also creates DrawView
 
-    ::svl::IUndoManager* pMgr = pDocSh->GetUndoManager();
+    SfxUndoManager* pMgr = pDocSh->GetUndoManager();
     SetUndoManager( pMgr );
     pFormShell->SetUndoManager( pMgr );
     if ( !rDoc.IsUndoEnabled() )
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index c52bf0b3d1d5..4e5fb7b98869 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -596,7 +596,7 @@ bool ScTabViewShell::IsSignatureLineSelected()
 void ScTabViewShell::ExecuteUndo(SfxRequest& rReq)
 {
     SfxShell* pSh = GetViewData().GetDispatcher().GetShell(0);
-    ::svl::IUndoManager* pUndoManager = pSh->GetUndoManager();
+    SfxUndoManager* pUndoManager = pSh->GetUndoManager();
 
     const SfxItemSet* pReqArgs = rReq.GetArgs();
     ScDocShell* pDocSh = GetViewData().GetDocShell();
@@ -680,7 +680,7 @@ void ScTabViewShell::ExecuteUndo(SfxRequest& rReq)
 void ScTabViewShell::GetUndoState(SfxItemSet &rSet)
 {
     SfxShell* pSh = GetViewData().GetDispatcher().GetShell(0);
-    ::svl::IUndoManager* pUndoManager = pSh->GetUndoManager();
+    SfxUndoManager* pUndoManager = pSh->GetUndoManager();
 
     SfxWhichIter aIter(rSet);
     sal_uInt16 nWhich = aIter.FirstWhich();
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index 224fbc2ec1c6..ba955827015d 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -695,7 +695,7 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                 {
                     //  handle several sheets
 
-                    ::svl::IUndoManager* pUndoManager = pDocSh->GetUndoManager();
+                    SfxUndoManager* pUndoManager = pDocSh->GetUndoManager();
                     OUString aUndo = ScResId( STR_UNDO_TAB_RTL );
                     pUndoManager->EnterListAction( aUndo, aUndo, 0, rViewData.GetViewShell()->GetViewShellId() );
 
diff --git a/sc/source/ui/view/viewfun3.cxx b/sc/source/ui/view/viewfun3.cxx
index bc41b1e3ee0c..fc9c4386d18f 100644
--- a/sc/source/ui/view/viewfun3.cxx
+++ b/sc/source/ui/view/viewfun3.cxx
@@ -952,7 +952,7 @@ bool ScViewFunc::PasteFromClip( InsertDeleteFlags nFlags, ScDocument* pClipDoc,
 
     ScDocument* pDoc = GetViewData().GetDocument();
     ScDocShell* pDocSh = GetViewData().GetDocShell();
-    ::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+    SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
     const bool bRecord(pDoc->IsUndoEnabled());
 
     ScDocShellModificator aModificator( *pDocSh );
@@ -1582,7 +1582,7 @@ bool ScViewFunc::PasteMultiRangesFromClip(
 
     if (pDoc->IsUndoEnabled())
     {
-        ::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+        SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
         OUString aUndo = ScResId(
             pClipDoc->IsCutMode() ? STR_UNDO_CUT : STR_UNDO_COPY);
         pUndoMgr->EnterListAction(aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId());
@@ -1747,7 +1747,7 @@ bool ScViewFunc::PasteFromClipToMultiRanges(
 
     if (pDoc->IsUndoEnabled())
     {
-        svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+        SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
         OUString aUndo = ScResId(
             pClipDoc->IsCutMode() ? STR_UNDO_CUT : STR_UNDO_COPY);
         pUndoMgr->EnterListAction(aUndo, aUndo, 0, GetViewData().GetViewShell()->GetViewShellId());
@@ -1937,7 +1937,7 @@ void ScViewFunc::DataFormPutData( SCROW nCurrentRow ,
     ScDocShell* pDocSh = GetViewData().GetDocShell();
     ScMarkData& rMark = GetViewData().GetMarkData();
     ScDocShellModificator aModificator( *pDocSh );
-    ::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+    SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
     if ( pDoc )
     {
         const bool bRecord( pDoc->IsUndoEnabled());
diff --git a/sc/source/ui/view/viewfun6.cxx b/sc/source/ui/view/viewfun6.cxx
index 28c0340986ba..dc94f4a31256 100644
--- a/sc/source/ui/view/viewfun6.cxx
+++ b/sc/source/ui/view/viewfun6.cxx
@@ -440,7 +440,7 @@ void ScViewFunc::InsertCurrentTime(SvNumFormatType nReqFmt, const OUString& rUnd
 
         }
 
-        ::svl::IUndoManager* pUndoMgr = pDocSh->GetUndoManager();
+        SfxUndoManager* pUndoMgr = pDocSh->GetUndoManager();
         pUndoMgr->EnterListAction(rUndoStr, rUndoStr, 0, rViewData.GetViewShell()->GetViewShellId());
 
         pDocSh->GetDocFunc().SetValueCell(aCurPos, fVal, true);
diff --git a/sd/inc/undo/undomanager.hxx b/sd/inc/undo/undomanager.hxx
index d2519a7b0b6d..45fb8fd6a6ac 100644
--- a/sd/inc/undo/undomanager.hxx
+++ b/sd/inc/undo/undomanager.hxx
@@ -37,7 +37,7 @@ public:
 
     /** Set or reset the undo manager linked with the called undo manager.
     */
-    void SetLinkedUndoManager (::svl::IUndoManager* pLinkedUndoManager);
+    void SetLinkedUndoManager (SfxUndoManager* pLinkedUndoManager);
 
 private:
     using SdrUndoManager::Undo;
@@ -46,7 +46,7 @@ private:
     /** Used when the outline view is visible as a last resort to
         synchronize the undo managers.
     */
-    ::svl::IUndoManager* mpLinkedUndoManager;
+    SfxUndoManager* mpLinkedUndoManager;
 
     /** Call ClearRedo() at the linked undo manager, when present.
 
diff --git a/sd/source/core/drawdoc3.cxx b/sd/source/core/drawdoc3.cxx
index 51c56bc886f5..5cd4c61cd185 100644
--- a/sd/source/core/drawdoc3.cxx
+++ b/sd/source/core/drawdoc3.cxx
@@ -478,7 +478,7 @@ bool SdDrawDocument::InsertBookmarkAsPage(
 
     // Get the necessary presentation stylesheets and transfer them before
     // the pages, else, the text objects won't reference their styles anymore.
-    ::svl::IUndoManager* pUndoMgr = nullptr;
+    SfxUndoManager* pUndoMgr = nullptr;
     if( mpDocSh )
     {
         pUndoMgr = mpDocSh->GetUndoManager();
@@ -1183,7 +1183,7 @@ SdCustomShowList* SdDrawDocument::GetCustomShowList(bool bCreate)
 void SdDrawDocument::RemoveUnnecessaryMasterPages(SdPage* pMasterPage, bool bOnlyDuplicatePages, bool bUndo)
 {
     ::sd::View* pView = nullptr;
-    ::svl::IUndoManager* pUndoMgr = nullptr;
+    SfxUndoManager* pUndoMgr = nullptr;
 
     if( bUndo && !IsUndoEnabled() )
         bUndo = false;
@@ -1397,7 +1397,7 @@ void SdDrawDocument::SetMasterPage(sal_uInt16 nSdPageNum,
                                    bool bMaster,
                                    bool bCheckMasters)
 {
-    ::svl::IUndoManager* pUndoMgr = nullptr;
+    SfxUndoManager* pUndoMgr = nullptr;
 
     if( mpDocSh )
     {
diff --git a/sd/source/core/sdpage.cxx b/sd/source/core/sdpage.cxx
index 1746ea72cbd8..96742679c100 100644
--- a/sd/source/core/sdpage.cxx
+++ b/sd/source/core/sdpage.cxx
@@ -271,7 +271,7 @@ void SdPage::EnsureMasterPageDefaultBackground()
 */
 SdrObject* SdPage::CreatePresObj(PresObjKind eObjKind, bool bVertical, const ::tools::Rectangle& rRect )
 {
-    ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+    SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
 
     SdrObject* pSdrObj = nullptr;
@@ -733,7 +733,7 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
                     {
                         if( pObj->GetUserCall() )
                         {
-                            ::svl::IUndoManager* pUndoManager = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager();
+                            SfxUndoManager* pUndoManager = static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager();
                             const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
 
                             if( bUndo )
@@ -781,7 +781,7 @@ void SdPage::Changed(const SdrObject& rObj, SdrUserCallType eType, const ::tools
 
 void SdPage::CreateTitleAndLayout(bool bInit, bool bCreate )
 {
-    ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+    SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
 
     SdPage* pMasterPage = this;
@@ -1601,7 +1601,7 @@ void SdPage::SetAutoLayout(AutoLayout eLayout, bool bInit, bool bCreate )
 
     const bool bSwitchLayout = eLayout != GetAutoLayout();
 
-    ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+    SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
 
     meAutoLayout = eLayout;
@@ -2080,7 +2080,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
     if( !pSourceObj )
         return pSourceObj;
 
-    ::svl::IUndoManager* pUndoManager = rModel.GetUndoManager();
+    SfxUndoManager* pUndoManager = rModel.GetUndoManager();
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && rPage.IsInserted();
 
     SdrObject* pNewObj = pSourceObj;
@@ -2218,7 +2218,7 @@ SdrObject* convertPresentationObjectImpl(SdPage& rPage, SdrObject* pSourceObj, P
 */
 SdrObject* SdPage::InsertAutoLayoutShape(SdrObject* pObj, PresObjKind eObjKind, bool bVertical, const ::tools::Rectangle& rRect, bool bInit)
 {
-    ::svl::IUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
+    SfxUndoManager* pUndoManager(static_cast< SdDrawDocument& >(getSdrModelFromSdrPage()).GetUndoManager());
     const bool bUndo = pUndoManager && pUndoManager->IsInListAction() && IsInserted();
 
     if (!pObj && bInit)
diff --git a/sd/source/core/undo/undomanager.cxx b/sd/source/core/undo/undomanager.cxx
index 57bc43880e63..950747bc8d20 100644
--- a/sd/source/core/undo/undomanager.cxx
+++ b/sd/source/core/undo/undomanager.cxx
@@ -49,7 +49,7 @@ void UndoManager::AddUndoAction( SfxUndoAction *pAction, bool bTryMerg /* = sal_
     }
 }
 
-void UndoManager::SetLinkedUndoManager (::svl::IUndoManager* pLinkedUndoManager)
+void UndoManager::SetLinkedUndoManager (SfxUndoManager* pLinkedUndoManager)
 {
     mpLinkedUndoManager = pLinkedUndoManager;
 }
diff --git a/sd/source/ui/animations/CustomAnimationPane.cxx b/sd/source/ui/animations/CustomAnimationPane.cxx
index a3a3d5d44dc3..eea562a53d7f 100644
--- a/sd/source/ui/animations/CustomAnimationPane.cxx
+++ b/sd/source/ui/animations/CustomAnimationPane.cxx
@@ -291,7 +291,7 @@ void CustomAnimationPane::dispose()
 
 void CustomAnimationPane::addUndo()
 {
-    ::svl::IUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager();
+    SfxUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager();
     if( pManager )
     {
         SdPage* pPage = SdPage::getImplementation( mxCurrentPage );
@@ -2511,7 +2511,7 @@ void CustomAnimationPane::updatePathFromMotionPathTag( const rtl::Reference< Mot
         CustomAnimationEffectPtr pEffect = xTag->getEffect();
         if( (pPathObj != nullptr) && pEffect.get() != nullptr )
         {
-            ::svl::IUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager();
+            SfxUndoManager* pManager = mrBase.GetDocShell()->GetUndoManager();
             if( pManager )
             {
                 SdPage* pPage = SdPage::getImplementation( mxCurrentPage );
diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx
index fe555039409e..161141ddc5bf 100644
--- a/sd/source/ui/animations/SlideTransitionPane.cxx
+++ b/sd/source/ui/animations/SlideTransitionPane.cxx
@@ -239,7 +239,7 @@ void lcl_CreateUndoForPages(
     ::sd::DrawDocShell* pDocSh      = rBase.GetDocShell();
     if (!pDocSh)
         return;
-    ::svl::IUndoManager* pManager   = pDocSh->GetUndoManager();
+    SfxUndoManager* pManager   = pDocSh->GetUndoManager();
     if (!pManager)
         return;
     SdDrawDocument* pDoc            = pDocSh->GetDoc();
diff --git a/sd/source/ui/dlg/LayerTabBar.cxx b/sd/source/ui/dlg/LayerTabBar.cxx
index bdfc7855897f..56de16045ab8 100644
--- a/sd/source/ui/dlg/LayerTabBar.cxx
+++ b/sd/source/ui/dlg/LayerTabBar.cxx
@@ -139,7 +139,7 @@ void LayerTabBar::MouseButtonDown(const MouseEvent& rMEvt)
                 assert (pDrView && "Change layer attribute undo action is only working with a SdDrawView");
                 if(pDrView)
                 {
-                    ::svl::IUndoManager* pManager = rDoc.GetDocSh()->GetUndoManager();
+                    SfxUndoManager* pManager = rDoc.GetDocSh()->GetUndoManager();
                     SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
                         &rDoc,
                         pLayer,
@@ -320,7 +320,7 @@ void LayerTabBar::EndRenaming()
             assert (pDrView && "Rename layer undo action is only working with a SdDrawView");
             if( pDrView )
             {
-                ::svl::IUndoManager* pManager = rDoc.GetDocSh()->GetUndoManager();
+                SfxUndoManager* pManager = rDoc.GetDocSh()->GetUndoManager();
                 SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
                     &rDoc,
                     pLayer,
diff --git a/sd/source/ui/docshell/docshell.cxx b/sd/source/ui/docshell/docshell.cxx
index 18ae520fbbf7..09f460c994f2 100644
--- a/sd/source/ui/docshell/docshell.cxx
+++ b/sd/source/ui/docshell/docshell.cxx
@@ -405,7 +405,7 @@ void DrawDocShell::Deactivate( bool )
 {
 }
 
-::svl::IUndoManager* DrawDocShell::GetUndoManager()
+SfxUndoManager* DrawDocShell::GetUndoManager()
 {
     return mpUndoManager.get();
 }
@@ -521,7 +521,7 @@ void DrawDocShell::ClearUndoBuffer()
         pSfxViewFrame = SfxViewFrame::GetNext(*pSfxViewFrame, this, false);
     }
 
-    ::svl::IUndoManager* pUndoManager = GetUndoManager();
+    SfxUndoManager* pUndoManager = GetUndoManager();
     if(pUndoManager && pUndoManager->GetUndoActionCount())
         pUndoManager->Clear();
 }
diff --git a/sd/source/ui/func/fubullet.cxx b/sd/source/ui/func/fubullet.cxx
index 523578bad564..1574d2d6b7ba 100644
--- a/sd/source/ui/func/fubullet.cxx
+++ b/sd/source/ui/func/fubullet.cxx
@@ -126,7 +126,7 @@ void FuBullet::InsertFormattingMark( sal_Unicode cMark )
         pOV->InsertText( "" );
 
         // prepare undo
-        ::svl::IUndoManager& rUndoMgr =  pOL->GetUndoManager();
+        SfxUndoManager& rUndoMgr =  pOL->GetUndoManager();
         rUndoMgr.EnterListAction(SdResId(STR_UNDO_INSERT_SPECCHAR),
                                     "", 0, mpViewShell->GetViewShellBase().GetViewShellId() );
 
@@ -237,7 +237,7 @@ void FuBullet::InsertSpecialCharacter( SfxRequest const & rReq )
             SfxItemSet aOldSet( mpDoc->GetPool(), svl::Items<EE_CHAR_FONTINFO, EE_CHAR_FONTINFO>{} );
             aOldSet.Put( pOV->GetAttribs() );
 
-            ::svl::IUndoManager& rUndoMgr =  pOL->GetUndoManager();
+            SfxUndoManager& rUndoMgr =  pOL->GetUndoManager();
             ViewShellId nViewShellId = mpViewShell ? mpViewShell->GetViewShellBase().GetViewShellId() : ViewShellId(-1);
             rUndoMgr.EnterListAction(SdResId(STR_UNDO_INSERT_SPECCHAR),
                                      "", 0, nViewShellId );
diff --git a/sd/source/ui/func/fuoaprms.cxx b/sd/source/ui/func/fuoaprms.cxx
index 1d1854d4906b..7915a1b8c783 100644
--- a/sd/source/ui/func/fuoaprms.cxx
+++ b/sd/source/ui/func/fuoaprms.cxx
@@ -75,7 +75,7 @@ rtl::Reference<FuPoor> FuObjectAnimationParameters::Create( ViewShell* pViewSh,
 
 void FuObjectAnimationParameters::DoExecute( SfxRequest& rReq )
 {
-    ::svl::IUndoManager* pUndoMgr = mpViewShell->GetViewFrame()->GetObjectShell()->GetUndoManager();
+    SfxUndoManager* pUndoMgr = mpViewShell->GetViewFrame()->GetObjectShell()->GetUndoManager();
 
     const SdrMarkList& rMarkList  = mpView->GetMarkedObjectList();
     const size_t nCount = rMarkList.GetMarkCount();
diff --git a/sd/source/ui/inc/DrawDocShell.hxx b/sd/source/ui/inc/DrawDocShell.hxx
index 4c6bc4528cc1..b11af639a4a4 100644
--- a/sd/source/ui/inc/DrawDocShell.hxx
+++ b/sd/source/ui/inc/DrawDocShell.hxx
@@ -91,8 +91,7 @@ public:
 
     virtual ::tools::Rectangle       GetVisArea(sal_uInt16 nAspect) const override;
     virtual void            Draw(OutputDevice*, const JobSetup& rSetup, sal_uInt16 nAspect) override;
-    virtual ::svl::IUndoManager*
-                            GetUndoManager() override;
+    virtual SfxUndoManager* GetUndoManager() override;
     virtual Printer*        GetDocumentPrinter() override;
     virtual void            OnDocumentPrinterChanged(Printer* pNewPrinter) override;
     virtual SfxStyleSheetBasePool* GetStyleSheetPool() override;
diff --git a/sd/source/ui/inc/SlideSorterViewShell.hxx b/sd/source/ui/inc/SlideSorterViewShell.hxx
index 621ba4c7820a..29baec79a8e7 100644
--- a/sd/source/ui/inc/SlideSorterViewShell.hxx
+++ b/sd/source/ui/inc/SlideSorterViewShell.hxx
@@ -199,7 +199,7 @@ protected:
     /** Override this method to handle a missing tool bar correctly.
         This is the case when the slide sorter is not the main view shell.
     */
-    virtual ::svl::IUndoManager* ImpGetUndoManager() const override;
+    virtual SfxUndoManager* ImpGetUndoManager() const override;
 
 private:
     std::shared_ptr<SlideSorter> mpSlideSorter;
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
index 1e002a59958e..a78834330ed3 100644
--- a/sd/source/ui/inc/ViewShell.hxx
+++ b/sd/source/ui/inc/ViewShell.hxx
@@ -492,7 +492,7 @@ protected:
     std::unique_ptr<Implementation, o3tl::default_delete<Implementation>> mpImpl;
 
     // Support methods for centralized UNDO/REDO
-    virtual ::svl::IUndoManager* ImpGetUndoManager() const;
+    virtual SfxUndoManager* ImpGetUndoManager() const;
     void ImpGetUndoStrings(SfxItemSet &rSet) const;
     void ImpGetRedoStrings(SfxItemSet &rSet) const;
     void ImpSidUndo(SfxRequest& rReq);
diff --git a/sd/source/ui/sidebar/DocumentHelper.cxx b/sd/source/ui/sidebar/DocumentHelper.cxx
index 63d41e996140..15930344209e 100644
--- a/sd/source/ui/sidebar/DocumentHelper.cxx
+++ b/sd/source/ui/sidebar/DocumentHelper.cxx
@@ -268,7 +268,7 @@ void DocumentHelper::ProvideStyles (
     // Add an undo action for the copied style sheets.
     if( !aCreatedStyles.empty() )
     {
-        ::svl::IUndoManager* pUndoManager = rTargetDocument.GetDocSh()->GetUndoManager();
+        SfxUndoManager* pUndoManager = rTargetDocument.GetDocSh()->GetUndoManager();
        if (pUndoManager != nullptr)
        {
            SdMoveStyleSheetsUndoAction* pMovStyles =
@@ -315,7 +315,7 @@ void DocumentHelper::AssignMasterPageToPageList (
         if (aCleanedList.empty() )
         return;
 
-    ::svl::IUndoManager* pUndoMgr = rTargetDocument.GetDocSh()->GetUndoManager();
+    SfxUndoManager* pUndoMgr = rTargetDocument.GetDocSh()->GetUndoManager();
     if( pUndoMgr )
         pUndoMgr->EnterListAction(SdResId(STR_UNDO_SET_PRESLAYOUT), OUString(), 0, rTargetDocument.GetDocSh()->GetViewShell()->GetViewShellBase().GetViewShellId());
 
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index d380d2e55bef..b95af6f2b617 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -926,7 +926,7 @@ bool SlotManager::RenameSlideFromDrawViewShell( sal_uInt16 nPageId, const OUStri
 
     SdPage* pPageToRename = nullptr;
 
-    ::svl::IUndoManager* pManager = pDocument->GetDocSh()->GetUndoManager();
+    SfxUndoManager* pManager = pDocument->GetDocSh()->GetUndoManager();
 
     if( mrSlideSorter.GetModel().GetEditMode() == EditMode::Page )
     {
diff --git a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
index ca3be2f90439..2344a7371a8f 100644
--- a/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
+++ b/sd/source/ui/slidesorter/shell/SlideSorterViewShell.cxx
@@ -294,7 +294,7 @@ bool SlideSorterViewShell::RelocateToParentWindow (vcl::Window* pParentWindow)
     return bSuccess;
 }
 
-::svl::IUndoManager* SlideSorterViewShell::ImpGetUndoManager() const
+SfxUndoManager* SlideSorterViewShell::ImpGetUndoManager() const
 {
     SfxShell* pObjectBar = GetViewShellBase().GetViewShellManager()->GetTopShell();
     if (pObjectBar != nullptr)
diff --git a/sd/source/ui/view/ViewShellImplementation.cxx b/sd/source/ui/view/ViewShellImplementation.cxx
index e34f97ef6aad..b93db139d119 100644
--- a/sd/source/ui/view/ViewShellImplementation.cxx
+++ b/sd/source/ui/view/ViewShellImplementation.cxx
@@ -162,7 +162,7 @@ void ViewShell::Implementation::ProcessModifyPageSlot (
         SdPage* pUndoPage =
             bHandoutMode ? pHandoutMPage : pCurrentPage;
 
-        ::svl::IUndoManager* pUndoManager = mrViewShell.GetDocSh()->GetUndoManager();
+        SfxUndoManager* pUndoManager = mrViewShell.GetDocSh()->GetUndoManager();
         DBG_ASSERT(pUndoManager, "No UNDO MANAGER ?!?");
 
         if( pUndoManager )
diff --git a/sd/source/ui/view/ViewShellManager.cxx b/sd/source/ui/view/ViewShellManager.cxx
index 463487eee215..e54b5d505bd0 100644
--- a/sd/source/ui/view/ViewShellManager.cxx
+++ b/sd/source/ui/view/ViewShellManager.cxx
@@ -707,7 +707,7 @@ void ViewShellManager::Implementation::UpdateShellStack()
 
     // Remember the undo manager from the top-most shell on the stack.
     SfxShell* pTopMostShell = mrBase.GetSubShell(0);
-    ::svl::IUndoManager* pUndoManager = (pTopMostShell!=nullptr)
+    SfxUndoManager* pUndoManager = (pTopMostShell!=nullptr)
         ? pTopMostShell->GetUndoManager()
         : nullptr;
 
@@ -800,7 +800,7 @@ void ViewShellManager::Implementation::TakeShellsFromStack (const SfxShell* pShe
 
     // Remember the undo manager from the top-most shell on the stack.
     SfxShell* pTopMostShell = mrBase.GetSubShell(0);
-    ::svl::IUndoManager* pUndoManager = (pTopMostShell!=nullptr)
+    SfxUndoManager* pUndoManager = (pTopMostShell!=nullptr)
         ? pTopMostShell->GetUndoManager()
         : nullptr;
 
diff --git a/sd/source/ui/view/drviews2.cxx b/sd/source/ui/view/drviews2.cxx
index af5b57298246..3891ecb24486 100644
--- a/sd/source/ui/view/drviews2.cxx
+++ b/sd/source/ui/view/drviews2.cxx
@@ -566,7 +566,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
     {
         case SID_OUTLINE_TEXT_AUTOFIT:
         {
-            ::svl::IUndoManager* pUndoManager = GetDocSh()->GetUndoManager();
+            SfxUndoManager* pUndoManager = GetDocSh()->GetUndoManager();
             const SdrMarkList& rMarkList = mpDrawView->GetMarkedObjectList();
             if( rMarkList.GetMarkCount() == 1 )
             {
@@ -2027,7 +2027,7 @@ void DrawViewShell::FuTemporary(SfxRequest& rReq)
                 break;
             }
 
-            ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
+            SfxUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
             SdLayerModifyUndoAction* pAction = new SdLayerModifyUndoAction(
                 GetDoc(),
                 pLayer,
diff --git a/sd/source/ui/view/drviewsb.cxx b/sd/source/ui/view/drviewsb.cxx
index 49e98b7d721e..9fd8f21f5cd7 100644
--- a/sd/source/ui/view/drviewsb.cxx
+++ b/sd/source/ui/view/drviewsb.cxx
@@ -82,7 +82,7 @@ bool DrawViewShell::RenameSlide( sal_uInt16 nPageId, const OUString & rName  )
         SdrLayerID nBgObj = rLayerAdmin.GetLayerID( SdResId(STR_LAYER_BCKGRNDOBJ) );
         SdrLayerIDSet aVisibleLayers = mpActualPage->TRG_GetMasterPageVisibleLayers();
 
-        ::svl::IUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
+        SfxUndoManager* pManager = GetDoc()->GetDocSh()->GetUndoManager();
         ModifyPageUndoAction* pAction = new ModifyPageUndoAction(
             GetDoc(), pUndoPage, rName, pUndoPage->GetAutoLayout(),
             aVisibleLayers.IsSet( nBackground ),
diff --git a/sd/source/ui/view/outlview.cxx b/sd/source/ui/view/outlview.cxx
index 534a484ce810..527f32378289 100644
--- a/sd/source/ui/view/outlview.cxx
+++ b/sd/source/ui/view/outlview.cxx
@@ -1428,7 +1428,7 @@ void OutlineView::EndModelChange()
 {
     UpdateDocument();
 
-    ::svl::IUndoManager* pDocUndoMgr = mpDocSh->GetUndoManager();
+    SfxUndoManager* pDocUndoMgr = mpDocSh->GetUndoManager();
 
     bool bHasUndoActions = pDocUndoMgr->GetUndoActionCount() != 0;
 
@@ -1482,7 +1482,7 @@ void OutlineView::UpdateDocument()
 /** merge edit engine undo actions if possible */
 void OutlineView::TryToMergeUndoActions()
 {
-    ::svl::IUndoManager& rOutlineUndo = mrOutliner.GetUndoManager();
+    SfxUndoManager& rOutlineUndo = mrOutliner.GetUndoManager();
     if( rOutlineUndo.GetUndoActionCount() > 1 )
     {
         SfxListUndoAction* pListAction = dynamic_cast< SfxListUndoAction* >( rOutlineUndo.GetUndoAction() );
diff --git a/sd/source/ui/view/viewshe3.cxx b/sd/source/ui/view/viewshe3.cxx
index 507724c68ce2..4a45f8912a8e 100644
--- a/sd/source/ui/view/viewshe3.cxx
+++ b/sd/source/ui/view/viewshe3.cxx
@@ -122,7 +122,7 @@ void  ViewShell::GetMenuState( SfxItemSet &rSet )
 
     if(SfxItemState::DEFAULT == rSet.GetItemState(SID_UNDO))
     {
-        ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+        SfxUndoManager* pUndoManager = ImpGetUndoManager();
         if(pUndoManager)
         {
             if(pUndoManager->GetUndoActionCount() != 0)
@@ -151,7 +151,7 @@ void  ViewShell::GetMenuState( SfxItemSet &rSet )
 
     if(SfxItemState::DEFAULT == rSet.GetItemState(SID_REDO))
     {
-        ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+        SfxUndoManager* pUndoManager = ImpGetUndoManager();
         if(pUndoManager)
         {
             if(pUndoManager->GetRedoActionCount() != 0)
diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx
index 93f3fcc85684..1ec9cdec1a21 100644
--- a/sd/source/ui/view/viewshel.cxx
+++ b/sd/source/ui/view/viewshel.cxx
@@ -1123,7 +1123,7 @@ void ViewShell::UpdatePreview (SdPage*, bool )
     // useful is still done.
 }
 
-::svl::IUndoManager* ViewShell::ImpGetUndoManager() const
+SfxUndoManager* ViewShell::ImpGetUndoManager() const
 {
     const ViewShell* pMainViewShell = GetViewShellBase().GetMainViewShell().get();
 
@@ -1160,7 +1160,7 @@ void ViewShell::UpdatePreview (SdPage*, bool )
 
 void ViewShell::ImpGetUndoStrings(SfxItemSet &rSet) const
 {
-    ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+    SfxUndoManager* pUndoManager = ImpGetUndoManager();
     if(pUndoManager)
     {
         sal_uInt16 nCount(pUndoManager->GetUndoActionCount());
@@ -1187,7 +1187,7 @@ void ViewShell::ImpGetUndoStrings(SfxItemSet &rSet) const
 
 void ViewShell::ImpGetRedoStrings(SfxItemSet &rSet) const
 {
-    ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+    SfxUndoManager* pUndoManager = ImpGetUndoManager();
     if(pUndoManager)
     {
         sal_uInt16 nCount(pUndoManager->GetRedoActionCount());
@@ -1237,7 +1237,7 @@ void ViewShell::ImpSidUndo(SfxRequest& rReq)
     if (pSlideSorterViewShell)
         xWatcher.reset(new KeepSlideSorterInSyncWithPageChanges(pSlideSorterViewShell->GetSlideSorter()));
 
-    ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+    SfxUndoManager* pUndoManager = ImpGetUndoManager();
     sal_uInt16 nNumber(1);
     const SfxItemSet* pReqArgs = rReq.GetArgs();
     bool bRepair = false;
@@ -1306,7 +1306,7 @@ void ViewShell::ImpSidRedo(SfxRequest& rReq)
     if (pSlideSorterViewShell)
         xWatcher.reset(new KeepSlideSorterInSyncWithPageChanges(pSlideSorterViewShell->GetSlideSorter()));
 
-    ::svl::IUndoManager* pUndoManager = ImpGetUndoManager();
+    SfxUndoManager* pUndoManager = ImpGetUndoManager();
     sal_uInt16 nNumber(1);
     const SfxItemSet* pReqArgs = rReq.GetArgs();
     bool bRepair = false;
diff --git a/sfx2/source/appl/appcfg.cxx b/sfx2/source/appl/appcfg.cxx
index 1ebe1e35ac4a..e9a7c76efca6 100644
--- a/sfx2/source/appl/appcfg.cxx
+++ b/sfx2/source/appl/appcfg.cxx
@@ -622,7 +622,7 @@ void SfxApplication::SetOptions_Impl( const SfxItemSet& rSet )
                   pSh;
                   ++nIdx, pSh = pDispat->GetShell(nIdx) )
             {
-                ::svl::IUndoManager *pShUndoMgr = pSh->GetUndoManager();
+                SfxUndoManager *pShUndoMgr = pSh->GetUndoManager();
                 if ( pShUndoMgr )
                     pShUndoMgr->SetMaxUndoActionCount( nUndoCount );
             }
diff --git a/sfx2/source/control/shell.cxx b/sfx2/source/control/shell.cxx
index 970ca26c3260..3c48c749625e 100644
--- a/sfx2/source/control/shell.cxx
+++ b/sfx2/source/control/shell.cxx
@@ -201,12 +201,12 @@ SfxInterface* SfxShell::GetInterface() const
     return GetStaticInterface();
 }
 
-::svl::IUndoManager* SfxShell::GetUndoManager()
+SfxUndoManager* SfxShell::GetUndoManager()
 {
     return pUndoMgr;
 }
 
-void SfxShell::SetUndoManager( ::svl::IUndoManager *pNewUndoMgr )
+void SfxShell::SetUndoManager( SfxUndoManager *pNewUndoMgr )
 {
     OSL_ENSURE( ( pUndoMgr == nullptr ) || ( pNewUndoMgr == nullptr ) || ( pUndoMgr == pNewUndoMgr ),
         "SfxShell::SetUndoManager: exchanging one non-NULL manager with another non-NULL manager? Suspicious!" );
diff --git a/sfx2/source/doc/docundomanager.cxx b/sfx2/source/doc/docundomanager.cxx
index 25a7082a1ef9..fe1baa263e68 100644
--- a/sfx2/source/doc/docundomanager.cxx
+++ b/sfx2/source/doc/docundomanager.cxx
@@ -48,15 +48,12 @@ namespace sfx2
     using ::com::sun::star::lang::NoSupportException;
     using ::com::sun::star::frame::XModel;
 
-    using ::svl::IUndoManager;
-
-
     //= DocumentUndoManager_Impl
 
     struct DocumentUndoManager_Impl : public ::framework::IUndoManagerImplementation
     {
         DocumentUndoManager&                rAntiImpl;
-        IUndoManager*                       pUndoManager;
+        SfxUndoManager*                     pUndoManager;
         ::framework::UndoManagerHelper      aUndoHelper;
 
         explicit DocumentUndoManager_Impl( DocumentUndoManager& i_antiImpl )
@@ -73,7 +70,7 @@ namespace sfx2
         };
 
         // IUndoManagerImplementation
-        virtual ::svl::IUndoManager&        getImplUndoManager() override;
+        virtual SfxUndoManager&        getImplUndoManager() override;
         virtual Reference< XUndoManager >   getThis() override;
 
         void disposing()
@@ -86,9 +83,9 @@ namespace sfx2
         void invalidateXDo_nolck();
 
     private:
-        static IUndoManager* impl_retrieveUndoManager( SfxBaseModel& i_baseModel )
+        static SfxUndoManager* impl_retrieveUndoManager( SfxBaseModel& i_baseModel )
         {
-            IUndoManager* pUndoManager( nullptr );
+            SfxUndoManager* pUndoManager( nullptr );
             SfxObjectShell* pObjectShell = i_baseModel.GetObjectShell();
             if ( pObjectShell != nullptr )
                 pUndoManager = pObjectShell->GetUndoManager();
@@ -99,7 +96,7 @@ namespace sfx2
     };
 
 
-    ::svl::IUndoManager& DocumentUndoManager_Impl::getImplUndoManager()
+    SfxUndoManager& DocumentUndoManager_Impl::getImplUndoManager()
     {
         ENSURE_OR_THROW( pUndoManager != nullptr, "DocumentUndoManager_Impl::getImplUndoManager: no access to the doc's UndoManager implementation!" );
 
diff --git a/sfx2/source/doc/objserv.cxx b/sfx2/source/doc/objserv.cxx
index ad53b1a7bb56..0c17b7e45722 100644
--- a/sfx2/source/doc/objserv.cxx
+++ b/sfx2/source/doc/objserv.cxx
@@ -1110,7 +1110,7 @@ void SfxObjectShell::GetState_Impl(SfxItemSet &rSet)
             }
             case SID_DOC_REPAIR:
             {
-                svl::IUndoManager* pIUndoMgr = GetUndoManager();
+                SfxUndoManager* pIUndoMgr = GetUndoManager();
                 if (pIUndoMgr)
                     rSet.Put( SfxBoolItem(nWhich, pIUndoMgr->IsEmptyActions()) );
                 else
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index a0c34c36d0bf..9d4cebb64562 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -898,7 +898,7 @@ void SfxViewFrame::ExecHistory_Impl( SfxRequest &rReq )
 {
     // Is there an Undo-Manager on the top Shell?
     SfxShell *pSh = GetDispatcher()->GetShell(0);
-    ::svl::IUndoManager* pShUndoMgr = pSh->GetUndoManager();
+    SfxUndoManager* pShUndoMgr = pSh->GetUndoManager();
     bool bOK = false;
     if ( pShUndoMgr )
     {
@@ -948,7 +948,7 @@ void SfxViewFrame::StateHistory_Impl( SfxItemSet &rSet )
         // I'm just on reload and am yielding myself ...
         return;
 
-    ::svl::IUndoManager *pShUndoMgr = pSh->GetUndoManager();
+    SfxUndoManager *pShUndoMgr = pSh->GetUndoManager();
     if ( !pShUndoMgr )
     {
         // The SW has its own undo in the View
diff --git a/starmath/inc/document.hxx b/starmath/inc/document.hxx
index 95d6af49b1e7..5f7e91ff83c1 100644
--- a/starmath/inc/document.hxx
+++ b/starmath/inc/document.hxx
@@ -193,7 +193,7 @@ public:
 
     void        Repaint();
 
-    virtual ::svl::IUndoManager *GetUndoManager () override;
+    virtual SfxUndoManager *GetUndoManager () override;
 
     static SfxItemPool& GetPool();
 
diff --git a/starmath/source/document.cxx b/starmath/source/document.cxx
index 8668fa061e2f..5e8504a52db6 100644
--- a/starmath/source/document.cxx
+++ b/starmath/source/document.cxx
@@ -898,7 +898,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
             SmFormat aNewFormat( aOldFormat );
             aNewFormat.SetTextmode(!aOldFormat.IsTextmode());
 
-            ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
+            SfxUndoManager *pTmpUndoMgr = GetUndoManager();
             if (pTmpUndoMgr)
                 pTmpUndoMgr->AddUndoAction(
                     new SmFormatAction(this, aOldFormat, aNewFormat));
@@ -941,7 +941,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
                 SmFormat aNewFormat( aOldFormat );
 
                 aFontTypeDialog.WriteTo(aNewFormat);
-                ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
+                SfxUndoManager *pTmpUndoMgr = GetUndoManager();
                 if (pTmpUndoMgr)
                     pTmpUndoMgr->AddUndoAction(
                         new SmFormatAction(this, aOldFormat, aNewFormat));
@@ -964,7 +964,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
 
                 aFontSizeDialog.WriteTo(aNewFormat);
 
-                ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
+                SfxUndoManager *pTmpUndoMgr = GetUndoManager();
                 if (pTmpUndoMgr)
                     pTmpUndoMgr->AddUndoAction(
                         new SmFormatAction(this, aOldFormat, aNewFormat));
@@ -987,7 +987,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
 
                 aDistanceDialog.WriteTo(aNewFormat);
 
-                ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
+                SfxUndoManager *pTmpUndoMgr = GetUndoManager();
                 if (pTmpUndoMgr)
                     pTmpUndoMgr->AddUndoAction(
                         new SmFormatAction(this, aOldFormat, aNewFormat));
@@ -1015,7 +1015,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
                 aAlignDialog.WriteTo( aFmt );
                 pp->GetConfig()->SetStandardFormat( aFmt );
 
-                ::svl::IUndoManager *pTmpUndoMgr = GetUndoManager();
+                SfxUndoManager *pTmpUndoMgr = GetUndoManager();
                 if (pTmpUndoMgr)
                     pTmpUndoMgr->AddUndoAction(
                         new SmFormatAction(this, aOldFormat, aNewFormat));
@@ -1037,7 +1037,7 @@ void SmDocShell::Execute(SfxRequest& rReq)
         case SID_UNDO:
         case SID_REDO:
         {
-            ::svl::IUndoManager* pTmpUndoMgr = GetUndoManager();
+            SfxUndoManager* pTmpUndoMgr = GetUndoManager();
             if( pTmpUndoMgr )
             {
                 sal_uInt16 nId = rReq.GetSlot(), nCnt = 1;
@@ -1046,18 +1046,18 @@ void SmDocShell::Execute(SfxRequest& rReq)
                 if( pArgs && SfxItemState::SET == pArgs->GetItemState( nId, false, &pItem ))
                     nCnt = static_cast<const SfxUInt16Item*>(pItem)->GetValue();
 
-                bool (::svl::IUndoManager:: *fnDo)();
+                bool (SfxUndoManager:: *fnDo)();
 
                 size_t nCount;
                 if( SID_UNDO == rReq.GetSlot() )
                 {
                     nCount = pTmpUndoMgr->GetUndoActionCount();
-                    fnDo = &::svl::IUndoManager::Undo;
+                    fnDo = &SfxUndoManager::Undo;
                 }
                 else
                 {
                     nCount = pTmpUndoMgr->GetRedoActionCount();
-                    fnDo = &::svl::IUndoManager::Redo;
+                    fnDo = &SfxUndoManager::Redo;
                 }
 
                 try
@@ -1150,28 +1150,28 @@ void SmDocShell::GetState(SfxItemSet &rSet)
         case SID_GETUNDOSTRINGS:
         case SID_GETREDOSTRINGS:
             {
-                ::svl::IUndoManager* pTmpUndoMgr = GetUndoManager();
+                SfxUndoManager* pTmpUndoMgr = GetUndoManager();
                 if( pTmpUndoMgr )
                 {
-                    OUString(::svl::IUndoManager:: *fnGetComment)( size_t, bool const ) const;
+                    OUString(SfxUndoManager:: *fnGetComment)( size_t, bool const ) const;
 
                     size_t nCount;
                     if( SID_GETUNDOSTRINGS == nWh )
                     {
                         nCount = pTmpUndoMgr->GetUndoActionCount();

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list