sc/source/ui/docshell/docsh3.cxx | 35 ++++++----- sc/source/ui/inc/conflictsdlg.hxx | 12 +-- sc/source/ui/miscdlgs/conflictsdlg.cxx | 101 ++++++++++++++------------------- 3 files changed, 67 insertions(+), 81 deletions(-)
New commits: commit b3ff9cf60efa2fc6d29c5581bd895f71daf55611 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Fri May 2 12:56:05 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Fri May 2 14:02:49 2025 +0200 ScConflictsDlg: pass ScViewData by ref and other related changes Change-Id: I13f8c81e5715d9adea05e4d89443ec6ef8faf24a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/184899 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx index cff0de599843..23aa5dcf3a79 100644 --- a/sc/source/ui/docshell/docsh3.cxx +++ b/sc/source/ui/docshell/docsh3.cxx @@ -1216,25 +1216,28 @@ bool ScDocShell::MergeSharedDocument( ScDocShell* pSharedDocShell ) if ( aFinder.Find() ) { ScConflictsListHelper::TransformConflictsList( aConflictsList, nullptr, &aOwnInverseMergeMap ); - bool bLoop = true; - while ( bLoop ) + if (ScViewData* pViewData = GetViewData()) { - bLoop = false; - weld::Window* pWin = GetActiveDialogParent(); - ScConflictsDlg aDlg(pWin, GetViewData(), &rSharedDoc, aConflictsList); - if (aDlg.run() == RET_CANCEL) + bool bLoop = true; + while ( bLoop ) { - std::unique_ptr<weld::MessageDialog> xQueryBox(Application::CreateMessageDialog(pWin, - VclMessageType::Question, VclButtonsType::YesNo, - ScResId(STR_DOC_WILLNOTBESAVED))); - xQueryBox->set_default_response(RET_YES); - if (xQueryBox->run() == RET_YES) + bLoop = false; + weld::Window* pWin = GetActiveDialogParent(); + ScConflictsDlg aDlg(pWin, *pViewData, rSharedDoc, aConflictsList); + if (aDlg.run() == RET_CANCEL) { - return false; - } - else - { - bLoop = true; + std::unique_ptr<weld::MessageDialog> xQueryBox(Application::CreateMessageDialog(pWin, + VclMessageType::Question, VclButtonsType::YesNo, + ScResId(STR_DOC_WILLNOTBESAVED))); + xQueryBox->set_default_response(RET_YES); + if (xQueryBox->run() == RET_YES) + { + return false; + } + else + { + bLoop = true; + } } } } diff --git a/sc/source/ui/inc/conflictsdlg.hxx b/sc/source/ui/inc/conflictsdlg.hxx index f0ab643e0533..2c2c0c6d576b 100644 --- a/sc/source/ui/inc/conflictsdlg.hxx +++ b/sc/source/ui/inc/conflictsdlg.hxx @@ -107,11 +107,9 @@ class ScConflictsDlg : public weld::GenericDialogController private: OUString maStrUnknownUser; - ScViewData* const mpViewData; - ScDocument* mpOwnDoc; - ScChangeTrack* mpOwnTrack; - ScDocument* const mpSharedDoc; - ScChangeTrack* mpSharedTrack; + ScViewData& mrViewData; + ScDocument& mrOwnDoc; + ScDocument& mrSharedDoc; ScConflictsList& mrConflictsList; Idle maSelectionIdle; @@ -124,7 +122,7 @@ private: std::unique_ptr<SvxRedlinTable> m_xLbConflicts; OUString GetConflictString( const ScConflictsListEntry& rConflictEntry ); - void SetActionString(const ScChangeAction* pAction, ScDocument* pDoc, const weld::TreeIter& rEntry); + void SetActionString(ScChangeAction& rAction, ScDocument& rDoc, const weld::TreeIter& rEntry); void HandleListBoxSelection(); void SetConflictAction(const weld::TreeIter& rRootEntry, ScConflictAction eConflictAction); @@ -139,7 +137,7 @@ private: DECL_LINK( KeepAllOthersHandle, weld::Button&, void ); public: - ScConflictsDlg(weld::Window* pParent, ScViewData* pViewData, ScDocument* pSharedDoc, ScConflictsList& rConflictsList); + ScConflictsDlg(weld::Window* pParent, ScViewData& rViewData, ScDocument& rSharedDoc, ScConflictsList& rConflictsList); virtual ~ScConflictsDlg() override; void UpdateView(); diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index 524b887816da..f461995d1c9a 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -319,14 +319,12 @@ void ScConflictsResolver::HandleAction( ScChangeAction* pAction, bool bIsSharedA } -ScConflictsDlg::ScConflictsDlg(weld::Window* pParent, ScViewData* pViewData, ScDocument* pSharedDoc, ScConflictsList& rConflictsList) +ScConflictsDlg::ScConflictsDlg(weld::Window* pParent, ScViewData& rViewData, ScDocument& rSharedDoc, ScConflictsList& rConflictsList) : GenericDialogController(pParent, u"modules/scalc/ui/conflictsdialog.ui"_ustr, u"ConflictsDialog"_ustr) , maStrUnknownUser ( ScResId( STR_UNKNOWN_USER_CONFLICT ) ) - , mpViewData ( pViewData ) - , mpOwnDoc ( nullptr ) - , mpOwnTrack ( nullptr ) - , mpSharedDoc ( pSharedDoc ) - , mpSharedTrack ( nullptr ) + , mrViewData ( rViewData ) + , mrOwnDoc ( mrViewData.GetDocument() ) + , mrSharedDoc ( rSharedDoc ) , mrConflictsList ( rConflictsList ) , maSelectionIdle ( "ScConflictsDlg maSelectionIdle" ) , mbInSelectHdl ( false ) @@ -337,14 +335,6 @@ ScConflictsDlg::ScConflictsDlg(weld::Window* pParent, ScViewData* pViewData, ScD , m_xLbConflicts(new SvxRedlinTable(m_xBuilder->weld_tree_view(u"container"_ustr), nullptr, nullptr)) { - OSL_ENSURE( mpViewData, "ScConflictsDlg CTOR: mpViewData is null!" ); - mpOwnDoc = ( mpViewData ? &mpViewData->GetDocument() : nullptr ); - OSL_ENSURE( mpOwnDoc, "ScConflictsDlg CTOR: mpOwnDoc is null!" ); - mpOwnTrack = ( mpOwnDoc ? mpOwnDoc->GetChangeTrack() : nullptr ); - OSL_ENSURE( mpOwnTrack, "ScConflictsDlg CTOR: mpOwnTrack is null!" ); - OSL_ENSURE( mpSharedDoc, "ScConflictsDlg CTOR: mpSharedDoc is null!" ); - mpSharedTrack = ( mpSharedDoc ? mpSharedDoc->GetChangeTrack() : nullptr ); - OSL_ENSURE( mpSharedTrack, "ScConflictsDlg CTOR: mpSharedTrack is null!" ); weld::TreeView& rTreeView = m_xLbConflicts->GetWidget(); @@ -382,37 +372,33 @@ ScConflictsDlg::~ScConflictsDlg() OUString ScConflictsDlg::GetConflictString( const ScConflictsListEntry& rConflictEntry ) { OUString aString; - if ( mpOwnTrack ) + if ( ScChangeTrack* pOwnTrack = mrOwnDoc.GetChangeTrack() ) { - const ScChangeAction* pAction = mpOwnTrack->GetAction( rConflictEntry.maOwnActions[ 0 ] ); - if ( pAction && mpOwnDoc ) + const ScChangeAction* pAction = pOwnTrack->GetAction( rConflictEntry.maOwnActions[ 0 ] ); + if ( pAction ) { - SCTAB nTab = pAction->GetBigRange().MakeRange( *mpOwnDoc ).aStart.Tab(); - mpOwnDoc->GetName( nTab, aString ); + SCTAB nTab = pAction->GetBigRange().MakeRange( mrOwnDoc ).aStart.Tab(); + mrOwnDoc.GetName( nTab, aString ); } } return aString; } -void ScConflictsDlg::SetActionString(const ScChangeAction* pAction, ScDocument* pDoc, const weld::TreeIter& rEntry) +void ScConflictsDlg::SetActionString(ScChangeAction& rAction, ScDocument& rDoc, const weld::TreeIter& rEntry) { - OSL_ENSURE( pAction, "ScConflictsDlg::GetActionString(): pAction is null!" ); - OSL_ENSURE( pDoc, "ScConflictsDlg::GetActionString(): pDoc is null!" ); - if (!pAction || !pDoc) - return; weld::TreeView& rTreeView = m_xLbConflicts->GetWidget(); - OUString aDesc = pAction->GetDescription(*pDoc, true, false); + OUString aDesc = rAction.GetDescription(rDoc, true, false); rTreeView.set_text(rEntry, aDesc, 0); - OUString aUser = comphelper::string::strip(pAction->GetUser(), ' '); + OUString aUser = comphelper::string::strip(rAction.GetUser(), ' '); if ( aUser.isEmpty() ) { aUser = maStrUnknownUser; } rTreeView.set_text(rEntry, aUser, 1); - DateTime aDateTime = pAction->GetDateTime(); + DateTime aDateTime = rAction.GetDateTime(); OUString aString = ScGlobal::getLocaleData().getDate( aDateTime ) + " " + ScGlobal::getLocaleData().getTime( aDateTime, false ); rTreeView.set_text(rEntry, aString, 2); @@ -460,12 +446,7 @@ IMPL_LINK_NOARG(ScConflictsDlg, SelectHandle, weld::TreeView&, void) IMPL_LINK_NOARG(ScConflictsDlg, UpdateSelectionHdl, Timer *, void) { - if ( !mpViewData || !mpOwnDoc ) - { - return; - } - - ScTabView* pTabView = mpViewData->GetView(); + ScTabView* pTabView = mrViewData.GetView(); pTabView->DoneBlockMode(); std::vector<const ScChangeAction*> aActions; @@ -492,10 +473,10 @@ IMPL_LINK_NOARG(ScConflictsDlg, UpdateSelectionHdl, Timer *, void) for (size_t i = 0, nCount = aActions.size(); i < nCount; ++i) { const ScBigRange& rBigRange = aActions[i]->GetBigRange(); - if (rBigRange.IsValid(*mpOwnDoc)) + if (rBigRange.IsValid(mrOwnDoc)) { bool bSetCursor = i == nCount - 1; - pTabView->MarkRange(rBigRange.MakeRange( *mpOwnDoc ), bSetCursor, bContMark); + pTabView->MarkRange(rBigRange.MakeRange( mrOwnDoc ), bSetCursor, bContMark); bContMark = true; } } @@ -595,44 +576,48 @@ void ScConflictsDlg::UpdateView() for ( const auto& aSharedAction : rConflictEntry.maSharedActions ) { - ScChangeAction* pAction = mpSharedTrack ? mpSharedTrack->GetAction(aSharedAction) : nullptr; - if ( pAction ) + if ( ScChangeTrack* pSharedTrack = mrSharedDoc.GetChangeTrack() ) { - // only display shared top content entries - if ( pAction->GetType() == SC_CAT_CONTENT ) + if (ScChangeAction* pAction = pSharedTrack->GetAction(aSharedAction)) { - ScChangeActionContent* pNextContent = dynamic_cast<ScChangeActionContent&>(*pAction).GetNextContent(); - if ( pNextContent && rConflictEntry.HasSharedAction( pNextContent->GetActionNumber() ) ) + // only display shared top content entries + if ( pAction->GetType() == SC_CAT_CONTENT ) { - continue; + ScChangeActionContent* pNextContent = dynamic_cast<ScChangeActionContent&>(*pAction).GetNextContent(); + if ( pNextContent && rConflictEntry.HasSharedAction( pNextContent->GetActionNumber() ) ) + { + continue; + } } - } - rTreeView.insert(xRootEntry.get(), -1, nullptr, nullptr, nullptr, nullptr, false, xEntry.get()); - SetActionString(pAction, mpSharedDoc, *xEntry); + rTreeView.insert(xRootEntry.get(), -1, nullptr, nullptr, nullptr, nullptr, false, xEntry.get()); + SetActionString(*pAction, mrSharedDoc, *xEntry); + } } } for ( const auto& aOwnAction : rConflictEntry.maOwnActions ) { - ScChangeAction* pAction = mpOwnTrack ? mpOwnTrack->GetAction(aOwnAction) : nullptr; - if ( pAction ) + if ( ScChangeTrack* pOwnTrack = mrOwnDoc.GetChangeTrack() ) { - // only display own top content entries - if ( pAction->GetType() == SC_CAT_CONTENT ) + if (ScChangeAction* pAction = pOwnTrack->GetAction(aOwnAction)) { - ScChangeActionContent* pNextContent = dynamic_cast<ScChangeActionContent&>(*pAction).GetNextContent(); - if ( pNextContent && rConflictEntry.HasOwnAction( pNextContent->GetActionNumber() ) ) + // only display own top content entries + if ( pAction->GetType() == SC_CAT_CONTENT ) { - continue; + ScChangeActionContent* pNextContent = dynamic_cast<ScChangeActionContent&>(*pAction).GetNextContent(); + if ( pNextContent && rConflictEntry.HasOwnAction( pNextContent->GetActionNumber() ) ) + { + continue; + } } - } - std::unique_ptr<RedlinData> pUserData(new RedlinData()); - pUserData->pData = static_cast< void* >( pAction ); - OUString aId(weld::toId(pUserData.release())); - rTreeView.insert(xRootEntry.get(), -1, nullptr, &aId, nullptr, nullptr, false, xEntry.get()); - SetActionString(pAction, mpOwnDoc, *xEntry); + std::unique_ptr<RedlinData> pUserData(new RedlinData()); + pUserData->pData = static_cast< void* >( pAction ); + OUString aId(weld::toId(pUserData.release())); + rTreeView.insert(xRootEntry.get(), -1, nullptr, &aId, nullptr, nullptr, false, xEntry.get()); + SetActionString(*pAction, mrOwnDoc, *xEntry); + } } }