basctl/source/basicide/bastype2.cxx | 10 +- basctl/source/basicide/macrodlg.cxx | 34 ++++--- basctl/source/basicide/moduldlg.cxx | 12 +- basctl/source/basicide/objectbrowser.cxx | 22 ++-- basctl/source/inc/bastype2.hxx | 2 cui/source/customize/cfg.cxx | 4 cui/source/customize/cfgutil.cxx | 11 +- cui/source/dialogs/DiagramDialog.cxx | 4 cui/source/dialogs/MacroManagerDialog.cxx | 102 ++++++++++------------ cui/source/dialogs/scriptdlg.cxx | 12 +- cui/source/inc/MacroManagerDialog.hxx | 7 - cui/source/inc/cfgutil.hxx | 15 +-- cui/source/options/optaboutconfig.cxx | 17 +-- cui/source/tabpages/autocdlg.cxx | 6 - dbaccess/source/ui/app/AppDetailPageHelper.cxx | 7 - dbaccess/source/ui/browser/dsbrowserDnD.cxx | 4 dbaccess/source/ui/browser/unodatbr.cxx | 8 - dbaccess/source/ui/control/dbtreelistbox.cxx | 10 -- dbaccess/source/ui/dlg/adtabdlg.cxx | 20 +--- dbaccess/source/ui/dlg/indexdialog.cxx | 23 +--- extensions/source/propctrlr/selectlabeldialog.cxx | 10 +- fpicker/source/office/fileview.cxx | 17 +-- include/vcl/weld/ItemView.hxx | 2 sc/source/ui/cctrl/checklistmenu.cxx | 16 +-- sc/source/ui/inc/checklistmenu.hxx | 1 sc/source/ui/miscdlgs/conflictsdlg.cxx | 8 - sd/source/ui/animations/CustomAnimationList.cxx | 5 - sd/source/ui/dlg/navigatr.cxx | 3 sd/source/ui/dlg/sdtreelb.cxx | 12 +- sd/source/ui/inc/sdtreelb.hxx | 2 sd/source/ui/sidebar/LayoutMenu.cxx | 4 sd/source/ui/sidebar/MasterPagesSelector.cxx | 4 sfx2/source/control/charmapcontainer.cxx | 12 +- sfx2/source/dialog/StyleList.cxx | 4 svx/source/form/datanavi.cxx | 40 +++----- svx/source/form/filtnav.cxx | 4 svx/source/form/navigatortree.cxx | 13 -- svx/source/gallery2/galbrws1.cxx | 4 sw/source/ui/dialog/uiregionsw.cxx | 20 +--- sw/source/ui/fldui/changedb.cxx | 3 sw/source/ui/fldui/flddb.cxx | 7 - sw/source/ui/fldui/flddinf.cxx | 7 - sw/source/ui/misc/bookmark.cxx | 5 - sw/source/ui/misc/glossary.cxx | 42 +++------ sw/source/uibase/dbui/dbtree.cxx | 3 sw/source/uibase/inc/dbtree.hxx | 3 sw/source/uibase/misc/redlndlg.cxx | 23 ++-- sw/source/uibase/utlui/content.cxx | 55 ++++------- sw/source/uibase/utlui/glbltree.cxx | 9 - sw/source/uibase/utlui/navipi.cxx | 8 - vcl/inc/qt5/QtInstanceItemView.hxx | 2 vcl/inc/salvtables.hxx | 2 vcl/qt5/QtInstanceItemView.cxx | 15 +-- vcl/source/app/salvtables.cxx | 10 +- vcl/source/weld/TreeView.cxx | 3 vcl/source/weld/weldutils.cxx | 4 vcl/unx/gtk3/gtkinst.cxx | 18 ++- xmlsecurity/source/dialogs/certificateviewer.cxx | 10 -- 58 files changed, 331 insertions(+), 409 deletions(-)
New commits: commit 82edaf048b53168c74357a51dab3377ed5c779e0 Author: Michael Weghorn <[email protected]> AuthorDate: Sun Dec 21 01:36:30 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Mon Dec 22 09:18:39 2025 +0100 weld: Return std::unique_ptr in weld::ItemView::get_selected So far, the method had a weld:::TreeView* out param and a bool return value, which indicated whether or not a selected item actually exists (and was set in the passed TreeIter). Drop the method param and instead return a std::unique_ptr<weld::TreeIter>. If it doesn't own a pointer, there is no selection (i.e. the case previously indicated by a `false` return value). If it owns a weld::TreeIter, then that one points to the (first) selected item. This simplifies using this as it is no longer necessary to separately create weld::TreeIter to pass as an out param first, e.g. std::unique_ptr<weld::TreeIter> pEntry = rMyIconView.make_iterator()); if (rMyIconView.get_selected(xEntry.get())) { // do sth } now turns into if (std::unique_ptr<weld::TreeIter> xEntry = rMyIconView->get_selected()) { // do sth } Adjust all callers accordingly. It might be worth looking into doing something similar for other methods (e.g. weld::ItemView::get_iter_first) as well. Change-Id: I83146fc8d68a92d50eed9bd635bf91b1450ce495 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196039 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx index 40aeadca93dd..24450b59d505 100644 --- a/basctl/source/basicide/bastype2.cxx +++ b/basctl/source/basicide/bastype2.cxx @@ -479,8 +479,8 @@ IMPL_LINK(SbTreeListBox, ContextMenuHdl, const CommandEvent&, rCEvt, bool) assert((sCommand == u"alphabetically" || sCommand == u"properorder") && "Unknown context menu action!"); - bool bValidIter = m_xControl->get_selected(m_xScratchIter.get()); - EntryDescriptor aCurDesc(GetEntryDescriptor(bValidIter ? m_xScratchIter.get() : nullptr)); + std::unique_ptr<weld::TreeIter> pSelected = m_xControl->get_selected(); + EntryDescriptor aCurDesc(GetEntryDescriptor(pSelected.get())); if (sCommand == u"alphabetically") { @@ -604,13 +604,13 @@ void SbTreeListBox::onDocumentModeChanged( const ScriptDocument& /*_rDocument*/ void SbTreeListBox::UpdateEntries() { - bool bValidIter = m_xControl->get_selected(m_xScratchIter.get()); - EntryDescriptor aCurDesc(GetEntryDescriptor(bValidIter ? m_xScratchIter.get() : nullptr)); + std::unique_ptr<weld::TreeIter> pSelected = m_xControl->get_selected(); + EntryDescriptor aCurDesc(GetEntryDescriptor(pSelected.get())); // removing the invalid entries std::unique_ptr<weld::TreeIter> xLastValid(m_xControl->make_iterator(nullptr)); bool bLastValid = false; - bValidIter = m_xControl->get_iter_first(*m_xScratchIter); + bool bValidIter = m_xControl->get_iter_first(*m_xScratchIter); while (bValidIter) { if (IsValidEntry(*m_xScratchIter)) diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx index b5c2bd18b399..922c95d38d55 100644 --- a/basctl/source/basicide/macrodlg.cxx +++ b/basctl/source/basicide/macrodlg.cxx @@ -124,12 +124,14 @@ MacroChooser::~MacroChooser() void MacroChooser::StoreMacroDescription() { - if (!m_xBasicBox->get_selected(m_xBasicBoxIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = m_xBasicBox->get_selected(); + if (!pSelected) return; - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pSelected.get()); OUString aMethodName; - if (m_xMacroBox->get_selected(m_xMacroBoxIter.get())) - aMethodName = m_xMacroBox->get_text(*m_xMacroBoxIter); + pSelected = m_xMacroBox->get_selected(); + if (pSelected) + aMethodName = m_xMacroBox->get_text(*pSelected); else aMethodName = m_xMacroNameEdit->get_text(); if ( !aMethodName.isEmpty() ) @@ -245,9 +247,10 @@ SbMethod* MacroChooser::GetMacro() SbModule* pModule = m_xBasicBox->FindModule(m_xBasicBoxIter.get()); if (!pModule) return nullptr; - if (!m_xMacroBox->get_selected(m_xMacroBoxIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = m_xMacroBox->get_selected(); + if (!pSelected) return nullptr; - OUString aMacroName(m_xMacroBox->get_text(*m_xMacroBoxIter)); + OUString aMacroName(m_xMacroBox->get_text(*pSelected)); return pModule->FindMethod(aMacroName, SbxClassType::Method); } @@ -288,9 +291,9 @@ void MacroChooser::DeleteMacro() OUString aModName = pModule->GetName(); OSL_VERIFY( aDocument.updateModule( aLibName, aModName, aSource ) ); - bool bSelected = m_xMacroBox->get_selected(m_xMacroBoxIter.get()); - DBG_ASSERT(bSelected, "DeleteMacro: Entry ?!"); - m_xMacroBox->remove(*m_xMacroBoxIter); + std::unique_ptr<weld::TreeIter> pSelected = m_xMacroBox->get_selected(); + assert(pSelected && "DeleteMacro: Entry ?!"); + m_xMacroBox->remove(*pSelected); bForceStoreBasic = true; } @@ -375,7 +378,7 @@ void MacroChooser::CheckButtons() { const bool bCurEntry = m_xBasicBox->get_cursor(m_xBasicBoxIter.get()); EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(bCurEntry ? m_xBasicBoxIter.get() : nullptr); - const bool bMacroEntry = m_xMacroBox->get_selected(nullptr); + const bool bMacroEntry = bool(m_xMacroBox->get_selected()); SbMethod* pMethod = GetMacro(); // check, if corresponding libraries are readonly @@ -558,10 +561,10 @@ IMPL_LINK_NOARG(MacroChooser, EditModifyHdl, weld::Entry&, void) } if (!bFound) { - bValidIter = m_xMacroBox->get_selected(m_xMacroBoxIter.get()); + std::unique_ptr<weld::TreeIter> pSelected = m_xMacroBox->get_selected(); // if the entry exists ->Select ->Description... - if (bValidIter) - m_xMacroBox->unselect(*m_xMacroBoxIter); + if (pSelected) + m_xMacroBox->unselect(*pSelected); } } } @@ -643,8 +646,9 @@ IMPL_LINK(MacroChooser, ButtonHdl, weld::Button&, rButton, void) SfxMacroInfoItem aInfoItem( SID_BASICIDE_ARG_MACROINFO, pBasMgr, aLib, aMod, aSub, OUString() ); if (&rButton == m_xEditButton.get()) { - if (m_xMacroBox->get_selected(m_xMacroBoxIter.get())) - aInfoItem.SetMethod(m_xMacroBox->get_text(*m_xMacroBoxIter)); + std::unique_ptr<weld::TreeIter> pSelected = m_xMacroBox->get_selected(); + if (pSelected) + aInfoItem.SetMethod(m_xMacroBox->get_text(*pSelected)); StoreMacroDescription(); m_xDialog->hide(); // tdf#126828 dismiss dialog before opening new window diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx index ad07ca6cc5c8..5d22d66ceb3b 100644 --- a/basctl/source/basicide/moduldlg.cxx +++ b/basctl/source/basicide/moduldlg.cxx @@ -273,8 +273,7 @@ private: sal_Int8 nMode = DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xEntry(pSource->make_iterator()); - if (pSource->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = pSource->get_selected()) { sal_uInt16 nDepth = pSource->get_iter_depth(*xEntry); if (nDepth >= 2) @@ -325,9 +324,8 @@ private: sal_uInt16 nDepth = bEntry ? m_rTreeView.get_iter_depth(*xEntry) : 0; bool bValid = nDepth != 0; // don't drop in the same library - std::unique_ptr<weld::TreeIter> xSelected(pSource->make_iterator()); - bool bSelected = pSource->get_selected(xSelected.get()); - if (!bSelected) + std::unique_ptr<weld::TreeIter> xSelected = pSource->get_selected(); + if (!xSelected) bValid = false; else if (nDepth == 1) { @@ -416,8 +414,8 @@ private: const OUString& aDestLibName( aDestDesc.GetLibName() ); // get source shell, library name and module/dialog name - std::unique_ptr<weld::TreeIter> xSelected(m_rTreeView.make_iterator()); - if (!m_rTreeView.get_selected(xSelected.get())) + std::unique_ptr<weld::TreeIter> xSelected = m_rTreeView.get_selected(); + if (!xSelected) return; EntryDescriptor aSourceDesc = m_rTreeView.GetEntryDescriptor(xSelected.get()); const ScriptDocument& rSourceDoc( aSourceDesc.GetDocument() ); diff --git a/basctl/source/basicide/objectbrowser.cxx b/basctl/source/basicide/objectbrowser.cxx index e4fa03955970..20869cf97aae 100644 --- a/basctl/source/basicide/objectbrowser.cxx +++ b/basctl/source/basicide/objectbrowser.cxx @@ -1142,8 +1142,8 @@ IMPL_LINK(ObjectBrowser, OnLeftTreeSelect, weld::TreeView&, rTree, void) return; } - auto xSelectedIter = rTree.make_iterator(); - if (!rTree.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTree.get_selected(); + if (!xSelectedIter) { UpdateStatusBar(nullptr, nullptr); UpdateDetailsPane(nullptr, false); @@ -1175,14 +1175,13 @@ IMPL_LINK(ObjectBrowser, OnRightTreeSelect, weld::TreeView&, rTree, void) return; } - auto xLeftIter = m_xLeftTreeView->make_iterator(); + std::unique_ptr<weld::TreeIter> xLeftIter = m_xLeftTreeView->get_selected(); std::shared_ptr<const IdeSymbolInfo> pLeftSymbol - = m_xLeftTreeView->get_selected(xLeftIter.get()) - ? GetSymbolForIter(*xLeftIter, *m_xLeftTreeView, m_aLeftTreeSymbolIndex) - : nullptr; + = xLeftIter ? GetSymbolForIter(*xLeftIter, *m_xLeftTreeView, m_aLeftTreeSymbolIndex) + : nullptr; - auto xRightIter = rTree.make_iterator(); - if (!rTree.get_selected(xRightIter.get())) + std::unique_ptr<weld::TreeIter> xRightIter = rTree.get_selected(); + if (!xRightIter) { // Revert to showing container info if right-pane selection is cleared UpdateStatusBar(pLeftSymbol.get(), nullptr); @@ -1251,8 +1250,8 @@ IMPL_LINK(ObjectBrowser, OnRightTreeDoubleClick, weld::TreeView&, rTree, bool) return false; } - auto xSelectedIter = rTree.make_iterator(); - if (!rTree.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTree.get_selected(); + if (!xSelectedIter) { SAL_INFO("basctl", "OnRightTreeDoubleClick: No item selected."); return false; @@ -1312,8 +1311,7 @@ IMPL_LINK(ObjectBrowser, OnRightTreeDoubleClick, weld::TreeView&, rTree, bool) } // Find documentable parent in LEFT tree - auto xLeftTreeParentIter = m_xLeftTreeView->make_iterator(); - if (m_xLeftTreeView->get_selected(xLeftTreeParentIter.get())) + if (std::unique_ptr<weld::TreeIter> xLeftTreeParentIter = m_xLeftTreeView->get_selected()) { auto pParentSymbol = GetSymbolForIter(*xLeftTreeParentIter, *m_xLeftTreeView, m_aLeftTreeSymbolIndex); diff --git a/basctl/source/inc/bastype2.hxx b/basctl/source/inc/bastype2.hxx index 15317e8af216..6a51a7926b10 100644 --- a/basctl/source/inc/bastype2.hxx +++ b/basctl/source/inc/bastype2.hxx @@ -249,7 +249,7 @@ public: } std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pIter = nullptr) const { return m_xControl->make_iterator(pIter); } void copy_iterator(const weld::TreeIter& rSource, weld::TreeIter& rDest) const { m_xControl->copy_iterator(rSource, rDest); } - bool get_selected(weld::TreeIter* pIter) const { return m_xControl->get_selected(pIter); } + std::unique_ptr<weld::TreeIter> get_selected() const { return m_xControl->get_selected(); } void select(const weld::TreeIter& rIter) { m_xControl->select(rIter); } void unselect(const weld::TreeIter& rIter) { m_xControl->unselect(rIter); } void remove(const weld::TreeIter& rIter) { m_xControl->remove(rIter); } diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx index 13e62ca0861b..f91a2a9f4874 100644 --- a/cui/source/customize/cfg.cxx +++ b/cui/source/customize/cfg.cxx @@ -3219,8 +3219,8 @@ sal_Int8 SvxConfigPageFunctionDropTarget::ExecuteDrop(const ExecuteDropEvent& rE { if (!m_aDropHdl.IsSet()) return DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xSource(m_rFunctions.make_iterator()); - if (!m_rFunctions.get_selected(xSource.get())) + std::unique_ptr<weld::TreeIter> xSource = m_rFunctions.get_selected(); + if (!xSource) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(m_rTreeView.make_iterator()); int nTargetPos = -1; diff --git a/cui/source/customize/cfgutil.cxx b/cui/source/customize/cfgutil.cxx index 9f6964fbe8fd..95d5819d5381 100644 --- a/cui/source/customize/cfgutil.cxx +++ b/cui/source/customize/cfgutil.cxx @@ -834,8 +834,8 @@ void CuiConfigGroupListBox::GroupSelected() All functions/macros are displayed in the functionlistbox. */ { - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_selected(); + if (!xIter) return; SfxGroupInfo_Impl *pInfo = weld::fromId<SfxGroupInfo_Impl*>(m_xTreeView->get_id(*xIter)); @@ -1294,8 +1294,7 @@ SvxScriptSelectorDialog::GetScriptURL() const { OUString result; - std::unique_ptr<weld::TreeIter> xIter = m_xCommands->make_iterator(); - if (m_xCommands->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xCommands->get_selected()) { SfxGroupInfo_Impl *pData = weld::fromId<SfxGroupInfo_Impl*>(m_xCommands->get_id(*xIter)); if ( ( pData->nKind == SfxCfgKind::FUNCTION_SLOT ) @@ -1317,9 +1316,9 @@ SvxScriptSelectorDialog::SaveLastUsedMacro() OUString sMacroInfo; sMacroInfo = m_xCommands->get_selected_text(); weld::TreeView& xCategories = m_xCategories->get_widget(); - std::unique_ptr<weld::TreeIter> xIter = xCategories.make_iterator(); + std::unique_ptr<weld::TreeIter> xIter = xCategories.get_selected(); - if (!xCategories.get_selected(xIter.get())) + if (!xIter) return; do diff --git a/cui/source/dialogs/DiagramDialog.cxx b/cui/source/dialogs/DiagramDialog.cxx index a2499056210c..736e6e32b597 100644 --- a/cui/source/dialogs/DiagramDialog.cxx +++ b/cui/source/dialogs/DiagramDialog.cxx @@ -98,10 +98,10 @@ IMPL_LINK_NOARG(DiagramDialog, OnRemoveClick, weld::Button&, void) if (!m_rDiagram.isDiagram()) return; - std::unique_ptr<weld::TreeIter> pEntry(mpTreeDiagram->make_iterator()); + std::unique_ptr<weld::TreeIter> pEntry = mpTreeDiagram->get_selected(); const std::shared_ptr< svx::diagram::IDiagramHelper >& pDiagramHelper(m_rDiagram.getDiagramHelper()); - if (pDiagramHelper && mpTreeDiagram->get_selected(pEntry.get())) + if (pDiagramHelper && pEntry) { SdrModel& rDrawModel(m_rDiagram.getSdrModelFromSdrObject()); const bool bUndo(rDrawModel.IsUndoEnabled()); diff --git a/cui/source/dialogs/MacroManagerDialog.cxx b/cui/source/dialogs/MacroManagerDialog.cxx index 125152770c20..84810643f902 100644 --- a/cui/source/dialogs/MacroManagerDialog.cxx +++ b/cui/source/dialogs/MacroManagerDialog.cxx @@ -109,10 +109,9 @@ OUString ScriptsListBox::GetDescriptionText(const OUString& rId) OUString ScriptsListBox::GetSelectedScriptName() { - std::unique_ptr<weld::TreeIter> xScriptsEntryIter = m_xTreeView->make_iterator(); - if (!m_xTreeView->get_selected(xScriptsEntryIter.get())) - return OUString(); - return m_xTreeView->get_text(*xScriptsEntryIter); + if (std::unique_ptr<weld::TreeIter> xScriptsEntryIter = m_xTreeView->get_selected()) + return m_xTreeView->get_text(*xScriptsEntryIter); + return OUString(); } IMPL_LINK(ScriptsListBox, QueryTooltip, const weld::TreeIter&, rEntryIter, OUString) @@ -434,8 +433,8 @@ void ScriptContainersListBox::Insert( // cui/source/customize/cfgutil.cxx void ScriptContainersListBox::ScriptContainerSelected() { - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_selected(); + if (!xIter) return; m_pScriptsListBox->freeze(); @@ -543,8 +542,8 @@ OUString ScriptContainersListBox::GetContainerName(const weld::TreeIter& rIter, OUString ScriptContainersListBox::GetSelectedEntryContainerName(ScriptContainerType eScriptContainerType) { - std::unique_ptr<weld::TreeIter> xSelectedEntryIter = m_xTreeView->make_iterator(); - if (!m_xTreeView->get_selected(xSelectedEntryIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedEntryIter = m_xTreeView->get_selected(); + if (!xSelectedEntryIter) return OUString(); // should never happen return GetContainerName(*xSelectedEntryIter, eScriptContainerType); } @@ -702,8 +701,6 @@ void MacroManagerDialog::Notify(SfxBroadcaster&, const SfxHint& rHint) return sPath; }; - std::unique_ptr<weld::TreeIter> xIter = rScriptContainersTreeView.make_iterator(); - // for use to restore the script container tree scroll position int nOldScrollPos = rScriptContainersTreeView.vadjustment_get_value(); @@ -711,7 +708,7 @@ void MacroManagerDialog::Notify(SfxBroadcaster&, const SfxHint& rHint) // and the selected entry in the scripts list box OUString sScriptContainersListBoxSelectedEntryPath; OUString sScriptsListBoxSelectedEntry; - if (rScriptContainersTreeView.get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = rScriptContainersTreeView.get_selected()) { sScriptContainersListBoxSelectedEntryPath = get_path(xIter.get()); sScriptsListBoxSelectedEntry = m_xScriptsListBox->GetSelectedScriptName(); @@ -719,6 +716,7 @@ void MacroManagerDialog::Notify(SfxBroadcaster&, const SfxHint& rHint) // create a set containing paths for use to restore the script containers tree expand state std::unordered_set<OUString> aExpandedSet; + std::unique_ptr<weld::TreeIter> xIter = rScriptContainersTreeView.make_iterator(); if (!rScriptContainersTreeView.get_iter_first(*xIter)) // no entries? return; do @@ -821,8 +819,8 @@ IMPL_LINK(MacroManagerDialog, SelectHdl, weld::TreeView&, rTreeView, void) m_xScriptsListBoxLabel->set_label(m_aScriptsListBoxLabelBaseStr); m_xScriptsListBox->ClearAll(); - std::unique_ptr<weld::TreeIter> xSelectedEntryIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedEntryIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedEntryIter = rTreeView.get_selected(); + if (!xSelectedEntryIter) { UpdateUI(); return; @@ -941,9 +939,8 @@ void MacroManagerDialog::UpdateUI() = ScriptsListBox::GetDescriptionText(m_xScriptsListBox->get_selected_id()); weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (rTreeView.get_selected(xSelectedIter.get()) - && rTreeView.get_iter_depth(*xSelectedIter) == 2) // library + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (xSelectedIter && rTreeView.get_iter_depth(*xSelectedIter) == 2) // library { if (m_xScriptContainersListBox->GetSelectedEntryContainerName(ScriptContainerType::LANGUAGE) == "Basic") @@ -996,9 +993,8 @@ void MacroManagerDialog::CheckButtons() bool bSensitiveAssignButton = false; weld::TreeView& rScriptContainersTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xScriptContainersSelectedIter - = rScriptContainersTreeView.make_iterator(); - if (rScriptContainersTreeView.get_selected(xScriptContainersSelectedIter.get())) + if (std::unique_ptr<weld::TreeIter> xScriptContainersSelectedIter + = rScriptContainersTreeView.get_selected()) { if (auto nSelectedIterDepth = rScriptContainersTreeView.get_iter_depth(*xScriptContainersSelectedIter)) @@ -1154,9 +1150,8 @@ void MacroManagerDialog::CheckButtons() // scripts list box state dependent buttons weld::TreeView& rScriptsTreeView = m_xScriptsListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xScriptsSelectedIter = rScriptsTreeView.make_iterator(); - if (rScriptsTreeView.n_children() - && rScriptsTreeView.get_selected(xScriptsSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xScriptsSelectedIter = rScriptsTreeView.get_selected(); + if (rScriptsTreeView.n_children() && xScriptsSelectedIter) { bSensitiveAssignButton = true; @@ -1275,8 +1270,8 @@ void MacroManagerDialog::BasicScriptsCreateModule(const basctl::ScriptDocument& { // library name is the selected tree entry weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen OUString aLibName = rTreeView.get_text(*xSelectedIter); @@ -1320,8 +1315,8 @@ void MacroManagerDialog::BasicScriptsCreateDialog(const basctl::ScriptDocument& { // library name is the selected tree entry weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen OUString aLibName = rTreeView.get_text(*xSelectedIter); @@ -1383,8 +1378,8 @@ void MacroManagerDialog::BasicScriptsLibraryModuleDialogEdit( const basctl::ScriptDocument& rDocument) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen m_xDialog->hide(); @@ -1459,7 +1454,8 @@ basctl::ScriptDocument ScriptContainersListBox::GetScriptDocument(const weld::Tr std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->make_iterator(pIter); if (pIter == nullptr) { - if (!m_xTreeView->get_selected(xIter.get())) + xIter = m_xTreeView->get_selected(); + if (!xIter) return basctl::ScriptDocument::getApplicationScriptDocument(); } @@ -1533,8 +1529,8 @@ IMPL_LINK(MacroManagerDialog, ClickHdl, weld::Button&, rButton, void) { auto insert_entries = [this]() { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen m_xScriptContainersListBox->Fill(xSelectedIter.get()); rTreeView.expand_row(*xSelectedIter); @@ -1597,8 +1593,8 @@ IMPL_LINK(MacroManagerDialog, ClickHdl, weld::Button&, rButton, void) else if (&rButton == m_xMacroEditButton.get()) { weld::TreeView& rTreeView = m_xScriptsListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen css::uno::Reference<css::script::browse::XBrowseNode> node = getBrowseNode(rTreeView, *xSelectedIter); @@ -1623,32 +1619,32 @@ IMPL_LINK(MacroManagerDialog, ClickHdl, weld::Button&, rButton, void) else if (&rButton == m_xLibraryModuleDialogDeleteButton.get()) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen ScriptingFrameworkScriptsDeleteEntry(rTreeView, *xSelectedIter); } else if (&rButton == m_xMacroDeleteButton.get()) { weld::TreeView& rTreeView = m_xScriptsListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen ScriptingFrameworkScriptsDeleteEntry(rTreeView, *xSelectedIter); } else if (&rButton == m_xLibraryModuleDialogRenameButton.get()) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen ScriptingFrameworkScriptsRenameEntry(rTreeView, *xSelectedIter); } else if (&rButton == m_xMacroRenameButton.get()) { weld::TreeView& rTreeView = m_xScriptsListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen ScriptingFrameworkScriptsRenameEntry(rTreeView, *xSelectedIter); } @@ -1727,8 +1723,8 @@ void MacroManagerDialog::BasicScriptsLibraryModuleDialogRename( const basctl::ScriptDocument& rDocument) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen if (IsLibraryReadOnlyOrFailedPasswordQuery(rDocument, xSelectedIter.get())) @@ -1835,8 +1831,8 @@ void MacroManagerDialog::BasicScriptsLibraryModuleDialogDelete( const basctl::ScriptDocument& rDocument) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen if (IsLibraryReadOnlyOrFailedPasswordQuery(rDocument, xSelectedIter.get())) @@ -1945,8 +1941,8 @@ void MacroManagerDialog::BasicScriptsLibraryModuleDialogDelete( void MacroManagerDialog::BasicScriptsLibraryPassword(const basctl::ScriptDocument& rDocument) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen OUString aLibName = rTreeView.get_text(*xSelectedIter); @@ -2220,8 +2216,8 @@ void MacroManagerDialog::ScriptingFrameworkScriptsDeleteEntry(weld::TreeView& rT void MacroManagerDialog::ScriptingFrameworkScriptsCreateEntry(InputDialogMode eInputDialogMode) { weld::TreeView& rTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.make_iterator(); - if (!rTreeView.get_selected(xSelectedIter.get())) + std::unique_ptr<weld::TreeIter> xSelectedIter = rTreeView.get_selected(); + if (!xSelectedIter) return; // should never happen css::uno::Reference<css::script::browse::XBrowseNode> aChildNode; @@ -2394,8 +2390,7 @@ void MacroManagerDialog::ScriptingFrameworkScriptsCreateEntry(InputDialogMode eI OUString MacroManagerDialog::GetScriptURL() const { OUString result; - std::unique_ptr<weld::TreeIter> xIter = m_xScriptsListBox->make_iterator(); - if (m_xScriptsListBox->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xScriptsListBox->get_selected()) { ScriptInfo* pScriptInfo = weld::fromId<ScriptInfo*>(m_xScriptsListBox->get_id(*xIter)); if (pScriptInfo) @@ -2415,9 +2410,8 @@ void MacroManagerDialog::SaveLastUsedMacro() OUString sMacroInfo = m_xScriptsListBox->GetSelectedScriptName(); weld::TreeView& rScriptContainersTreeView = m_xScriptContainersListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xIter = rScriptContainersTreeView.make_iterator(); - - if (!rScriptContainersTreeView.get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = rScriptContainersTreeView.get_selected(); + if (!xIter) return; do diff --git a/cui/source/dialogs/scriptdlg.cxx b/cui/source/dialogs/scriptdlg.cxx index 5acb2621515a..ff244343da9b 100644 --- a/cui/source/dialogs/scriptdlg.cxx +++ b/cui/source/dialogs/scriptdlg.cxx @@ -521,8 +521,8 @@ void SvxScriptOrgDialog::CheckButtons( Reference< browse::XBrowseNode > const & IMPL_LINK_NOARG(SvxScriptOrgDialog, ScriptSelectHdl, weld::TreeView&, void) { - std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->make_iterator(); - if (!m_xScriptsBox->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->get_selected(); + if (!xIter) return; SFEntry* userData = weld::fromId<SFEntry*>(m_xScriptsBox->get_id(*xIter)); @@ -550,8 +550,8 @@ IMPL_LINK(SvxScriptOrgDialog, ButtonHdl, weld::Button&, rButton, void) return; - std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->make_iterator(); - if (!m_xScriptsBox->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->get_selected(); + if (!xIter) return; SFEntry* userData = weld::fromId<SFEntry*>(m_xScriptsBox->get_id(*xIter)); if (!userData) @@ -1014,8 +1014,8 @@ Selection_hash SvxScriptOrgDialog::m_lastSelection; void SvxScriptOrgDialog::StoreCurrentSelection() { - std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->make_iterator(); - if (!m_xScriptsBox->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xScriptsBox->get_selected(); + if (!xIter) return; OUString aDescription; bool bEntry; diff --git a/cui/source/inc/MacroManagerDialog.hxx b/cui/source/inc/MacroManagerDialog.hxx index 4d671e04f27b..a95c10ed0312 100644 --- a/cui/source/inc/MacroManagerDialog.hxx +++ b/cui/source/inc/MacroManagerDialog.hxx @@ -98,12 +98,13 @@ public: return m_xTreeView->make_iterator(pOrig); } OUString get_id(const weld::TreeIter& rIter) const { return m_xTreeView->get_id(rIter); } - bool get_selected(weld::TreeIter* pIter) const { return m_xTreeView->get_selected(pIter); } + std::unique_ptr<weld::TreeIter> get_selected() const { return m_xTreeView->get_selected(); } OUString get_selected_id() const { - if (!m_xTreeView->get_selected(m_xScratchIter.get())) + std::unique_ptr<weld::TreeIter> pIter = m_xTreeView->get_selected(); + if (!pIter) return OUString(); - return m_xTreeView->get_id(*m_xScratchIter); + return m_xTreeView->get_id(*pIter); } void select(int pos) { m_xTreeView->select(pos); } weld::TreeView& get_widget() { return *m_xTreeView; } diff --git a/cui/source/inc/cfgutil.hxx b/cui/source/inc/cfgutil.hxx index febb5910d01c..b92d82449589 100644 --- a/cui/source/inc/cfgutil.hxx +++ b/cui/source/inc/cfgutil.hxx @@ -153,18 +153,19 @@ public: bool iter_has_child(const weld::TreeIter& rIter) const { return m_xTreeView->iter_has_child(rIter); } OUString get_text(int nPos) const { return m_xTreeView->get_text(nPos); } OUString get_id(const weld::TreeIter& rIter) const { return m_xTreeView->get_id(rIter); } - bool get_selected(weld::TreeIter* pIter) const { return m_xTreeView->get_selected(pIter); } + std::unique_ptr<weld::TreeIter> get_selected() const { return m_xTreeView->get_selected(); } OUString get_selected_text() const { - if (!m_xTreeView->get_selected(m_xScratchIter.get())) - return OUString(); - return m_xTreeView->get_text(*m_xScratchIter); + if (std::unique_ptr<weld::TreeIter> pIter = m_xTreeView->get_selected()) + return m_xTreeView->get_text(*pIter); + return OUString(); + } OUString get_selected_id() const { - if (!m_xTreeView->get_selected(m_xScratchIter.get())) - return OUString(); - return m_xTreeView->get_id(*m_xScratchIter); + if (std::unique_ptr<weld::TreeIter> pIter = m_xTreeView->get_selected()) + return m_xTreeView->get_id(*pIter); + return OUString(); } void select(int pos) { m_xTreeView->select(pos); } void set_size_request(int nWidth, int nHeight) { m_xTreeView->set_size_request(nWidth, nHeight); } diff --git a/cui/source/options/optaboutconfig.cxx b/cui/source/options/optaboutconfig.cxx index 99bfb45cc38b..c14757a05c2d 100644 --- a/cui/source/options/optaboutconfig.cxx +++ b/cui/source/options/optaboutconfig.cxx @@ -773,17 +773,18 @@ IMPL_LINK_NOARG(CuiAboutConfigTabPage, DoubleClickHdl_Impl, weld::TreeView&, boo IMPL_LINK_NOARG(CuiAboutConfigTabPage, StandardHdl_Impl, weld::Button&, void) { - if (!m_xPrefBox->get_selected(m_xScratchIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = m_xPrefBox->get_selected(); + if (!pSelected) return; - UserData* pUserData = weld::fromId<UserData*>(m_xPrefBox->get_id(*m_xScratchIter)); + UserData* pUserData = weld::fromId<UserData*>(m_xPrefBox->get_id(*pSelected)); if (!pUserData || !pUserData->bIsPropertyPath || pUserData->bIsReadOnly) return; //if selection is a node - OUString sPropertyName = m_xPrefBox->get_text(*m_xScratchIter, 1); - OUString sPropertyType = m_xPrefBox->get_text(*m_xScratchIter, 2); - OUString sPropertyValue = m_xPrefBox->get_text(*m_xScratchIter, 3); + OUString sPropertyName = m_xPrefBox->get_text(*pSelected, 1); + OUString sPropertyType = m_xPrefBox->get_text(*pSelected, 2); + OUString sPropertyValue = m_xPrefBox->get_text(*pSelected, 3); auto pProperty = std::make_shared<Prop_Impl>(pUserData->sPropertyPath, sPropertyName, Any(sPropertyValue)); @@ -966,9 +967,9 @@ IMPL_LINK_NOARG(CuiAboutConfigTabPage, StandardHdl_Impl, weld::Button&, void) pUserData->aPropertyValue = pProperty->Value; //update listbox value. - m_xPrefBox->set_text(*m_xScratchIter, sPropertyType, 2); - m_xPrefBox->set_text(*m_xScratchIter, sDialogValue, 3); - m_xPrefBox->set_text_emphasis(*m_xScratchIter, true, -1); + m_xPrefBox->set_text(*pSelected, sPropertyType, 2); + m_xPrefBox->set_text(*pSelected, sDialogValue, 3); + m_xPrefBox->set_text_emphasis(*pSelected, true, -1); //update m_prefBoxEntries auto it = std::find_if( m_prefBoxEntries.begin(), m_prefBoxEntries.end(), diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx index c61ded70ebdb..e20c9720ef22 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -1128,8 +1128,10 @@ bool OfaAutocorrReplacePage::NewDelHdl(const weld::Widget* pBtn) IMPL_LINK(OfaAutocorrReplacePage, ModifyHdl, weld::Entry&, rEdt, void) { - std::unique_ptr<weld::TreeIter> xFirstSel(m_xReplaceTLB->make_iterator()); - bool bFirstSelIterSet = m_xReplaceTLB->get_selected(xFirstSel.get()); + std::unique_ptr<weld::TreeIter> xFirstSel = m_xReplaceTLB->get_selected(); + bool bFirstSelIterSet = bool(xFirstSel); + if (!xFirstSel) + xFirstSel = m_xReplaceTLB->make_iterator(); bool bShort = &rEdt == m_xShortED.get(); const OUString rEntry = rEdt.get_text(); const OUString rRepString = m_xReplaceED->get_text(); diff --git a/dbaccess/source/ui/app/AppDetailPageHelper.cxx b/dbaccess/source/ui/app/AppDetailPageHelper.cxx index 8e6165b53989..5c5d43e8df0e 100644 --- a/dbaccess/source/ui/app/AppDetailPageHelper.cxx +++ b/dbaccess/source/ui/app/AppDetailPageHelper.cxx @@ -406,10 +406,7 @@ OUString OAppDetailPageHelper::getQualifiedName(const weld::TreeIter* _pEntry) c std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator(_pEntry)); if (!_pEntry) - { - if (!rTreeView.get_selected(xEntry.get())) - xEntry.reset(); - } + xEntry = rTreeView.get_selected(); if (!xEntry) return sComposedName; @@ -918,7 +915,7 @@ void OAppDetailPageHelper::switchPreview(PreviewMode _eMode,bool _bForce) if ( isPreviewEnabled() ) { DBTreeViewBase* pCurrent = getCurrentView(); - if (pCurrent && pCurrent->GetWidget().get_selected(nullptr)) + if (pCurrent && pCurrent->GetWidget().get_selected()) { getBorderWin().getView()->getAppController().onSelectionChanged(); } diff --git a/dbaccess/source/ui/browser/dsbrowserDnD.cxx b/dbaccess/source/ui/browser/dsbrowserDnD.cxx index dfc04e2d991c..67aa043f2e19 100644 --- a/dbaccess/source/ui/browser/dsbrowserDnD.cxx +++ b/dbaccess/source/ui/browser/dsbrowserDnD.cxx @@ -179,8 +179,8 @@ namespace dbaui IMPL_LINK_NOARG(SbaTableQueryBrowser, OnCopyEntry, LinkParamNone*, void) { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xSelected = rTreeView.make_iterator(); - if (rTreeView.get_selected(xSelected.get()) && isEntryCopyAllowed(*xSelected)) + std::unique_ptr<weld::TreeIter> xSelected = rTreeView.get_selected(); + if (xSelected && isEntryCopyAllowed(*xSelected)) copyEntry(*xSelected); } diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index 846b2bec5d1a..b7f8e42a4c8b 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -2469,9 +2469,7 @@ bool SbaTableQueryBrowser::implSelect(const OUString& _rDataSourceName, const OU IMPL_LINK_NOARG(SbaTableQueryBrowser, OnSelectionChange, LinkParamNone*, void) { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xSelection(rTreeView.make_iterator()); - if (!rTreeView.get_selected(xSelection.get())) - xSelection.reset(); + std::unique_ptr<weld::TreeIter> xSelection = rTreeView.get_selected(); implSelect(xSelection.get()); } @@ -3512,8 +3510,8 @@ Any SbaTableQueryBrowser::getCurrentSelection(weld::TreeView& rControl) const if (&rTreeView != &rControl) return Any(); - std::unique_ptr<weld::TreeIter> xSelected(rTreeView.make_iterator()); - if (!rTreeView.get_selected(xSelected.get())) + std::unique_ptr<weld::TreeIter> xSelected = rTreeView.get_selected(); + if (!xSelected) return Any(); NamedDatabaseObject aSelectedObject; diff --git a/dbaccess/source/ui/control/dbtreelistbox.cxx b/dbaccess/source/ui/control/dbtreelistbox.cxx index c9c466ed3730..feb862ec8748 100644 --- a/dbaccess/source/ui/control/dbtreelistbox.cxx +++ b/dbaccess/source/ui/control/dbtreelistbox.cxx @@ -142,17 +142,17 @@ IMPL_LINK(TreeListBox, KeyInputHdl, const KeyEvent&, rKEvt, bool) switch (eFunc) { case KeyFuncType::COPY: - bHandled = m_aCopyHandler.IsSet() && !m_xTreeView->get_selected(nullptr); + bHandled = m_aCopyHandler.IsSet() && !m_xTreeView->get_selected(); if (bHandled) m_aCopyHandler.Call(nullptr); break; case KeyFuncType::PASTE: - bHandled = m_aPasteHandler.IsSet() && !m_xTreeView->get_selected(nullptr); + bHandled = m_aPasteHandler.IsSet() && !m_xTreeView->get_selected(); if (bHandled) m_aPasteHandler.Call(nullptr); break; case KeyFuncType::DELETE: - bHandled = m_aDeleteHandler.IsSet() && !m_xTreeView->get_selected(nullptr); + bHandled = m_aDeleteHandler.IsSet() && !m_xTreeView->get_selected(); if (bHandled) m_aDeleteHandler.Call(nullptr); break; @@ -219,9 +219,7 @@ IMPL_LINK(TreeListBox, DragBeginHdl, bool&, rUnsetDragIcon, bool) if (m_pActionListener) { - m_xDragedEntry = m_xTreeView->make_iterator(); - if (!m_xTreeView->get_selected(m_xDragedEntry.get())) - m_xDragedEntry.reset(); + m_xDragedEntry = m_xTreeView->get_selected(); if (m_xDragedEntry && m_pActionListener->requestDrag(*m_xDragedEntry)) { // if the (asynchronous) drag started, stop the selection timer diff --git a/dbaccess/source/ui/dlg/adtabdlg.cxx b/dbaccess/source/ui/dlg/adtabdlg.cxx index 9871db56c898..810a0965010f 100644 --- a/dbaccess/source/ui/dlg/adtabdlg.cxx +++ b/dbaccess/source/ui/dlg/adtabdlg.cxx @@ -89,9 +89,8 @@ TableListFacade::~TableListFacade() OUString TableListFacade::getSelectedName( OUString& _out_rAliasName ) const { weld::TreeView& rTableList = m_rTableList.GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTableList.make_iterator()); - - if (!rTableList.get_selected(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = rTableList.get_selected(); + if (!xEntry) return OUString(); OUString aCatalog, aSchema, aTableName; @@ -217,9 +216,8 @@ void TableListFacade::updateTableObjectList( bool _bAllowViews ) bool TableListFacade::isLeafSelected() const { weld::TreeView& rTableList = m_rTableList.GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTableList.make_iterator()); - const bool bEntry = rTableList.get_selected(xEntry.get()); - return bEntry && !rTableList.iter_has_child(*xEntry); + std::unique_ptr<weld::TreeIter> xEntry = rTableList.get_selected(); + return xEntry && !rTableList.iter_has_child(*xEntry); } namespace { @@ -307,18 +305,16 @@ void QueryListFacade::updateTableObjectList( bool /*_bAllowViews*/ ) OUString QueryListFacade::getSelectedName( OUString& _out_rAliasName ) const { OUString sSelected; - std::unique_ptr<weld::TreeIter> xEntry(m_rQueryList.make_iterator()); - const bool bEntry = m_rQueryList.get_selected(xEntry.get()); - if (bEntry) + std::unique_ptr<weld::TreeIter> xEntry = m_rQueryList.get_selected(); + if (xEntry) sSelected = _out_rAliasName = m_rQueryList.get_text(*xEntry, 0); return sSelected; } bool QueryListFacade::isLeafSelected() const { - std::unique_ptr<weld::TreeIter> xEntry(m_rQueryList.make_iterator()); - const bool bEntry = m_rQueryList.get_selected(xEntry.get()); - return bEntry && !m_rQueryList.iter_has_child(*xEntry); + std::unique_ptr<weld::TreeIter> xEntry = m_rQueryList.get_selected(); + return xEntry && !m_rQueryList.iter_has_child(*xEntry); } diff --git a/dbaccess/source/ui/dlg/indexdialog.cxx b/dbaccess/source/ui/dlg/indexdialog.cxx index 85f751b90d24..389c83a4abe6 100644 --- a/dbaccess/source/ui/dlg/indexdialog.cxx +++ b/dbaccess/source/ui/dlg/indexdialog.cxx @@ -276,9 +276,9 @@ namespace dbaui void DbaIndexDialog::OnDropIndex(bool _bConfirm) { - std::unique_ptr<weld::TreeIter> xSelected(m_xIndexList->make_iterator()); + std::unique_ptr<weld::TreeIter> xSelected = m_xIndexList->get_selected(); // the selected index - if (!m_xIndexList->get_selected(xSelected.get())) + if (!xSelected) return; // let the user confirm the drop @@ -352,8 +352,8 @@ namespace dbaui void DbaIndexDialog::OnRenameIndex() { // the selected iterator - std::unique_ptr<weld::TreeIter> xSelected(m_xIndexList->make_iterator()); - if (!m_xIndexList->get_selected(xSelected.get())) + std::unique_ptr<weld::TreeIter> xSelected = m_xIndexList->get_selected(); + if (!xSelected) return; // save the changes made 'til here @@ -376,10 +376,7 @@ namespace dbaui void DbaIndexDialog::OnResetIndex() { // the selected index - std::unique_ptr<weld::TreeIter> xSelected(m_xIndexList->make_iterator()); - // the selected index - if (!m_xIndexList->get_selected(xSelected.get())) - xSelected.reset(); + std::unique_ptr<weld::TreeIter> xSelected = m_xIndexList->get_selected(); OSL_ENSURE(xSelected, "DbaIndexDialog::OnResetIndex: invalid call!"); if (!xSelected) return; @@ -438,11 +435,7 @@ namespace dbaui } // the currently selected entry - std::unique_ptr<weld::TreeIter> xSelected(m_xIndexList->make_iterator()); - // the selected index - if (!m_xIndexList->get_selected(xSelected.get())) - xSelected.reset(); - + std::unique_ptr<weld::TreeIter> xSelected = m_xIndexList->get_selected(); OSL_ENSURE(xSelected && m_xPreviousSelection && xSelected->equal(*m_xPreviousSelection), "DbaIndexDialog::OnCloseDialog: inconsistence!"); sal_Int32 nResponse = RET_NO; @@ -664,9 +657,7 @@ namespace dbaui if (m_bEditingActive) m_xIndexList->end_editing(); - std::unique_ptr<weld::TreeIter> xSelected(m_xIndexList->make_iterator()); - if (!m_xIndexList->get_selected(xSelected.get())) - xSelected.reset(); + std::unique_ptr<weld::TreeIter> xSelected = m_xIndexList->get_selected(); // commit the old data if (m_xPreviousSelection && (!xSelected || !m_xPreviousSelection->equal(*xSelected))) diff --git a/extensions/source/propctrlr/selectlabeldialog.cxx b/extensions/source/propctrlr/selectlabeldialog.cxx index 4fe9116d7096..b8530ad1ef24 100644 --- a/extensions/source/propctrlr/selectlabeldialog.cxx +++ b/extensions/source/propctrlr/selectlabeldialog.cxx @@ -228,9 +228,8 @@ namespace pcr IMPL_LINK(OSelectLabelDialog, OnEntrySelected, weld::TreeView&, rLB, void) { DBG_ASSERT(&rLB == m_xControlTree.get(), "OSelectLabelDialog::OnEntrySelected : where did this come from ?"); - std::unique_ptr<weld::TreeIter> xIter = m_xControlTree->make_iterator(); - bool bSelected = m_xControlTree->get_selected(xIter.get()); - OUString sData = bSelected ? m_xControlTree->get_id(*xIter) : OUString(); + std::unique_ptr<weld::TreeIter> xIter = m_xControlTree->get_selected(); + OUString sData = xIter ? m_xControlTree->get_id(*xIter) : OUString(); if (!sData.isEmpty()) m_xSelectedControl.set(*weld::fromId<Reference<XPropertySet>*>(sData)); m_xNoAssignment->set_active(sData.isEmpty()); @@ -242,7 +241,10 @@ namespace pcr if (m_xNoAssignment->get_active()) { - m_bLastSelected = m_xControlTree->get_selected(m_xLastSelected.get()); + std::unique_ptr<weld::TreeIter> pSelected = m_xControlTree->get_selected(); + m_bLastSelected = bool(pSelected); + if (pSelected) + m_xLastSelected = std::move(pSelected); } else { diff --git a/fpicker/source/office/fileview.cxx b/fpicker/source/office/fileview.cxx index ef54a01c0a96..f3098dc2376d 100644 --- a/fpicker/source/office/fileview.cxx +++ b/fpicker/source/office/fileview.cxx @@ -162,7 +162,7 @@ public: void set_cursor(const weld::TreeIter& rIter) { mxTreeView->set_cursor(rIter); } bool get_cursor(weld::TreeIter* pIter) const { return mxTreeView->get_cursor(pIter); } bool get_iter_first(weld::TreeIter& rIter) const { return mxTreeView->get_iter_first(rIter); } - bool get_selected(weld::TreeIter* pIter) const { return mxTreeView->get_selected(pIter); } + std::unique_ptr<weld::TreeIter> get_selected() const { return mxTreeView->get_selected(); } OUString get_selected_text() const { @@ -586,8 +586,7 @@ void ViewTabListBox_Impl::ExecuteContextMenuAction(std::u16string_view rSelected DeleteEntries(); else if (rSelectedPopupEntry == u"rename") { - std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->make_iterator(); - if (mxTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->get_selected()) { mbEditing = true; @@ -849,14 +848,12 @@ OUString SvtFileView::GetCurrentURL() const OUString aURL; if (mpImpl->mxView->get_visible()) { - std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxView->make_iterator(); - if (mpImpl->mxView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxView->get_selected()) pEntry = weld::fromId<SvtContentEntry*>(mpImpl->mxView->get_id(*xEntry)); } else { - std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxIconView->make_iterator(); - if (mpImpl->mxIconView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxIconView->get_selected()) pEntry = weld::fromId<SvtContentEntry*>(mpImpl->mxIconView->get_id(*xEntry)); } if (pEntry) @@ -1008,15 +1005,13 @@ SvtContentEntry* SvtFileView::FirstSelected() const if (mpImpl->mxView->get_visible()) { SvtContentEntry* pRet = nullptr; - std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxView->make_iterator(); - if (mpImpl->mxView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxView->get_selected()) pRet = weld::fromId<SvtContentEntry*>(mpImpl->mxView->get_id(*xEntry)); return pRet; } SvtContentEntry* pRet = nullptr; - std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxIconView->make_iterator(); - if (mpImpl->mxIconView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mpImpl->mxIconView->get_selected()) pRet = weld::fromId<SvtContentEntry*>(mpImpl->mxIconView->get_id(*xEntry)); return pRet; } diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx index 6edc2216d0c6..b029b47ea223 100644 --- a/include/vcl/weld/ItemView.hxx +++ b/include/vcl/weld/ItemView.hxx @@ -51,7 +51,7 @@ public: virtual OUString get_selected_id() const = 0; virtual OUString get_selected_text() const = 0; - virtual bool get_selected(TreeIter* pIter) const = 0; + virtual std::unique_ptr<weld::TreeIter> get_selected() const = 0; virtual bool get_cursor(TreeIter* pIter) const = 0; void set_cursor(const TreeIter& rIter); diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx index a3e763f7d025..31b7db762457 100644 --- a/sc/source/ui/cctrl/checklistmenu.cxx +++ b/sc/source/ui/cctrl/checklistmenu.cxx @@ -104,7 +104,8 @@ IMPL_LINK(ScCheckListMenuControl, MenuKeyInputHdl, const KeyEvent&, rKEvt, bool) IMPL_LINK_NOARG(ScCheckListMenuControl, SelectHdl, weld::TreeView&, void) { sal_uInt32 nSelectedMenu = MENU_NOT_SELECTED; - if (!mxMenu->get_selected(mxScratchIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = mxMenu->get_selected(); + if (!pSelected) { // reselect current item if its submenu is up and the launching item // became unselected by mouse moving out of the top level menu @@ -117,7 +118,7 @@ IMPL_LINK_NOARG(ScCheckListMenuControl, SelectHdl, weld::TreeView&, void) } } else - nSelectedMenu = mxMenu->get_iter_index_in_parent(*mxScratchIter); + nSelectedMenu = mxMenu->get_iter_index_in_parent(*pSelected); setSelectedMenuItem(nSelectedMenu); } @@ -318,9 +319,10 @@ void ScCheckListMenuControl::queueCloseSubMenu() tools::Rectangle ScCheckListMenuControl::GetSubMenuParentRect() { - if (!mxMenu->get_selected(mxScratchIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = mxMenu->get_selected(); + if (!pSelected) return tools::Rectangle(); - return mxMenu->get_row_area(*mxScratchIter); + return mxMenu->get_row_area(*pSelected); } void ScCheckListMenuControl::launchSubMenu() @@ -329,7 +331,8 @@ void ScCheckListMenuControl::launchSubMenu() if (!pSubMenu) return; - if (!mxMenu->get_selected(mxScratchIter.get())) + std::unique_ptr<weld::TreeIter> pSelected = mxMenu->get_selected(); + if (!pSelected) return; meRestoreFocus = DetermineRestoreFocus(); @@ -337,7 +340,7 @@ void ScCheckListMenuControl::launchSubMenu() tools::Rectangle aRect = GetSubMenuParentRect(); pSubMenu->StartPopupMode(mxMenu.get(), aRect); - mxMenu->select(*mxScratchIter); + mxMenu->select(*pSelected); pSubMenu->GrabFocus(); } @@ -548,7 +551,6 @@ ScCheckListMenuControl::ScCheckListMenuControl(weld::Widget* pParent, ScViewData , mxPopover(mxBuilder->weld_popover(u"FilterDropDown"_ustr)) , mxContainer(mxBuilder->weld_container(u"container"_ustr)) , mxMenu(mxBuilder->weld_tree_view(u"menu"_ustr)) - , mxScratchIter(mxMenu->make_iterator()) , mxNonMenu(mxBuilder->weld_widget(u"nonmenu"_ustr)) , mxFieldsComboLabel(mxBuilder->weld_label(u"select_field_label"_ustr)) , mxFieldsCombo(mxBuilder->weld_combo_box(u"multi_field_combo"_ustr)) diff --git a/sc/source/ui/inc/checklistmenu.hxx b/sc/source/ui/inc/checklistmenu.hxx index 8fb90e2d11ee..121bbc9983d7 100644 --- a/sc/source/ui/inc/checklistmenu.hxx +++ b/sc/source/ui/inc/checklistmenu.hxx @@ -289,7 +289,6 @@ private: std::unique_ptr<weld::Popover> mxPopover; std::unique_ptr<weld::Container> mxContainer; std::unique_ptr<weld::TreeView> mxMenu; - std::unique_ptr<weld::TreeIter> mxScratchIter; std::unique_ptr<weld::Widget> mxNonMenu; std::unique_ptr<weld::Label> mxFieldsComboLabel; std::unique_ptr<weld::ComboBox> mxFieldsCombo; diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index aa451f9f2744..a7cfc15d2239 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -410,8 +410,8 @@ void ScConflictsDlg::HandleListBoxSelection() std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); bool bSelEntry = rTreeView.get_cursor(xEntry.get()); if (!bSelEntry) - bSelEntry = rTreeView.get_selected(xEntry.get()); - if (!bSelEntry) + xEntry = rTreeView.get_selected(); + if (!xEntry) return; bool bSelectHandle = rTreeView.is_selected(*xEntry); @@ -496,8 +496,8 @@ void ScConflictsDlg::SetConflictAction(const weld::TreeIter& rRootEntry, ScConfl void ScConflictsDlg::KeepHandler(bool bMine) { weld::TreeView& rTreeView = m_xLbConflicts->GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - if (!rTreeView.get_selected(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_selected(); + if (!xEntry) return; while (rTreeView.get_iter_depth(*xEntry)) diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx index 21503a5fc65e..4337edf74e56 100644 --- a/sd/source/ui/animations/CustomAnimationList.cxx +++ b/sd/source/ui/animations/CustomAnimationList.cxx @@ -1015,8 +1015,7 @@ void CustomAnimationList::Select() IMPL_LINK_NOARG(CustomAnimationList, PostExpandHdl, void*, void) { - std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->make_iterator(); - if (mxTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->get_selected()) { for (bool bChild = mxTreeView->iter_children(*xEntry); bChild; bChild = mxTreeView->iter_next_sibling(*xEntry)) { @@ -1180,7 +1179,7 @@ IMPL_LINK(CustomAnimationList, CommandHdl, const CommandEvent&, rCEvt, bool) } } - if (!mxTreeView->get_selected(nullptr)) + if (!mxTreeView->get_selected()) return false; std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(mxTreeView.get(), u"modules/simpress/ui/effectmenu.ui"_ustr)); diff --git a/sd/source/ui/dlg/navigatr.cxx b/sd/source/ui/dlg/navigatr.cxx index e7d97d19ac88..38705303ae5c 100644 --- a/sd/source/ui/dlg/navigatr.cxx +++ b/sd/source/ui/dlg/navigatr.cxx @@ -279,8 +279,7 @@ void SdNavigatorWin::ExecuteContextMenuAction(std::u16string_view rSelectedPopup if (rSelectedPopupEntry == u"rename") { weld::TreeView& rTreeView = GetObjects().get_treeview(); - std::unique_ptr<weld::TreeIter> xIter(rTreeView.make_iterator()); - if (rTreeView.get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = rTreeView.get_selected()) rTreeView.start_editing(*xIter); } } diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 0a9e96ea876b..0e3210633018 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -414,8 +414,8 @@ namespace { bool CanDragSource(const weld::TreeView& rTreeView) { - std::unique_ptr<weld::TreeIter> xSource(rTreeView.make_iterator()); - if (!rTreeView.get_selected(xSource.get())) + std::unique_ptr<weld::TreeIter> xSource = rTreeView.get_selected(); + if (!xSource) return false; std::unique_ptr<weld::TreeIter> xSourceParent(rTreeView.make_iterator(xSource.get())); @@ -538,8 +538,8 @@ sal_Int8 SdPageObjsTLVDropTarget::AcceptDrop(const AcceptDropEvent& rEvt) return DND_ACTION_NONE; // disallow if there is no source entry selected - std::unique_ptr<weld::TreeIter> xSource(m_rTreeView.make_iterator()); - if (!m_rTreeView.get_selected(xSource.get())) + std::unique_ptr<weld::TreeIter> xSource = m_rTreeView.get_selected(); + if (!xSource) return DND_ACTION_NONE; // disallow when root is source @@ -578,8 +578,8 @@ sal_Int8 SdPageObjsTLVDropTarget::ExecuteDrop( const ExecuteDropEvent& rEvt ) if (!pSource || pSource != &m_rTreeView) return DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xSource(m_rTreeView.make_iterator()); - if (!m_rTreeView.get_selected(xSource.get())) + std::unique_ptr<weld::TreeIter> xSource = m_rTreeView.get_selected(); + if (!xSource) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(m_rTreeView.make_iterator()); diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx index 701823373552..2452444bf590 100644 --- a/sd/source/ui/inc/sdtreelb.hxx +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -248,7 +248,7 @@ public: bool get_selected() const { - return m_xTreeView->get_selected(nullptr); + return bool(m_xTreeView->get_selected()); } int count_selected_rows() const diff --git a/sd/source/ui/sidebar/LayoutMenu.cxx b/sd/source/ui/sidebar/LayoutMenu.cxx index 3cb443003e41..ec13f98910e6 100644 --- a/sd/source/ui/sidebar/LayoutMenu.cxx +++ b/sd/source/ui/sidebar/LayoutMenu.cxx @@ -241,8 +241,8 @@ IMPL_LINK(LayoutMenu, CommandHdl, const CommandEvent&, rEvent, bool) } else { - std::unique_ptr<weld::TreeIter> pSelected = mxLayoutIconView->make_iterator(); - if (!mxLayoutIconView->get_selected(pSelected.get())) + std::unique_ptr<weld::TreeIter> pSelected = mxLayoutIconView->get_selected(); + if (!pSelected) return false; aPos = mxLayoutIconView->get_rect(*pSelected).Center(); } diff --git a/sd/source/ui/sidebar/MasterPagesSelector.cxx b/sd/source/ui/sidebar/MasterPagesSelector.cxx index a730950fa9a4..e34e837efc60 100644 --- a/sd/source/ui/sidebar/MasterPagesSelector.cxx +++ b/sd/source/ui/sidebar/MasterPagesSelector.cxx @@ -146,8 +146,8 @@ IMPL_LINK(MasterPagesSelector, CommandHdl, const CommandEvent&, rEvent, bool) } else { - std::unique_ptr<weld::TreeIter> pSelected = mxPreviewIconView->make_iterator(); - if (!mxPreviewIconView->get_selected(pSelected.get())) + std::unique_ptr<weld::TreeIter> pSelected = mxPreviewIconView->get_selected(); + if (!pSelected) return false; aPos = mxPreviewIconView->get_rect(*pSelected).Center(); } diff --git a/sfx2/source/control/charmapcontainer.cxx b/sfx2/source/control/charmapcontainer.cxx index 7ae42a55dde5..96a1324d896c 100644 --- a/sfx2/source/control/charmapcontainer.cxx +++ b/sfx2/source/control/charmapcontainer.cxx @@ -322,8 +322,8 @@ bool SfxCharmapContainer::HandleContextMenu(weld::IconView& rIconView, } else { - pItem = rIconView.make_iterator(); - if (!rIconView.get_selected(pItem.get())) + pItem = rIconView.get_selected(); + if (!pItem) return false; aPos = rIconView.get_rect(*pItem).Center(); } @@ -363,8 +363,8 @@ void SfxCharmapContainer::updateCharControl(weld::IconView& rIconView, IMPL_LINK(SfxCharmapContainer, IconViewSelectionChangedHdl, weld::IconView&, rIconView, void) { - std::unique_ptr<weld::TreeIter> pIter = rIconView.make_iterator(); - if (!rIconView.get_selected(pIter.get())) + std::unique_ptr<weld::TreeIter> pIter = rIconView.get_selected(); + if (!pIter) return; const int nIndex = rIconView.get_iter_index_in_parent(*pIter); @@ -396,8 +396,8 @@ IMPL_STATIC_LINK(SfxCharmapContainer, ItemViewFocusOutHdl, weld::Widget&, rWidg IMPL_LINK(SfxCharmapContainer, ItemActivatedHdl, weld::IconView&, rIconView, bool) { - std::unique_ptr<weld::TreeIter> pIter = rIconView.make_iterator(); - if (!rIconView.get_selected(pIter.get())) + std::unique_ptr<weld::TreeIter> pIter = rIconView.get_selected(); + if (!pIter) return false; const int nIndex = rIconView.get_iter_index_in_parent(*pIter); diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx index 7fa484600535..2c78bfd0fcf3 100644 --- a/sfx2/source/dialog/StyleList.cxx +++ b/sfx2/source/dialog/StyleList.cxx @@ -534,8 +534,8 @@ IMPL_LINK(StyleList, ExecuteDrop, const ExecuteDropEvent&, rEvt, sal_Int8) if (!pSource || pSource != m_xTreeBox.get()) return DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xSource(m_xTreeBox->make_iterator()); - if (!m_xTreeBox->get_selected(xSource.get())) + std::unique_ptr<weld::TreeIter> xSource = m_xTreeBox->get_selected(); + if (!xSource) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xTarget(m_xTreeBox->make_iterator()); diff --git a/svx/source/form/datanavi.cxx b/svx/source/form/datanavi.cxx index 7ec27ef14229..8bd0eabe3610 100644 --- a/svx/source/form/datanavi.cxx +++ b/svx/source/form/datanavi.cxx @@ -264,7 +264,8 @@ namespace svxform rtl::Reference<TransferDataContainer> xTransferable(new TransferDataContainer); m_xItemList->enable_drag_source(xTransferable, DND_ACTION_NONE); - if (!m_xItemList->get_selected(m_xScratchIter.get())) + std::unique_ptr<weld::TreeIter> pIter = m_xItemList->get_selected(); + if (!pIter) { // no drag without an entry return; @@ -285,22 +286,22 @@ namespace svxform if(!xDataTypes.is()) return; - ItemNode *pItemNode = weld::fromId<ItemNode*>(m_xItemList->get_id(*m_xScratchIter)); + ItemNode *pItemNode = weld::fromId<ItemNode*>(m_xItemList->get_id(*pIter)); if (!pItemNode) { // the only known (and allowed?) case where this happens are sub-entries of a submission // entry DBG_ASSERT( DGTSubmission == m_eGroup, "DataTreeListBox::StartDrag: how this?" ); - bool bSelected = m_xItemList->iter_parent(*m_xScratchIter); - DBG_ASSERT(bSelected && !m_xItemList->get_iter_depth(*m_xScratchIter), "DataTreeListBox::StartDrag: what kind of entry *is* this?"); + bool bSelected = m_xItemList->iter_parent(*pIter); + DBG_ASSERT(bSelected && !m_xItemList->get_iter_depth(*pIter), "DataTreeListBox::StartDrag: what kind of entry *is* this?"); // on the submission page, we have only top-level entries (the submission themself) // plus direct children of those (facets of a submission) - pItemNode = bSelected ? weld::fromId<ItemNode*>(m_xItemList->get_id(*m_xScratchIter)) : nullptr; + pItemNode = bSelected ? weld::fromId<ItemNode*>(m_xItemList->get_id(*pIter)) : nullptr; if (!pItemNode) return; } - OUString szName = m_xItemList->get_text(*m_xScratchIter); + OUString szName = m_xItemList->get_text(*pIter); Reference<css::xml::dom::XNode> xNode(pItemNode->m_xNode); Reference<XPropertySet> xPropSet(pItemNode->m_xPropSet); @@ -432,8 +433,7 @@ namespace svxform { DataItemType eType = DITElement; - std::unique_ptr<weld::TreeIter> xEntry(m_xItemList->make_iterator()); - bool bEntry = m_xItemList->get_selected(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xItemList->get_selected(); std::unique_ptr<ItemNode> pNode; Reference< css::xml::dom::XNode > xParentNode; @@ -448,8 +448,7 @@ namespace svxform if (aMsgBox.run() != RET_OK) return bHandled; } - - DBG_ASSERT( bEntry, "XFormsPage::DoToolBoxAction(): no entry" ); + assert(xEntry && "XFormsPage::DoToolBoxAction(): no entry"); ItemNode* pParentNode = weld::fromId<ItemNode*>(m_xItemList->get_id(*xEntry)); assert(pParentNode && "XFormsPage::DoToolBoxAction(): no parent node"); xParentNode = pParentNode->m_xNode; @@ -588,9 +587,7 @@ namespace svxform { bHandled = true; - std::unique_ptr<weld::TreeIter> xEntry(m_xItemList->make_iterator()); - bool bEntry = m_xItemList->get_selected(xEntry.get()); - if ( bEntry ) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xItemList->get_selected()) { if ( DGTSubmission == m_eGroup && m_xItemList->get_iter_depth(*xEntry) ) { @@ -711,9 +708,7 @@ namespace svxform if (!pRet) pRet = m_xScratchIter.get(); - std::unique_ptr<weld::TreeIter> xParent(m_xItemList->make_iterator()); - if (!m_xItemList->get_selected(xParent.get())) - xParent.reset(); + std::unique_ptr<weld::TreeIter> xParent = m_xItemList->get_selected(); OUString aImage(_bIsElement ? RID_SVXBMP_ELEMENT : RID_SVXBMP_ATTRIBUTE); OUString sName; try @@ -813,8 +808,8 @@ namespace svxform try { - std::unique_ptr<weld::TreeIter> xEntry(m_xItemList->make_iterator()); - if (!m_xItemList->get_selected(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = m_xItemList->get_selected(); + if (!xEntry) { SAL_WARN( "svx.form", "corrupt tree" ); return; @@ -882,9 +877,8 @@ namespace svxform { bool bRet = false; - std::unique_ptr<weld::TreeIter> xEntry(m_xItemList->make_iterator()); - bool bEntry = m_xItemList->get_selected(xEntry.get()); - if ( bEntry && + std::unique_ptr<weld::TreeIter> xEntry = m_xItemList->get_selected(); + if ( xEntry && ( DGTInstance != m_eGroup || m_xItemList->get_iter_depth(*xEntry) ) ) { Reference< css::xforms::XModel > xModel( m_xUIHelper, UNO_QUERY ); @@ -1200,8 +1194,8 @@ namespace svxform bool bEnableEdit = false; bool bEnableRemove = false; - std::unique_ptr<weld::TreeIter> xEntry(m_xItemList->make_iterator()); - bool bEntry = m_xItemList->get_selected(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xItemList->get_selected(); + bool bEntry = bool(xEntry); if (bEntry) { bEnableAdd = true; diff --git a/svx/source/form/filtnav.cxx b/svx/source/form/filtnav.cxx index 2a8b307258ca..ec37f26fc083 100644 --- a/svx/source/form/filtnav.cxx +++ b/svx/source/form/filtnav.cxx @@ -1247,8 +1247,8 @@ sal_Int8 FmFilterNavigator::ExecuteDrop( const ExecuteDropEvent& rEvt ) IMPL_LINK_NOARG(FmFilterNavigator, SelectHdl, weld::TreeView&, void) { - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_selected(); + if (!xIter) return; FmFilterData* pData = weld::fromId<FmFilterData*>(m_xTreeView->get_id(*xIter)); diff --git a/svx/source/form/navigatortree.cxx b/svx/source/form/navigatortree.cxx index 1a573ef0e633..9466a8bf1b51 100644 --- a/svx/source/form/navigatortree.cxx +++ b/svx/source/form/navigatortree.cxx @@ -709,9 +709,7 @@ namespace svxform TransferableDataHelper aClipboardContent(TransferableDataHelper::CreateFromClipboard(m_xTreeView->get_clipboard())); sal_Int8 nAction = m_aControlExchange.isClipboardOwner() && doingKeyboardCut( ) ? DND_ACTION_MOVE : DND_ACTION_COPY; - std::unique_ptr<weld::TreeIter> xSelected(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xSelected.get())) - xSelected.reset(); + std::unique_ptr<weld::TreeIter> xSelected = m_xTreeView->get_selected(); return nAction == implAcceptDataTransfer(aClipboardContent.GetDataFlavorExVector(), nAction, xSelected.get(), false); } @@ -1150,10 +1148,7 @@ namespace svxform void NavigatorTree::doPaste() { - std::unique_ptr<weld::TreeIter> xSelected(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xSelected.get())) - xSelected.reset(); - + std::unique_ptr<weld::TreeIter> xSelected = m_xTreeView->get_selected(); try { if ( m_aControlExchange.isClipboardOwner() ) @@ -1894,9 +1889,7 @@ namespace svxform if ((m_arrCurrentSelection.size() != 1) || (m_nFormsSelected != 1)) return; - std::unique_ptr<weld::TreeIter> xSelected(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xSelected.get())) - xSelected.reset(); + std::unique_ptr<weld::TreeIter> xSelected = m_xTreeView->get_selected(); FmFormData* pSingleSelectionData = xSelected ? dynamic_cast<FmFormData*>(weld::fromId<FmEntryData*>(m_xTreeView->get_id(*xSelected))) : nullptr; DBG_ASSERT( pSingleSelectionData, "NavigatorTree::SynchronizeMarkList: invalid selected form!" ); diff --git a/svx/source/gallery2/galbrws1.cxx b/svx/source/gallery2/galbrws1.cxx index 1f6ed31765cc..1f185ee7f420 100644 --- a/svx/source/gallery2/galbrws1.cxx +++ b/svx/source/gallery2/galbrws1.cxx @@ -1216,16 +1216,16 @@ sal_uInt32 GalleryBrowser::ImplGetSelectedItemId( const Point* pSelPos, Point& r } else { - std::unique_ptr<weld::TreeIter> xIter = mxListView->make_iterator(); if( pSelPos ) { + std::unique_ptr<weld::TreeIter> xIter = mxListView->make_iterator(); if (mxListView->get_dest_row_at_pos(*pSelPos, xIter.get(), false)) nRet = mxListView->get_iter_index_in_parent(*xIter) + 1; rSelPos = *pSelPos; } else { - if (mxListView->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = mxListView->get_selected()) { nRet = mxListView->get_iter_index_in_parent(*xIter) + 1; rSelPos = mxListView->get_row_area(*xIter).Center(); diff --git a/sw/source/ui/dialog/uiregionsw.cxx b/sw/source/ui/dialog/uiregionsw.cxx index 74c4dbe93c94..c89ede6a5892 100644 --- a/sw/source/ui/dialog/uiregionsw.cxx +++ b/sw/source/ui/dialog/uiregionsw.cxx @@ -406,7 +406,7 @@ SwEditRegionDlg::SwEditRegionDlg(weld::Window* pParent, SwWrtShell& rWrtSh) RecurseList( nullptr, nullptr ); // if the cursor is not in a region the first one will always be selected - if (!m_xTree->get_selected(nullptr)) + if (!m_xTree->get_selected()) { std::unique_ptr<weld::TreeIter> xIter(m_xTree->make_iterator()); if (m_xTree->get_iter_first(*xIter)) @@ -594,8 +594,7 @@ void SwEditRegionDlg::SelectSection(std::u16string_view rSectionName) IMPL_LINK(SwEditRegionDlg, GetFirstEntryHdl, weld::TreeView&, rBox, void) { m_bDontCheckPasswd = true; - std::unique_ptr<weld::TreeIter> xIter(rBox.make_iterator()); - bool bEntry = rBox.get_selected(xIter.get()); + std::unique_ptr<weld::TreeIter> xIter = rBox.get_selected(); m_xHideCB->set_sensitive(true); // edit in readonly sections m_xEditInReadonlyCB->set_sensitive(true); @@ -686,7 +685,7 @@ IMPL_LINK(SwEditRegionDlg, GetFirstEntryHdl, weld::TreeView&, rBox, void) m_xPasswdPB->set_sensitive(bPasswdEnabled); if(!bPasswdValid) { - rBox.get_selected(xIter.get()); + xIter = rBox.get_selected(); rBox.unselect_all(); rBox.select(*xIter); GetFirstEntryHdl(rBox); @@ -695,7 +694,7 @@ IMPL_LINK(SwEditRegionDlg, GetFirstEntryHdl, weld::TreeView&, rBox, void) else m_xPasswdCB->set_active(aCurPasswd.hasElements()); } - else if (bEntry ) + else if (xIter) { m_xCurName->set_sensitive(true); m_xOptionsPB->set_sensitive(true); @@ -893,8 +892,8 @@ IMPL_LINK_NOARG(SwEditRegionDlg, ChangeDismissHdl, weld::Button&, void) return false; }); - std::unique_ptr<weld::TreeIter> xEntry(m_xTree->make_iterator()); - bool bEntry(m_xTree->get_selected(xEntry.get())); + std::unique_ptr<weld::TreeIter> xEntry = m_xTree->get_selected(); + bool bEntry = bool(xEntry); // then delete while (bEntry) { @@ -932,7 +931,7 @@ IMPL_LINK_NOARG(SwEditRegionDlg, ChangeDismissHdl, weld::Button&, void) m_xTree->remove(*xRemove); } - if (m_xTree->get_selected(nullptr)) + if (m_xTree->get_selected()) return; m_xConditionFT->set_sensitive(false); @@ -961,7 +960,7 @@ IMPL_LINK(SwEditRegionDlg, UseFileHdl, weld::Toggleable&, rButton, void) return; bool bMulti = 1 < m_xTree->count_selected_rows(); bool bFile = rButton.get_active(); - if (m_xTree->get_selected(nullptr)) + if (m_xTree->get_selected()) { m_xTree->selected_foreach([&](weld::TreeIter& rEntry){ SectRepr* const pSectRepr = weld::fromId<SectRepr*>(m_xTree->get_id(rEntry)); @@ -1280,8 +1279,7 @@ IMPL_LINK_NOARG(SwEditRegionDlg, NameEditHdl, weld::Entry&, void) { if(!CheckPasswd()) return; - std::unique_ptr<weld::TreeIter> xIter(m_xTree->make_iterator()); - if (m_xTree->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xTree->get_selected()) { const OUString aName = m_xCurName->get_text(); m_xTree->set_text(*xIter, aName); diff --git a/sw/source/ui/fldui/changedb.cxx b/sw/source/ui/fldui/changedb.cxx index a6b748d2e8b5..b8898dcf34f0 100644 --- a/sw/source/ui/fldui/changedb.cxx +++ b/sw/source/ui/fldui/changedb.cxx @@ -212,8 +212,7 @@ IMPL_LINK_NOARG(SwChangeDBDlg, TreeSelectHdl, weld::TreeView&, void) void SwChangeDBDlg::TreeSelect() { bool bEnable = false; - std::unique_ptr<weld::TreeIter> xIter(m_xAvailDBTLB->make_iterator()); - if (m_xAvailDBTLB->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xAvailDBTLB->get_selected()) { if (m_xAvailDBTLB->get_iter_depth(*xIter)) bEnable = true; diff --git a/sw/source/ui/fldui/flddb.cxx b/sw/source/ui/fldui/flddb.cxx index 051af603dba3..e19006f0c860 100644 --- a/sw/source/ui/fldui/flddb.cxx +++ b/sw/source/ui/fldui/flddb.cxx @@ -425,8 +425,7 @@ void SwFieldDBPage::CheckInsert() bool bInsert = true; const SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xTypeLB->get_id(GetTypeSel()).toUInt32()); - std::unique_ptr<weld::TreeIter> xIter(m_xDatabaseTLB->make_iterator()); - if (m_xDatabaseTLB->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xDatabaseTLB->get_selected()) { bool bEntry = m_xDatabaseTLB->iter_parent(*xIter); @@ -450,8 +449,8 @@ void SwFieldDBPage::CheckInsert() IMPL_LINK(SwFieldDBPage, TreeSelectHdl, weld::TreeView&, rBox, void) { - std::unique_ptr<weld::TreeIter> xIter(rBox.make_iterator()); - if (!rBox.get_selected(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = rBox.get_selected(); + if (!xIter) return; const SwFieldTypesEnum nTypeId = static_cast<SwFieldTypesEnum>(m_xTypeLB->get_id(GetTypeSel()).toUInt32()); diff --git a/sw/source/ui/fldui/flddinf.cxx b/sw/source/ui/fldui/flddinf.cxx index 45186db15c87..d2b37c89f8a3 100644 --- a/sw/source/ui/fldui/flddinf.cxx +++ b/sw/source/ui/fldui/flddinf.cxx @@ -250,11 +250,10 @@ void SwFieldDokInfPage::Reset(const SfxItemSet* ) IMPL_LINK_NOARG(SwFieldDokInfPage, TypeHdl, weld::TreeView&, void) { // current ListBoxPos - if (!m_pTypeView->get_selected(m_xSelEntry.get()) && - m_pTypeView->get_iter_first(*m_xSelEntry)) - { + if (std::unique_ptr<weld::TreeIter> pSelected = m_pTypeView->get_selected()) + m_xSelEntry = std::move(pSelected); + else if (m_pTypeView->get_iter_first(*m_xSelEntry)) m_pTypeView->select(*m_xSelEntry); - } FillSelectionLB(static_cast<SwDocInfoSubType>(m_pTypeView->get_id(*m_xSelEntry).toUInt32())); SubTypeHdl(*m_xSelectionLB); } diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx index e7e1977d3bb8..ed01a2e030e3 100644 --- a/sw/source/ui/misc/bookmark.cxx +++ b/sw/source/ui/misc/bookmark.cxx @@ -500,10 +500,7 @@ BookmarkTable::BookmarkTable(std::unique_ptr<weld::TreeView> xControl) std::unique_ptr<weld::TreeIter> BookmarkTable::get_selected() const { - std::unique_ptr<weld::TreeIter> xIter(m_xControl->make_iterator()); - if (!m_xControl->get_selected(xIter.get())) - xIter.reset(); - return xIter; + return m_xControl->get_selected(); } void BookmarkTable::InsertBookmark(SwWrtShell& rSh, sw::mark::MarkBase* const pMark) diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index bffde143a23a..efdd1329e06b 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -188,9 +188,8 @@ private: if (!pSource || pSource != &m_rTreeView) return DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xSelected(pSource->make_iterator()); - bool bSelected = pSource->get_selected(xSelected.get()); - if (!bSelected) + std::unique_ptr<weld::TreeIter> xSelected = pSource->get_selected(); + if (!xSelected) return DND_ACTION_NONE; while (pSource->get_iter_depth(*xSelected)) @@ -227,9 +226,8 @@ private: if (!bEntry) return DND_ACTION_NONE; - std::unique_ptr<weld::TreeIter> xSelected(pSource->make_iterator()); - bool bSelected = pSource->get_selected(xSelected.get()); - if (!bSelected) + std::unique_ptr<weld::TreeIter> xSelected = pSource->get_selected(); + if (!xSelected) return DND_ACTION_NONE; std::unique_ptr<weld::TreeIter> xSrcParent(pSource->make_iterator(xSelected.get())); @@ -388,8 +386,8 @@ OUString getCurrentGlossary() // select new group IMPL_LINK(SwGlossaryDlg, GrpSelect, weld::TreeView&, rBox, void) { - std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator(); - if (!rBox.get_selected(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = rBox.get_selected(); + if (!xEntry) return; std::unique_ptr<weld::TreeIter> xParent = rBox.make_iterator(xEntry.get()); @@ -458,8 +456,7 @@ std::unique_ptr<weld::TreeIter> SwGlossaryDlg::DoesBlockExist(std::u16string_vie std::u16string_view rShort) { // look for possible entry in TreeListBox - std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator(); - if (m_xCategoryBox->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->get_selected()) { if (m_xCategoryBox->get_iter_depth(*xEntry)) m_xCategoryBox->iter_parent(*xEntry); @@ -519,21 +516,20 @@ IMPL_LINK(SwGlossaryDlg, NameModify, weld::Entry&, rEdit, void) IMPL_LINK( SwGlossaryDlg, NameDoubleClick, weld::TreeView&, rBox, bool ) { - std::unique_ptr<weld::TreeIter> xEntry = rBox.make_iterator(); - if (rBox.get_selected(xEntry.get()) && rBox.get_iter_depth(*xEntry) && !m_bIsDocReadOnly) + std::unique_ptr<weld::TreeIter> xEntry = rBox.get_selected(); + if (xEntry && rBox.get_iter_depth(*xEntry) && !m_bIsDocReadOnly) m_xDialog->response(RET_OK); return true; } IMPL_LINK_NOARG( SwGlossaryDlg, EnableHdl, weld::Toggleable&, void ) { - std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator(); - bool bEntry = m_xCategoryBox->get_selected(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->get_selected(); const OUString aEditText(m_xNameED->get_text()); const bool bHasEntry = !aEditText.isEmpty() && !m_xShortNameEdit->get_text().isEmpty(); const bool bExists = nullptr != DoesBlockExist(aEditText, m_xShortNameEdit->get_text()); - const bool bIsGroup = bEntry && !m_xCategoryBox->get_iter_depth(*xEntry); + const bool bIsGroup = xEntry && !m_xCategoryBox->get_iter_depth(*xEntry); m_xEditBtn->set_item_visible(u"new"_ustr, m_bSelection && bHasEntry && !bExists); m_xEditBtn->set_item_visible(u"newtext"_ustr, m_bSelection && bHasEntry && !bExists); m_xEditBtn->set_item_visible(u"copy"_ustr, bExists && !bIsGroup); @@ -583,10 +579,8 @@ IMPL_LINK(SwGlossaryDlg, MenuHdl, const OUString&, rItemIdent, void) } if(m_pGlossaryHdl->NewGlossary(aStr, aShortName, false, bNoAttr )) { - std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator(); - if (!m_xCategoryBox->get_selected(xEntry.get())) - xEntry.reset(); - else if (m_xCategoryBox->get_iter_depth(*xEntry)) + std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->get_selected(); + if (xEntry && m_xCategoryBox->get_iter_depth(*xEntry)) m_xCategoryBox->iter_parent(*xEntry); m_xCategoryBox->insert(xEntry.get(), -1, &aStr, &aShortName, nullptr, nullptr, false, nullptr); @@ -617,8 +611,7 @@ IMPL_LINK(SwGlossaryDlg, MenuHdl, const OUString&, rItemIdent, void) aNewNameDlg.GetNewShort(), aNewNameDlg.GetNewName())) { - std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator(); - if (m_xCategoryBox->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->get_selected()) { std::unique_ptr<weld::TreeIter> xOldEntry = m_xCategoryBox->make_iterator(xEntry.get()); if (m_xCategoryBox->get_iter_depth(*xEntry)) @@ -986,8 +979,7 @@ IMPL_LINK(SwGlossaryDlg, KeyInputHdl, const KeyEvent&, rKEvt, bool) OUString SwGlossaryDlg::GetCurrGrpName() const { - std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->make_iterator(); - if (m_xCategoryBox->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xCategoryBox->get_selected()) { if (m_xCategoryBox->get_iter_depth(*xEntry)) m_xCategoryBox->iter_parent(*xEntry); @@ -1075,7 +1067,7 @@ void SwGlossaryDlg::ResumeShowAutoText() void SwGlossaryDlg::DeleteEntry() { - bool bEntry = m_xCategoryBox->get_selected(nullptr); + std::unique_ptr<weld::TreeIter> pEntry = m_xCategoryBox->get_selected(); const OUString aTitle(m_xNameED->get_text()); const OUString aShortName(m_xShortNameEdit->get_text()); @@ -1089,7 +1081,7 @@ void SwGlossaryDlg::DeleteEntry() } const bool bExists = nullptr != xChild; - const bool bIsGroup = bEntry && !xParent; + const bool bIsGroup = pEntry && !xParent; std::unique_ptr<weld::MessageDialog> xQuery(Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Question, VclButtonsType::YesNo, diff --git a/sw/source/uibase/dbui/dbtree.cxx b/sw/source/uibase/dbui/dbtree.cxx index 1ef07a224e8c..ea140ce934ad 100644 --- a/sw/source/uibase/dbui/dbtree.cxx +++ b/sw/source/uibase/dbui/dbtree.cxx @@ -303,8 +303,7 @@ IMPL_LINK(SwDBTreeList, RequestingChildrenHdl, const weld::TreeIter&, rParent, b OUString SwDBTreeList::GetDBName(OUString& rTableName, OUString& rColumnName, sal_Bool* pbIsTable) { OUString sDBName; - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (m_xTreeView->get_selected(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_selected()) { if (m_xTreeView->get_iter_depth(*xIter) == 2) { diff --git a/sw/source/uibase/inc/dbtree.hxx b/sw/source/uibase/inc/dbtree.hxx index d2f7a8371a62..19585c252309 100644 --- a/sw/source/uibase/inc/dbtree.hxx +++ b/sw/source/uibase/inc/dbtree.hxx @@ -60,8 +60,7 @@ public: m_xTreeView->connect_selection_changed(rLink); } void connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { m_xTreeView->connect_row_activated(rLink); } - std::unique_ptr<weld::TreeIter> make_iterator(const weld::TreeIter* pOrig = nullptr) const { return m_xTreeView->make_iterator(pOrig); } - bool get_selected(weld::TreeIter* pIter) const { return m_xTreeView->get_selected(pIter); } + std::unique_ptr<weld::TreeIter> get_selected() const { return m_xTreeView->get_selected(); } bool iter_parent(weld::TreeIter& rIter) const { return m_xTreeView->iter_parent(rIter); } int get_iter_depth(const weld::TreeIter& rIter) const { return m_xTreeView->get_iter_depth(rIter); } void set_size_request(int nWidth, int nHeight) { m_xTreeView->set_size_request(nWidth, nHeight); } diff --git a/sw/source/uibase/misc/redlndlg.cxx b/sw/source/uibase/misc/redlndlg.cxx index ab5fbd4a7bd0..a9fd2278415e 100644 --- a/sw/source/uibase/misc/redlndlg.cxx +++ b/sw/source/uibase/misc/redlndlg.cxx @@ -139,8 +139,7 @@ namespace { const SwRedlineData* lcl_get_selected_redlinedata(const weld::TreeView& rTreeView) { - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - if (rTreeView.get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_selected()) { RedlinData* pRedlinData = weld::fromId<RedlinData*>(rTreeView.get_id(*xEntry)); if (rTreeView.get_iter_depth(*xEntry)) @@ -380,7 +379,7 @@ void SwRedlineAcceptDlg::EnableControls(const SwView* pView) bool const bEnable = isAcceptRejectCommandsEnabled(*pView) && rTreeView.n_children() != 0 && !pSh->getIDocumentRedlineAccess().GetRedlinePassword().hasElements(); - bool bSel = rTreeView.get_selected(nullptr); + std::unique_ptr<weld::TreeIter> pSelectedEntry = rTreeView.get_selected(); bool bIsNotFormated = false; rTreeView.selected_foreach([this, pSh, &bIsNotFormated](weld::TreeIter& rEntry){ @@ -396,9 +395,9 @@ void SwRedlineAcceptDlg::EnableControls(const SwView* pView) return false; }); - m_pTPView->EnableAccept( bEnable && bSel ); - m_pTPView->EnableReject( bEnable && bSel ); - m_pTPView->EnableClearFormat( bEnable && !bIsNotFormated && bSel ); + m_pTPView->EnableAccept( bEnable && pSelectedEntry ); + m_pTPView->EnableReject( bEnable && pSelectedEntry ); + m_pTPView->EnableClearFormat( bEnable && !bIsNotFormated && pSelectedEntry ); m_pTPView->EnableAcceptAll( bEnable ); m_pTPView->EnableRejectAll( bEnable ); m_pTPView->EnableClearFormatAll( bEnable && @@ -1323,8 +1322,7 @@ IMPL_LINK_NOARG(SwRedlineAcceptDlg, GotoHdl, Timer *, void) if (!m_xParentDlg || m_xParentDlg->has_toplevel_focus()) { weld::TreeView& rTreeView = m_pTable->GetWidget(); - std::unique_ptr<weld::TreeIter> xActEntry(rTreeView.make_iterator()); - if (rTreeView.get_selected(xActEntry.get())) + if (std::unique_ptr<weld::TreeIter> xActEntry = rTreeView.get_selected()) { pSh->StartAction(); pSh->EnterStdMode(); @@ -1401,9 +1399,8 @@ IMPL_LINK(SwRedlineAcceptDlg, CommandHdl, const CommandEvent&, rCEvt, bool) const SwRangeRedline *pRed = nullptr; weld::TreeView& rTreeView = m_pTable->GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - bool bEntry = rTreeView.get_selected(xEntry.get()); - if (bEntry) + std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_selected(); + if (xEntry) { std::unique_ptr<weld::TreeIter> xTopEntry(rTreeView.make_iterator(xEntry.get())); @@ -1421,7 +1418,7 @@ IMPL_LINK(SwRedlineAcceptDlg, CommandHdl, const CommandEvent&, rCEvt, bool) } } - m_xPopup->set_sensitive(u"writeredit"_ustr, bEntry && pRed && + m_xPopup->set_sensitive(u"writeredit"_ustr, xEntry && pRed && !rTreeView.get_iter_depth(*xEntry) && rTreeView.count_selected_rows() == 1); m_xPopup->set_sensitive(u"writersort"_ustr, rTreeView.n_children() != 0); @@ -1435,7 +1432,7 @@ IMPL_LINK(SwRedlineAcceptDlg, CommandHdl, const CommandEvent&, rCEvt, bool) if (sCommand == "writeredit") { - if (bEntry) + if (xEntry) { if (rTreeView.get_iter_depth(*xEntry)) rTreeView.iter_parent(*xEntry); diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 2b0611896673..0e7e5eb3c176 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -1429,9 +1429,8 @@ IMPL_LINK(SwContentTree, DragBeginHdl, bool&, rUnsetDragIcon, bool) bool bDisallow = true; // don't allow if tree root is selected - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - bool bEntry = m_xTreeView->get_selected(xEntry.get()); - if (!bEntry || lcl_IsContentType(*xEntry, *m_xTreeView)) + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected(); + if (!xEntry || lcl_IsContentType(*xEntry, *m_xTreeView)) { return true; // disallow } @@ -1878,9 +1877,7 @@ IMPL_LINK(SwContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) xSubPop3->set_active(OUString::number(nId), true); } - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xEntry.get())) - xEntry.reset(); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected(); bool bRemoveGotoEntry = false; if (State::HIDDEN == m_eState || !xEntry || !lcl_IsContent(*xEntry, *m_xTreeView) || @@ -3360,9 +3357,7 @@ void SwContentTree::Display( bool bActive ) { // First read the selected entry to select it later again if necessary // -> the user data here are no longer valid! - std::unique_ptr<weld::TreeIter> xOldSelEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xOldSelEntry.get())) - xOldSelEntry.reset(); + std::unique_ptr<weld::TreeIter> xOldSelEntry = m_xTreeView->get_selected(); size_t nEntryRelPos = 0; // relative position to their parent size_t nOldEntryCount = GetEntryCount(); sal_Int32 nOldScrollPos = 0; @@ -4052,8 +4047,7 @@ bool SwContentTree::HasContentChanged() void SwContentTree::UpdateLastSelType() { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected()) { while (m_xTreeView->get_iter_depth(*xEntry)) m_xTreeView->iter_parent(*xEntry); @@ -4179,8 +4173,7 @@ void SwContentTree::Notify(SfxBroadcaster & rBC, SfxHint const& rHint) { SelectOutlinesWithSelection(); // make first selected entry visible - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (xEntry && m_xTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected()) m_xTreeView->scroll_to_row(*xEntry); } else if (m_nRootType == ContentTypeId::UNKNOWN) @@ -4693,9 +4686,7 @@ static void lcl_SelectByContentTypeAndAddress(SwContentTree* pThis, weld::TreeVi if (ptr == p) { // get first selected for comparison - std::unique_ptr<weld::TreeIter> xFirstSelected(rContentTree.make_iterator()); - if (!rContentTree.get_selected(xFirstSelected.get())) - xFirstSelected.reset(); + std::unique_ptr<weld::TreeIter> xFirstSelected = rContentTree.get_selected(); if (rContentTree.count_selected_rows() != 1 || !xFirstSelected || rContentTree.iter_compare(*xIter, *xFirstSelected) != 0) { @@ -4733,9 +4724,7 @@ static void lcl_SelectByContentTypeAndName(SwContentTree* pThis, weld::TreeView& if (rName == rContentTree.get_text(*xIter)) { // get first selected for comparison - std::unique_ptr<weld::TreeIter> xFirstSelected(rContentTree.make_iterator()); - if (!rContentTree.get_selected(xFirstSelected.get())) - xFirstSelected.reset(); + std::unique_ptr<weld::TreeIter> xFirstSelected = rContentTree.get_selected(); if (rContentTree.count_selected_rows() != 1 || !xFirstSelected || rContentTree.iter_compare(*xIter, *xFirstSelected) != 0) { @@ -5064,10 +5053,7 @@ void SwContentTree::UpdateTracking() if (weld::fromId<SwOutlineContent*>( m_xTreeView->get_id(rEntry))->GetOutlinePos() == nActPos) { - std::unique_ptr<weld::TreeIter> xFirstSelected( - m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xFirstSelected.get())) - xFirstSelected.reset(); + std::unique_ptr<weld::TreeIter> xFirstSelected = m_xTreeView->get_selected(); // only select if not already selected or tree has multiple entries selected if (m_xTreeView->count_selected_rows() != 1 || !xFirstSelected || m_xTreeView->iter_compare(rEntry, *xFirstSelected) != 0) @@ -5598,14 +5584,12 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool) const vcl::KeyCode aCode = rEvent.GetKeyCode(); if (aCode.GetCode() == KEY_MULTIPLY && aCode.IsMod1()) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected()) ExpandOrCollapseAll(*m_xTreeView, *xEntry); } else if (aCode.GetCode() == KEY_RETURN) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_selected(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected()) { switch(aCode.GetModifier()) { @@ -5635,9 +5619,8 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool) } else if(aCode.GetCode() == KEY_DELETE && 0 == aCode.GetModifier()) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_pActiveShell->GetView().GetDocShell()->IsReadOnly() - && m_xTreeView->get_selected(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_selected(); + if (!m_pActiveShell->GetView().GetDocShell()->IsReadOnly() && xEntry) { if (lcl_IsContent(*xEntry, *m_xTreeView)) { @@ -5959,8 +5942,8 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry if (rSelectedPopupEntry == "makeallfootnotesendnotes" || rSelectedPopupEntry == "makeallendnotesfootnotes") { - std::unique_ptr<weld::TreeIter> xEntryIter(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xEntryIter.get())) + std::unique_ptr<weld::TreeIter> xEntryIter = m_xTreeView->get_selected(); + if (!xEntryIter) return; // this shouldn't happen SwContentType* pContentType = weld::fromId<SwContentType*>(m_xTreeView->get_id(*xEntryIter)); m_pActiveShell->StartUndo(rSelectedPopupEntry == "makeallfootnotesendnotes" @@ -6017,8 +6000,8 @@ void SwContentTree::ExecuteContextMenuAction(const OUString& rSelectedPopupEntry } } - std::unique_ptr<weld::TreeIter> xFirst(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xFirst.get())) + std::unique_ptr<weld::TreeIter> xFirst = m_xTreeView->get_selected(); + if (!xFirst) return; // this shouldn't happen, but better to be safe than ... if (rSelectedPopupEntry == "deletealltables" || rSelectedPopupEntry == "deleteallframes" @@ -6439,8 +6422,8 @@ IMPL_LINK_NOARG(SwContentTree, SelectHdl, weld::TreeView&, void) if (m_bIsRoot) return; // Select the content type in the Navigate By control - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_selected(xEntry.get())) -e ... etc. - the rest is truncated
