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

Reply via email to