sc/inc/tablink.hxx | 6 ++--- sc/source/core/data/documen3.cxx | 2 - sc/source/ui/docshell/docsh6.cxx | 2 - sc/source/ui/docshell/tablink.cxx | 43 +++++++++++++++----------------------- sc/source/ui/view/viewfun2.cxx | 2 - 5 files changed, 23 insertions(+), 32 deletions(-)
New commits: commit c642ba4de2a8d3614f0b7c22b9c93a6cf507e78d Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri May 23 12:23:35 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri May 23 21:09:37 2025 +0200 ScTableLink: drop pImpl and pass ScDocShell by ref Change-Id: Icdfeb1e10692f6cff7b3d4e4c78b0becfcf3b183 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185713 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/inc/tablink.hxx b/sc/inc/tablink.hxx index dae9e3f37485..3a9546217949 100644 --- a/sc/inc/tablink.hxx +++ b/sc/inc/tablink.hxx @@ -27,14 +27,14 @@ #include <memory> class ScDocShell; -struct TableLink_Impl; namespace weld { class Window; } class ScTableLink final : public ::sfx2::SvBaseLink, public ScRefreshTimer { private: - std::unique_ptr<TableLink_Impl> pImpl; + ScDocShell& m_rDocSh; + Link<sfx2::SvBaseLink&,void> m_aEndEditLink; OUString aFileName; OUString aFilterName; OUString aOptions; @@ -43,7 +43,7 @@ private: bool bAddUndo:1; public: - ScTableLink( ScDocShell* pDocSh, OUString aFile, + ScTableLink( ScDocShell& rDocSh, OUString aFile, OUString aFilter, OUString aOpt, sal_Int32 nRefreshDelaySeconds ); virtual ~ScTableLink() override; virtual void Closed() override; diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index 52529d721aaa..ced75f3cb4dc 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -613,7 +613,7 @@ bool ScDocument::LinkExternalTab( SCTAB& rTab, const OUString& aDocTab, SetLink( rTab, ScLinkMode::VALUE, aFileName, aFilterName, aOptions, aTabName, nRefreshDelay ); if ( !bWasThere ) // Add link only once per source document { - ScTableLink* pLink = new ScTableLink( mpShell, aFileName, aFilterName, aOptions, nRefreshDelay ); + ScTableLink* pLink = new ScTableLink( *mpShell, aFileName, aFilterName, aOptions, nRefreshDelay ); pLink->SetInCreate( true ); OUString aFilName = aFilterName; GetLinkManager()->InsertFileLink( *pLink, sfx2::SvBaseLinkObjectType::ClientFile, aFileName, &aFilName ); diff --git a/sc/source/ui/docshell/docsh6.cxx b/sc/source/ui/docshell/docsh6.cxx index 8e57289a6706..23c86bcd089c 100644 --- a/sc/source/ui/docshell/docsh6.cxx +++ b/sc/source/ui/docshell/docsh6.cxx @@ -374,7 +374,7 @@ void ScDocShell::UpdateLinks() if (!bThere) { - ScTableLink* pLink = new ScTableLink( this, aDocName, aFltName, aOptions, nRefresh ); + ScTableLink* pLink = new ScTableLink( *this, aDocName, aFltName, aOptions, nRefresh ); pLink->SetInCreate(true); pLinkManager->InsertFileLink(*pLink, sfx2::SvBaseLinkObjectType::ClientFile, aDocName, &aFltName); pLink->Update(); diff --git a/sc/source/ui/docshell/tablink.cxx b/sc/source/ui/docshell/tablink.cxx index fdf22a93dae1..4babed2103ed 100644 --- a/sc/source/ui/docshell/tablink.cxx +++ b/sc/source/ui/docshell/tablink.cxx @@ -53,20 +53,12 @@ #include <formulaiter.hxx> #include <tokenarray.hxx> -struct TableLink_Impl -{ - ScDocShell* m_pDocSh; - Link<sfx2::SvBaseLink&,void> m_aEndEditLink; - - TableLink_Impl() : m_pDocSh( nullptr ) {} -}; - -ScTableLink::ScTableLink(ScDocShell* pShell, OUString aFile, +ScTableLink::ScTableLink(ScDocShell& rShell, OUString aFile, OUString aFilter, OUString aOpt, sal_Int32 nRefreshDelaySeconds ): ::sfx2::SvBaseLink(SfxLinkUpdateMode::ONCALL,SotClipboardFormatId::SIMPLE_FILE), ScRefreshTimer( nRefreshDelaySeconds ), - pImpl( new TableLink_Impl ), + m_rDocSh( rShell ), aFileName(std::move(aFile)), aFilterName(std::move(aFilter)), aOptions(std::move(aOpt)), @@ -74,7 +66,6 @@ ScTableLink::ScTableLink(ScDocShell* pShell, OUString aFile, bInEdit( false ), bAddUndo( true ) { - pImpl->m_pDocSh = pShell; } ScTableLink::~ScTableLink() @@ -82,7 +73,7 @@ ScTableLink::~ScTableLink() // cancel connection StopRefreshTimer(); - ScDocument& rDoc = pImpl->m_pDocSh->GetDocument(); + ScDocument& rDoc = m_rDocSh.GetDocument(); SCTAB nCount = rDoc.GetTableCount(); for (SCTAB nTab=0; nTab<nCount; nTab++) if (rDoc.IsLinked(nTab) && aFileName == rDoc.GetLinkDoc(nTab)) @@ -91,7 +82,7 @@ ScTableLink::~ScTableLink() void ScTableLink::Edit(weld::Window* pParent, const Link<SvBaseLink&,void>& rEndEditHdl) { - pImpl->m_aEndEditLink = rEndEditHdl; + m_aEndEditLink = rEndEditHdl; bInEdit = true; SvBaseLink::Edit( pParent, LINK( this, ScTableLink, TableEndEditHdl ) ); @@ -100,7 +91,7 @@ void ScTableLink::Edit(weld::Window* pParent, const Link<SvBaseLink&,void>& rEnd ::sfx2::SvBaseLink::UpdateResult ScTableLink::DataChanged( const OUString&, const css::uno::Any& ) { - sfx2::LinkManager* pLinkManager=pImpl->m_pDocSh->GetDocument().GetLinkManager(); + sfx2::LinkManager* pLinkManager=m_rDocSh.GetDocument().GetLinkManager(); if (pLinkManager!=nullptr) { OUString aFile, aFilter; @@ -119,13 +110,13 @@ void ScTableLink::Edit(weld::Window* pParent, const Link<SvBaseLink&,void>& rEnd void ScTableLink::Closed() { // delete link: Undo - ScDocument& rDoc = pImpl->m_pDocSh->GetDocument(); + ScDocument& rDoc = m_rDocSh.GetDocument(); bool bUndo (rDoc.IsUndoEnabled()); if (bAddUndo && bUndo) { - pImpl->m_pDocSh->GetUndoManager()->AddUndoAction( - std::make_unique<ScUndoRemoveLink>( *pImpl->m_pDocSh, aFileName ) ); + m_rDocSh.GetUndoManager()->AddUndoAction( + std::make_unique<ScUndoRemoveLink>( m_rDocSh, aFileName ) ); bAddUndo = false; // only once } @@ -137,7 +128,7 @@ void ScTableLink::Closed() bool ScTableLink::IsUsed() const { - return pImpl->m_pDocSh->GetDocument().HasLink( aFileName, aFilterName, aOptions ); + return m_rDocSh.GetDocument().HasLink( aFileName, aFilterName, aOptions ); } bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, @@ -148,14 +139,14 @@ bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, if (rNewFile.isEmpty() || rNewFilter.isEmpty()) return false; - OUString aNewUrl = ScGlobal::GetAbsDocName(rNewFile, pImpl->m_pDocSh); + OUString aNewUrl = ScGlobal::GetAbsDocName(rNewFile, &m_rDocSh); bool bNewUrlName = aFileName != aNewUrl; - std::shared_ptr<const SfxFilter> pFilter = pImpl->m_pDocSh->GetFactory().GetFilterContainer()->GetFilter4FilterName(rNewFilter); + std::shared_ptr<const SfxFilter> pFilter = m_rDocSh.GetFactory().GetFilterContainer()->GetFilter4FilterName(rNewFilter); if (!pFilter) return false; - ScDocument& rDoc = pImpl->m_pDocSh->GetDocument(); + ScDocument& rDoc = m_rDocSh.GetDocument(); rDoc.SetInLinkUpdate( true ); bool bUndo(rDoc.IsUndoEnabled()); @@ -194,7 +185,7 @@ bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, // copy tables - ScDocShellModificator aModificator( *pImpl->m_pDocSh ); + ScDocShellModificator aModificator( m_rDocSh ); bool bNotFound = false; ScDocument& rSrcDoc = pSrcShell->GetDocument(); @@ -362,12 +353,12 @@ bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, // Undo if (bAddUndo && bUndo) - pImpl->m_pDocSh->GetUndoManager()->AddUndoAction( - std::make_unique<ScUndoRefreshLink>( *pImpl->m_pDocSh, std::move(pUndoDoc) ) ); + m_rDocSh.GetUndoManager()->AddUndoAction( + std::make_unique<ScUndoRefreshLink>( m_rDocSh, std::move(pUndoDoc) ) ); // Paint (may be several tables) - pImpl->m_pDocSh->PostPaint( ScRange(0,0,0,rDoc.MaxCol(),rDoc.MaxRow(),MAXTAB), + m_rDocSh.PostPaint( ScRange(0,0,0,rDoc.MaxCol(),rDoc.MaxRow(),MAXTAB), PaintPartFlags::Grid | PaintPartFlags::Top | PaintPartFlags::Left | PaintPartFlags::Extras ); aModificator.SetDocumentModified(); @@ -389,7 +380,7 @@ bool ScTableLink::Refresh(const OUString& rNewFile, const OUString& rNewFilter, IMPL_LINK( ScTableLink, TableEndEditHdl, ::sfx2::SvBaseLink&, rLink, void ) { - pImpl->m_aEndEditLink.Call( rLink ); + m_aEndEditLink.Call( rLink ); bInEdit = false; } diff --git a/sc/source/ui/view/viewfun2.cxx b/sc/source/ui/view/viewfun2.cxx index ca2aa6afc870..00e9bf90274b 100644 --- a/sc/source/ui/view/viewfun2.cxx +++ b/sc/source/ui/view/viewfun2.cxx @@ -2823,7 +2823,7 @@ void ScViewFunc::ImportTables( ScDocShell* pSrcShell, if (!bWasThere) // Insert link only once per source document { - ScTableLink* pLink = new ScTableLink( pDocSh, aFileName, aFilterName, aOptions, nRefresh ); + ScTableLink* pLink = new ScTableLink( *pDocSh, aFileName, aFilterName, aOptions, nRefresh ); pLink->SetInCreate( true ); pLinkManager->InsertFileLink( *pLink, sfx2::SvBaseLinkObjectType::ClientFile, aFileName, &aFilterName ); pLink->Update();