basctl/source/basicide/baside2b.cxx | 13 -- basctl/source/basicide/bastype2.cxx | 12 +- basctl/source/basicide/macrodlg.cxx | 104 +++++++++++------- basctl/source/basicide/moduldl2.cxx | 28 ++-- basctl/source/basicide/moduldlg.cxx | 19 +-- basctl/source/inc/bastype2.hxx | 2 cui/source/dialogs/hlmarkwn.cxx | 9 - cui/source/options/treeopt.cxx | 5 dbaccess/source/ui/app/AppController.cxx | 4 dbaccess/source/ui/app/AppIconControl.cxx | 2 dbaccess/source/ui/browser/unodatbr.cxx | 14 +- dbaccess/source/ui/querydesign/TableWindow.cxx | 3 dbaccess/source/ui/querydesign/TableWindowListBox.cxx | 7 - formula/source/ui/dlg/structpg.cxx | 3 fpicker/source/office/fileview.cxx | 7 - fpicker/source/office/foldertree.cxx | 5 include/sfx2/templatelocalview.hxx | 2 include/sfx2/thumbnailview.hxx | 4 include/vcl/weld/ItemView.hxx | 2 reportdesign/source/ui/dlg/Navigator.cxx | 5 sc/source/ui/cctrl/checklistmenu.cxx | 16 +- sc/source/ui/miscdlgs/acredlin.cxx | 13 +- sc/source/ui/miscdlgs/conflictsdlg.cxx | 5 sc/source/ui/namedlg/namemgrtable.cxx | 3 sc/source/ui/navipi/content.cxx | 29 +---- sc/source/ui/xmlsource/xmlsourcedlg.cxx | 4 sd/source/ui/animations/CustomAnimationList.cxx | 12 -- sd/source/ui/dlg/sdtreelb.cxx | 13 +- sd/source/ui/inc/sdtreelb.hxx | 6 - sfx2/source/control/charmapcontainer.cxx | 5 sfx2/source/control/templatelocalview.cxx | 3 sfx2/source/control/thumbnailview.cxx | 3 sfx2/source/dialog/StyleList.cxx | 4 svx/source/form/filtnav.cxx | 6 - svx/source/form/navigatortree.cxx | 9 - sw/source/uibase/sidebar/QuickFindPanel.cxx | 8 - sw/source/uibase/utlui/content.cxx | 31 ++--- vcl/inc/qt5/QtInstanceItemView.hxx | 2 vcl/inc/salvtables.hxx | 2 vcl/qt5/QtInstanceItemView.cxx | 12 -- vcl/source/app/salvtables.cxx | 10 - vcl/source/weld/ItemView.cxx | 3 vcl/unx/gtk3/gtkinst.cxx | 58 +++++----- 43 files changed, 240 insertions(+), 267 deletions(-)
New commits: commit af9d93ecb480444ccfb82e2e80f583282ac325ef Author: Michael Weghorn <[email protected]> AuthorDate: Thu Jan 1 12:07:51 2026 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Jan 3 08:11:27 2026 +0100 weld: Return std::unique_ptr in weld::ItemView::get_cursor This is similar to commit 82edaf048b53168c74357a51dab3377ed5c779e0 Author: Michael Weghorn <[email protected]> Date: Sun Dec 21 01:36:30 2025 +0100 weld: Return std::unique_ptr in weld::ItemView::get_selected , but now for weld::ItemView::get_cursor. See the above-mentioned commit for more background. Change-Id: I6a8d8daa3dd3326c2716c0c0b4e4cb424f73ecb8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196389 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 339c8348082e..5e3d08b0fb47 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -1850,13 +1850,11 @@ void WatchWindow::AddWatch( const OUString& rVName ) void WatchWindow::RemoveSelectedWatch() { - std::unique_ptr<weld::TreeIter> xEntry = m_xTreeListBox->make_iterator(); - bool bEntry = m_xTreeListBox->get_cursor(xEntry.get()); - if (bEntry) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeListBox->get_cursor()) { m_xTreeListBox->remove(*xEntry); - bEntry = m_xTreeListBox->get_cursor(xEntry.get()); - if (bEntry) + xEntry = m_xTreeListBox->get_cursor(); + if (xEntry) m_xEdit->set_text(weld::fromId<WatchItem*>(m_xTreeListBox->get_id(*xEntry))->maName); else m_xEdit->set_text(OUString()); @@ -1873,9 +1871,8 @@ IMPL_STATIC_LINK_NOARG(WatchWindow, ButtonHdl, weld::Button&, void) IMPL_LINK_NOARG(WatchWindow, TreeListHdl, weld::TreeView&, void) { - std::unique_ptr<weld::TreeIter> xCurEntry = m_xTreeListBox->make_iterator(); - bool bCurEntry = m_xTreeListBox->get_cursor(xCurEntry.get()); - if (!bCurEntry) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xTreeListBox->get_cursor(); + if (!xCurEntry) return; WatchItem* pItem = weld::fromId<WatchItem*>(m_xTreeListBox->get_id(*xCurEntry)); if (!pItem) diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx index 24450b59d505..3f2a029017e7 100644 --- a/basctl/source/basicide/bastype2.cxx +++ b/basctl/source/basicide/bastype2.cxx @@ -889,15 +889,15 @@ void SbTreeListBox::SetCurrentEntry (EntryDescriptor const & rDesc) IMPL_LINK_NOARG(SbTreeListBox, OpenCurrentHdl, weld::TreeView&, bool) { - bool bValidIter = m_xControl->get_cursor(m_xScratchIter.get()); - if (!bValidIter) + std::unique_ptr<weld::TreeIter> pCursor = m_xControl->get_cursor(); + if (!pCursor) return true; - if (!m_xControl->get_row_expanded(*m_xScratchIter)) - m_xControl->expand_row(*m_xScratchIter); + if (!m_xControl->get_row_expanded(*pCursor)) + m_xControl->expand_row(*pCursor); else - m_xControl->collapse_row(*m_xScratchIter); + m_xControl->collapse_row(*pCursor); - EntryDescriptor aDesc = GetEntryDescriptor(m_xScratchIter.get()); + EntryDescriptor aDesc = GetEntryDescriptor(pCursor.get()); switch (aDesc.GetType()) { case OBJ_TYPE_METHOD: diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx index 922c95d38d55..aa319ceec733 100644 --- a/basctl/source/basicide/macrodlg.cxx +++ b/basctl/source/basicide/macrodlg.cxx @@ -184,8 +184,8 @@ short MacroChooser::run() RestoreMacroDescription(); // #104198 Check if "wrong" document is active - bool bSelectedEntry = m_xBasicBox->get_cursor(m_xBasicBoxIter.get()); - EntryDescriptor aDesc(m_xBasicBox->GetEntryDescriptor(bSelectedEntry ? m_xBasicBoxIter.get() : nullptr)); + std::unique_ptr<weld::TreeIter> pCursor = m_xBasicBox->get_cursor(); + EntryDescriptor aDesc(m_xBasicBox->GetEntryDescriptor(pCursor.get())); const ScriptDocument& rSelectedDoc(aDesc.GetDocument()); // App Basic is always ok, so only check if shell was found @@ -242,9 +242,10 @@ void MacroChooser::EnableButton(weld::Button& rButton, bool bEnable) SbMethod* MacroChooser::GetMacro() { - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get())) + std::unique_ptr<weld::TreeIter> pCursor = m_xBasicBox->get_cursor(); + if (!pCursor) return nullptr; - SbModule* pModule = m_xBasicBox->FindModule(m_xBasicBoxIter.get()); + SbModule* pModule = m_xBasicBox->FindModule(pCursor.get()); if (!pModule) return nullptr; std::unique_ptr<weld::TreeIter> pSelected = m_xMacroBox->get_selected(); @@ -300,12 +301,17 @@ void MacroChooser::DeleteMacro() SbMethod* MacroChooser::CreateMacro() { SbMethod* pMethod = nullptr; - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get()) && !m_xBasicBox->get_iter_first(*m_xBasicBoxIter)) + std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor(); + if (!pIter) { - SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); - return nullptr; + pIter = m_xBasicBox->make_iterator(); + if (!m_xBasicBox->get_iter_first(*pIter)) + { + SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); + return nullptr; + } } - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pIter.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); OSL_ENSURE( aDocument.isAlive(), "MacroChooser::CreateMacro: no document!" ); if ( !aDocument.isAlive() ) @@ -376,14 +382,14 @@ void MacroChooser::SaveSetCurEntry(weld::TreeView& rBox, const weld::TreeIter& r void MacroChooser::CheckButtons() { - const bool bCurEntry = m_xBasicBox->get_cursor(m_xBasicBoxIter.get()); - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(bCurEntry ? m_xBasicBoxIter.get() : nullptr); + std::unique_ptr<weld::TreeIter> pCursor = m_xBasicBox->get_cursor(); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pCursor.get()); const bool bMacroEntry = bool(m_xMacroBox->get_selected()); SbMethod* pMethod = GetMacro(); // check, if corresponding libraries are readonly bool bReadOnly = false; - sal_uInt16 nDepth = bCurEntry ? m_xBasicBox->get_iter_depth(*m_xBasicBoxIter) : 0; + sal_uInt16 nDepth = pCursor ? m_xBasicBox->get_iter_depth(*pCursor) : 0; if ( nDepth == 1 || nDepth == 2 ) { const ScriptDocument& aDocument( aDesc.GetDocument() ); @@ -418,7 +424,7 @@ void MacroChooser::CheckButtons() EnableButton(*m_xOrganizeButton, !StarBASIC::IsRunning() && nMode == All); // m_xDelButton/m_xNewButton ->... - bool bProtected = bCurEntry && m_xBasicBox->IsEntryProtected(m_xBasicBoxIter.get()); + bool bProtected = pCursor && m_xBasicBox->IsEntryProtected(pCursor.get()); bool bShare = ( aDesc.GetLocation() == LIBRARY_LOCATION_SHARE ); bool bEnable = !StarBASIC::IsRunning() && nMode == All && !bProtected && !bReadOnly && !bShare; EnableButton(*m_xDelButton, bEnable); @@ -484,8 +490,8 @@ IMPL_LINK_NOARG(MacroChooser, MacroSelectHdl, weld::TreeView&, void) IMPL_LINK_NOARG(MacroChooser, BasicSelectHdl, weld::TreeView&, void) { SbModule* pModule = nullptr; - if (m_xBasicBox->get_cursor(m_xBasicBoxIter.get())) - pModule = m_xBasicBox->FindModule(m_xBasicBoxIter.get()); + if (std::unique_ptr<weld::TreeIter> pCursor = m_xBasicBox->get_cursor()) + pModule = m_xBasicBox->FindModule(pCursor.get()); m_xMacroBox->clear(); if (pModule) { @@ -517,27 +523,27 @@ IMPL_LINK_NOARG(MacroChooser, EditModifyHdl, weld::Entry&, void) { // select the module in which the macro is put at "new", // if BasicManager or Lib is selecting - if (m_xBasicBox->get_cursor(m_xBasicBoxIter.get())) + if (std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor()) { - sal_uInt16 nDepth = m_xBasicBox->get_iter_depth(*m_xBasicBoxIter); - if (nDepth == 1 && m_xBasicBox->IsEntryProtected(m_xBasicBoxIter.get())) + sal_uInt16 nDepth = m_xBasicBox->get_iter_depth(*pIter); + if (nDepth == 1 && m_xBasicBox->IsEntryProtected(pIter.get())) { // then put to the respective Std-Lib... - m_xBasicBox->iter_parent(*m_xBasicBoxIter); - m_xBasicBox->iter_children(*m_xBasicBoxIter); + m_xBasicBox->iter_parent(*pIter); + m_xBasicBox->iter_children(*pIter); } if (nDepth < 2) { std::unique_ptr<weld::TreeIter> xNewEntry(m_xBasicBox->make_iterator()); - m_xBasicBox->copy_iterator(*m_xBasicBoxIter, *xNewEntry); + m_xBasicBox->copy_iterator(*pIter, *xNewEntry); bool bCurEntry = true; do { - bCurEntry = m_xBasicBox->iter_children(*m_xBasicBoxIter); + bCurEntry = m_xBasicBox->iter_children(*pIter); if (bCurEntry) { - m_xBasicBox->copy_iterator(*m_xBasicBoxIter, *xNewEntry); - nDepth = m_xBasicBox->get_iter_depth(*m_xBasicBoxIter); + m_xBasicBox->copy_iterator(*pIter, *xNewEntry); + nDepth = m_xBasicBox->get_iter_depth(*pIter); } } while (bCurEntry && (nDepth < 2)); @@ -624,12 +630,17 @@ IMPL_LINK(MacroChooser, ButtonHdl, weld::Button&, rButton, void) } else if (&rButton == m_xEditButton.get() || &rButton == m_xDelButton.get() || &rButton == m_xNewButton.get()) { - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get()) && !m_xBasicBox->get_iter_first(*m_xBasicBoxIter)) + std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor(); + if (!pIter) { - SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); - return; + pIter = m_xBasicBox->make_iterator(); + if (!m_xBasicBox->get_iter_first(*pIter)) + { + SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); + return; + } } - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pIter.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); DBG_ASSERT( aDocument.isAlive(), "MacroChooser::ButtonHdl: no document, or document is dead!" ); if ( !aDocument.isAlive() ) @@ -712,12 +723,17 @@ IMPL_LINK(MacroChooser, ButtonHdl, weld::Button&, rButton, void) } else if (&rButton == m_xAssignButton.get()) { - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get()) && !m_xBasicBox->get_iter_first(*m_xBasicBoxIter)) + std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor(); + if (!pIter) { - SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); - return; + pIter = m_xBasicBox->make_iterator(); + if (!m_xBasicBox->get_iter_first(*pIter)) + { + SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); + return; + } } - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pIter.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); DBG_ASSERT( aDocument.isAlive(), "MacroChooser::ButtonHdl: no document, or document is dead!" ); if ( !aDocument.isAlive() ) @@ -743,23 +759,33 @@ IMPL_LINK(MacroChooser, ButtonHdl, weld::Button&, rButton, void) } else if (&rButton == m_xNewLibButton.get()) { - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get()) && !m_xBasicBox->get_iter_first(*m_xBasicBoxIter)) + std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor(); + if (!pIter) { - SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); - return; + pIter = m_xBasicBox->make_iterator(); + if (!m_xBasicBox->get_iter_first(*pIter)) + { + SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); + return; + } } - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pIter.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); createLibImpl(m_xDialog.get(), aDocument, nullptr, m_xBasicBox.get()); } else if (&rButton == m_xNewModButton.get()) { - if (!m_xBasicBox->get_cursor(m_xBasicBoxIter.get()) && !m_xBasicBox->get_iter_first(*m_xBasicBoxIter)) + std::unique_ptr<weld::TreeIter> pIter = m_xBasicBox->get_cursor(); + if (!pIter) { - SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); - return; + pIter = m_xBasicBox->make_iterator(); + if (!m_xBasicBox->get_iter_first(*pIter)) + { + SAL_WARN("basctl.basicide", "neither cursor set nor root entry to use as fallback"); + return; + } } - EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(m_xBasicBoxIter.get()); + EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(pIter.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); const OUString& aLibName( aDesc.GetLibName() ); createModImpl(m_xDialog.get(), aDocument, *m_xBasicBox, aLibName, OUString(), true); diff --git a/basctl/source/basicide/moduldl2.cxx b/basctl/source/basicide/moduldl2.cxx index 67a9cc6178a7..d47a5de7d3f0 100644 --- a/basctl/source/basicide/moduldl2.cxx +++ b/basctl/source/basicide/moduldl2.cxx @@ -374,8 +374,8 @@ LibPage::~LibPage() void LibPage::CheckButtons() { - std::unique_ptr<weld::TreeIter> xCur(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCur.get())) + std::unique_ptr<weld::TreeIter> xCur = m_xLibBox->get_cursor(); + if (!xCur) return; OUString aLibName = m_xLibBox->get_text(*xCur, 0); @@ -449,8 +449,8 @@ IMPL_LINK( LibPage, ButtonHdl, weld::Button&, rButton, void ) SfxUnoAnyItem aDocItem( SID_BASICIDE_ARG_DOCUMENT_MODEL, Any( m_aCurDocument.getDocumentOrNull() ) ); - std::unique_ptr<weld::TreeIter> xCurEntry(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xLibBox->get_cursor(); + if (!xCurEntry) return; OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0)); SfxStringItem aLibNameItem( SID_BASICIDE_ARG_LIBNAME, aLibName ); @@ -466,8 +466,8 @@ IMPL_LINK( LibPage, ButtonHdl, weld::Button&, rButton, void ) InsertLib(); else if (&rButton == m_xExportButton.get()) { - std::unique_ptr<weld::TreeIter> xCurEntry(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xLibBox->get_cursor(); + if (!xCurEntry) return; OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0)); Export(m_aCurDocument, aLibName, m_pDialog->getDialog()); @@ -476,8 +476,8 @@ IMPL_LINK( LibPage, ButtonHdl, weld::Button&, rButton, void ) DeleteCurrent(); else if (&rButton == m_xPasswordButton.get()) { - std::unique_ptr<weld::TreeIter> xCurEntry(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xLibBox->get_cursor(); + if (!xCurEntry) return; OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0)); @@ -541,8 +541,8 @@ IMPL_LINK( LibPage, CheckPasswordHdl, SvxPasswordDialog *, pDlg, bool ) { bool bRet = false; - std::unique_ptr<weld::TreeIter> xCurEntry(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xLibBox->get_cursor(); + if (!xCurEntry) return bRet; OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0)); @@ -1183,8 +1183,8 @@ void ExportAsBasic(const ScriptDocument& rScriptDocument, const OUString& aLibNa void LibPage::DeleteCurrent() { - std::unique_ptr<weld::TreeIter> xCurEntry(m_xLibBox->make_iterator()); - if (!m_xLibBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xLibBox->get_cursor(); + if (!xCurEntry) return; OUString aLibName(m_xLibBox->get_text(*xCurEntry, 0)); @@ -1393,8 +1393,8 @@ void createLibImpl(weld::Window* pWin, const ScriptDocument& rDocument, if( pBasicBox ) { - std::unique_ptr<weld::TreeIter> xIter(pBasicBox->make_iterator(nullptr)); - bool bValidIter = pBasicBox->get_cursor(xIter.get()); + std::unique_ptr<weld::TreeIter> xIter = pBasicBox->get_cursor(); + bool bValidIter = bool(xIter); std::unique_ptr<weld::TreeIter> xRootEntry(pBasicBox->make_iterator(xIter.get())); while (bValidIter) { diff --git a/basctl/source/basicide/moduldlg.cxx b/basctl/source/basicide/moduldlg.cxx index 5d22d66ceb3b..3b31b4be0d47 100644 --- a/basctl/source/basicide/moduldlg.cxx +++ b/basctl/source/basicide/moduldlg.cxx @@ -622,9 +622,7 @@ void ObjectPage::ActivatePage() void ObjectPage::CheckButtons() { // enable/disable edit button - std::unique_ptr<weld::TreeIter> xCurEntry(m_xBasicBox->make_iterator()); - if (!m_xBasicBox->get_cursor(xCurEntry.get())) - xCurEntry.reset(); + std::unique_ptr<weld::TreeIter> xCurEntry = m_xBasicBox->get_cursor(); EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(xCurEntry.get()); const ScriptDocument& aDocument( aDesc.GetDocument() ); const OUString& aLibName( aDesc.GetLibName() ); @@ -694,8 +692,8 @@ IMPL_LINK(ObjectPage, ButtonHdl, weld::Button&, rButton, void) SfxDispatcher* pDispatcher = GetDispatcher(); - std::unique_ptr<weld::TreeIter> xCurEntry(m_xBasicBox->make_iterator()); - if (!m_xBasicBox->get_cursor(xCurEntry.get())) + std::unique_ptr<weld::TreeIter> xCurEntry = m_xBasicBox->get_cursor(); + if (!xCurEntry) return; if (m_xBasicBox->get_iter_depth(*xCurEntry) >= 2) { @@ -748,9 +746,7 @@ bool ObjectPage::GetSelection( ScriptDocument& rDocument, OUString& rLibName ) { bool bRet = false; - std::unique_ptr<weld::TreeIter> xCurEntry(m_xBasicBox->make_iterator()); - if (!m_xBasicBox->get_cursor(xCurEntry.get())) - xCurEntry.reset(); + std::unique_ptr<weld::TreeIter> xCurEntry = m_xBasicBox->get_cursor(); EntryDescriptor aDesc = m_xBasicBox->GetEntryDescriptor(xCurEntry.get()); rDocument = aDesc.GetDocument(); rLibName = aDesc.GetLibName(); @@ -875,9 +871,7 @@ void ObjectPage::NewDialog() void ObjectPage::DeleteCurrent() { - std::unique_ptr<weld::TreeIter> xCurEntry(m_xBasicBox->make_iterator()); - if (!m_xBasicBox->get_cursor(xCurEntry.get())) - xCurEntry.reset(); + std::unique_ptr<weld::TreeIter> xCurEntry = m_xBasicBox->get_cursor(); DBG_ASSERT( xCurEntry, "No current entry!" ); if (!xCurEntry) return; @@ -895,7 +889,8 @@ void ObjectPage::DeleteCurrent() return; m_xBasicBox->remove(*xCurEntry); - if (m_xBasicBox->get_cursor(xCurEntry.get())) + xCurEntry = m_xBasicBox->get_cursor(); + if (xCurEntry) m_xBasicBox->select(*xCurEntry); if (SfxDispatcher* pDispatcher = GetDispatcher()) { diff --git a/basctl/source/inc/bastype2.hxx b/basctl/source/inc/bastype2.hxx index 6a51a7926b10..c031b82b6a95 100644 --- a/basctl/source/inc/bastype2.hxx +++ b/basctl/source/inc/bastype2.hxx @@ -253,7 +253,7 @@ public: 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); } - bool get_cursor(weld::TreeIter* pIter) const { return m_xControl->get_cursor(pIter); } + std::unique_ptr<weld::TreeIter> get_cursor() const { return m_xControl->get_cursor(); } void set_cursor(const weld::TreeIter& rIter) { m_xControl->set_cursor(rIter); } OUString get_text(const weld::TreeIter& rIter) const { return m_xControl->get_text(rIter); } void set_text(const weld::TreeIter& rIter, const OUString& rText) { m_xControl->set_text(rIter, rText); } diff --git a/cui/source/dialogs/hlmarkwn.cxx b/cui/source/dialogs/hlmarkwn.cxx index f35be2db2aea..096cb1a513f3 100644 --- a/cui/source/dialogs/hlmarkwn.cxx +++ b/cui/source/dialogs/hlmarkwn.cxx @@ -475,9 +475,7 @@ IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, DoubleClickApplyHdl_Impl, weld::TreeView&, b IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, ClickApplyHdl_Impl, weld::Button&, void) { - std::unique_ptr<weld::TreeIter> xEntry(mxLbTree->make_iterator()); - bool bEntry = mxLbTree->get_cursor(xEntry.get()); - if (bEntry) + if (std::unique_ptr<weld::TreeIter> xEntry = mxLbTree->get_cursor()) { TargetData* pData = weld::fromId<TargetData*>(mxLbTree->get_id(*xEntry)); if (pData->bIsTarget) @@ -490,9 +488,7 @@ IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, ClickApplyHdl_Impl, weld::Button&, void) // Click on Close-Button IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, ClickCloseHdl_Impl, weld::Button&, void) { - std::unique_ptr<weld::TreeIter> xEntry(mxLbTree->make_iterator()); - bool bEntry = mxLbTree->get_cursor(xEntry.get()); - if (bEntry) + if (std::unique_ptr<weld::TreeIter> xEntry = mxLbTree->get_cursor()) { TargetData* pUserData = weld::fromId<TargetData*>(mxLbTree->get_id(*xEntry)); OUString sLastSelectedMark = pUserData->aUStrLinkname; @@ -502,6 +498,7 @@ IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, ClickCloseHdl_Impl, weld::Button&, void) //underneath it is selected leave a dummy entry if (mxLbTree->get_row_expanded(*xEntry)) aLastSelectedPath.push_front(OUString()); + bool bEntry = true; while (bEntry) { aLastSelectedPath.push_front(mxLbTree->get_text(*xEntry)); diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx index e77234275703..b9c862347bf0 100644 --- a/cui/source/options/treeopt.cxx +++ b/cui/source/options/treeopt.cxx @@ -1255,9 +1255,8 @@ void OfaTreeOptionsDialog::initializeCurrentDialog(OptionsPageInfo*& pPageInfo, void OfaTreeOptionsDialog::SelectHdl_Impl() { - std::unique_ptr<weld::TreeIter> xEntry(xTreeLB->make_iterator()); - - if (!xTreeLB->get_cursor(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = xTreeLB->get_cursor(); + if (!xEntry) return; if (xCurrentPageEntry && xCurrentPageEntry->equal(*xEntry)) diff --git a/dbaccess/source/ui/app/AppController.cxx b/dbaccess/source/ui/app/AppController.cxx index b812ecb14876..d8adf5ba7e3b 100644 --- a/dbaccess/source/ui/app/AppController.cxx +++ b/dbaccess/source/ui/app/AppController.cxx @@ -1690,8 +1690,8 @@ bool OApplicationController::onEntryDoubleClick(const weld::TreeView& rTreeView) if (!pContainer) return false; // not handled - std::unique_ptr<weld::TreeIter> xHdlEntry = rTreeView.make_iterator(); - if (!rTreeView.get_cursor(xHdlEntry.get())) + std::unique_ptr<weld::TreeIter> xHdlEntry = rTreeView.get_cursor(); + if (!xHdlEntry) return false; if (!pContainer->isLeaf(rTreeView, *xHdlEntry)) diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index b7f8e42a4c8b..36b647b7f364 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -1633,8 +1633,8 @@ FeatureState SbaTableQueryBrowser::GetState(sal_uInt16 nId) const case ID_TREE_EDIT_DATABASE: { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xCurrentEntry(rTreeView.make_iterator()); - if (!rTreeView.get_cursor(xCurrentEntry.get())) + std::unique_ptr<weld::TreeIter> xCurrentEntry = rTreeView.get_cursor(); + if (!xCurrentEntry) return aReturn; EntryType eType = getEntryType(*xCurrentEntry); @@ -1806,16 +1806,15 @@ void SbaTableQueryBrowser::Execute(sal_uInt16 nId, const Sequence< PropertyValue case ID_TREE_EDIT_DATABASE: { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xIter(rTreeView.make_iterator()); - if (rTreeView.get_cursor(xIter.get())) + std::unique_ptr<weld::TreeIter> xIter = rTreeView.get_cursor(); + if (xIter) implAdministrate(*xIter); break; } case ID_TREE_CLOSE_CONN: { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xIter(rTreeView.make_iterator()); - if (rTreeView.get_cursor(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = rTreeView.get_cursor()) { xIter = m_pTreeView->GetRootLevelParent(xIter.get()); closeConnection(*xIter); @@ -1982,8 +1981,7 @@ void SbaTableQueryBrowser::Execute(sal_uInt16 nId, const Sequence< PropertyValue if(m_pTreeView->HasChildPathFocus()) { weld::TreeView& rTreeView = m_pTreeView->GetWidget(); - std::unique_ptr<weld::TreeIter> xCursor(rTreeView.make_iterator()); - if (rTreeView.get_cursor(xCursor.get())) + if (std::unique_ptr<weld::TreeIter> xCursor = rTreeView.get_cursor()) copyEntry(*xCursor); } else if (getBrowserView() && getBrowserView()->getVclControl() && !getBrowserView()->getVclControl()->IsEditing() && getBrowserView()->getVclControl()->GetSelectRowCount() < 1) diff --git a/dbaccess/source/ui/querydesign/TableWindow.cxx b/dbaccess/source/ui/querydesign/TableWindow.cxx index f8d1ff6448e2..c1d849449356 100644 --- a/dbaccess/source/ui/querydesign/TableWindow.cxx +++ b/dbaccess/source/ui/querydesign/TableWindow.cxx @@ -530,8 +530,7 @@ void OTableWindow::Command(const CommandEvent& rEvt) else { weld::TreeView& rTreeView = m_xListBox->get_widget(); - std::unique_ptr<weld::TreeIter> xCurrent = rTreeView.make_iterator(); - if (rTreeView.get_cursor(xCurrent.get())) + if (std::unique_ptr<weld::TreeIter> xCurrent = rTreeView.get_cursor()) ptWhere = rTreeView.get_row_area(*xCurrent).Center(); else ptWhere = m_xTitle->GetPosPixel(); diff --git a/dbaccess/source/ui/querydesign/TableWindowListBox.cxx b/dbaccess/source/ui/querydesign/TableWindowListBox.cxx index 1d159e129616..ed2cf13cfc72 100644 --- a/dbaccess/source/ui/querydesign/TableWindowListBox.cxx +++ b/dbaccess/source/ui/querydesign/TableWindowListBox.cxx @@ -249,8 +249,7 @@ void OTableWindowListBox::GetFocus() if (m_xTreeView) { - std::unique_ptr<weld::TreeIter> xCurrent = m_xTreeView->make_iterator(); - if (m_xTreeView->get_cursor(xCurrent.get())) + if (std::unique_ptr<weld::TreeIter> xCurrent = m_xTreeView->get_cursor()) { m_xTreeView->unselect_all(); m_xTreeView->select(*xCurrent); @@ -266,8 +265,8 @@ IMPL_LINK_NOARG(OTableWindowListBox, OnDoubleClick, weld::TreeView&, bool) vcl::Window* pParent = Window::GetParent(); OSL_ENSURE(pParent != nullptr, "OTableWindowListBox::OnDoubleClick : have no Parent !"); - std::unique_ptr<weld::TreeIter> xCurrent = m_xTreeView->make_iterator(); - if (!m_xTreeView->get_cursor(xCurrent.get())) + std::unique_ptr<weld::TreeIter> xCurrent = m_xTreeView->get_cursor(); + if (!xCurrent) return false; static_cast<OTableWindow*>(pParent)->OnEntryDoubleClicked(*xCurrent); diff --git a/formula/source/ui/dlg/structpg.cxx b/formula/source/ui/dlg/structpg.cxx index 7683a9cb8229..13668f03fe7f 100644 --- a/formula/source/ui/dlg/structpg.cxx +++ b/formula/source/ui/dlg/structpg.cxx @@ -131,8 +131,7 @@ IMPL_LINK(StructPage, SelectHdl, weld::TreeView&, rTlb, void) if (&rTlb == m_xTlbStruct.get()) { - std::unique_ptr<weld::TreeIter> xCurEntry(m_xTlbStruct->make_iterator()); - if (m_xTlbStruct->get_cursor(xCurEntry.get())) + if (std::unique_ptr<weld::TreeIter> xCurEntry = m_xTlbStruct->get_cursor()) { pSelectedToken = weld::fromId<const FormulaToken*>(m_xTlbStruct->get_id(*xCurEntry)); if (pSelectedToken) diff --git a/fpicker/source/office/fileview.cxx b/fpicker/source/office/fileview.cxx index f3098dc2376d..d154d88cfcd1 100644 --- a/fpicker/source/office/fileview.cxx +++ b/fpicker/source/office/fileview.cxx @@ -160,7 +160,7 @@ public: void scroll_to_row(const weld::TreeIter& rIter) { mxTreeView->scroll_to_row(rIter); } void set_cursor(int nPos) { mxTreeView->set_cursor(nPos); } void set_cursor(const weld::TreeIter& rIter) { mxTreeView->set_cursor(rIter); } - bool get_cursor(weld::TreeIter* pIter) const { return mxTreeView->get_cursor(pIter); } + std::unique_ptr<weld::TreeIter> get_cursor() const { return mxTreeView->get_cursor(); } bool get_iter_first(weld::TreeIter& rIter) const { return mxTreeView->get_iter_first(rIter); } std::unique_ptr<weld::TreeIter> get_selected() const { return mxTreeView->get_selected(); } @@ -1537,11 +1537,10 @@ void SvtFileView_Impl::Resort_Impl( sal_Int16 nColumn, bool bAscending ) // reset the quick search index mxView->ResetQuickSearch_Impl( nullptr ); - std::unique_ptr<weld::TreeIter> xEntry(mxView->make_iterator()); - bool bEntry = mxView->get_cursor(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = mxView->get_cursor(); OUString aEntryURL; - if (bEntry && !mxView->get_id(*xEntry).isEmpty()) + if (xEntry && !mxView->get_id(*xEntry).isEmpty()) aEntryURL = weld::fromId<SvtContentEntry*>(mxView->get_id(*xEntry))->maURL; mnSortColumn = nColumn; diff --git a/fpicker/source/office/foldertree.cxx b/fpicker/source/office/foldertree.cxx index a3947ee8f0a1..821210a076d6 100644 --- a/fpicker/source/office/foldertree.cxx +++ b/fpicker/source/office/foldertree.cxx @@ -103,10 +103,9 @@ void FolderTree::FillTreeEntry( const OUString & rUrl, const ::std::vector< std: { SetTreePath(rUrl); - std::unique_ptr<weld::TreeIter> xParent(m_xTreeView->make_iterator()); - bool bParent = m_xTreeView->get_cursor(xParent.get()); + std::unique_ptr<weld::TreeIter> xParent = m_xTreeView->get_cursor(); - if (!bParent || m_xTreeView->get_row_expanded(*xParent)) + if (!xParent || m_xTreeView->get_row_expanded(*xParent)) return; OUString sFolderImage(RID_BMP_FOLDER); diff --git a/include/vcl/weld/ItemView.hxx b/include/vcl/weld/ItemView.hxx index 820a6224d0d1..a040a96441e6 100644 --- a/include/vcl/weld/ItemView.hxx +++ b/include/vcl/weld/ItemView.hxx @@ -54,7 +54,7 @@ public: virtual std::unique_ptr<weld::TreeIter> get_selected() const = 0; int get_cursor_index() const; - virtual bool get_cursor(TreeIter* pIter) const = 0; + virtual std::unique_ptr<TreeIter> get_cursor() const = 0; void set_cursor(const TreeIter& rIter); // Don't select when frozen, select after thaw. Note selection doesn't survive a freeze. diff --git a/reportdesign/source/ui/dlg/Navigator.cxx b/reportdesign/source/ui/dlg/Navigator.cxx index 033347ceeabb..20542fbafd44 100644 --- a/reportdesign/source/ui/dlg/Navigator.cxx +++ b/reportdesign/source/ui/dlg/Navigator.cxx @@ -328,10 +328,9 @@ IMPL_LINK_NOARG(NavigatorTree, OnEntrySelDesel, weld::TreeView&, void) if ( !m_pSelectionListener->locked() ) { m_pSelectionListener->lock(); - std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->make_iterator(); - bool bEntry = m_xTreeView->get_cursor(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); uno::Any aSelection; - if (bEntry && m_xTreeView->is_selected(*xEntry)) + if (xEntry && m_xTreeView->is_selected(*xEntry)) aSelection <<= weld::fromId<UserData*>(m_xTreeView->get_id(*xEntry))->getContent(); m_rController.select(aSelection); m_pSelectionListener->unlock(); diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx index f6e3c2c16e32..9528000fa9c8 100644 --- a/sc/source/ui/cctrl/checklistmenu.cxx +++ b/sc/source/ui/cctrl/checklistmenu.cxx @@ -755,8 +755,8 @@ void ScCheckListMenuControl::setAllMemberState(bool bSet) void ScCheckListMenuControl::selectCurrentMemberOnly(bool bSet) { setAllMemberState(!bSet); - std::unique_ptr<weld::TreeIter> xEntry = mpChecks->make_iterator(); - if (!mpChecks->get_cursor(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = mpChecks->get_cursor(); + if (!xEntry) return; mpChecks->set_toggle(*xEntry, bSet ? TRISTATE_TRUE : TRISTATE_FALSE); } @@ -798,11 +798,8 @@ IMPL_LINK(ScCheckListMenuControl, ButtonHdl, weld::Button&, rBtn, void) close(false); else if (&rBtn == mxBtnSelectSingle.get() || &rBtn == mxBtnUnselectSingle.get()) { - std::unique_ptr<weld::TreeIter> xEntry = mpChecks->make_iterator(); - bool bEntry = mpChecks->get_cursor(xEntry.get()); - if (!bEntry) - xEntry.reset(); - if (bEntry && mpChecks->get_sensitive(*xEntry, 0)) + std::unique_ptr<weld::TreeIter> xEntry = mpChecks->get_cursor(); + if (xEntry && mpChecks->get_sensitive(*xEntry, 0)) { selectCurrentMemberOnly(&rBtn == mxBtnSelectSingle.get()); Check(xEntry.get()); @@ -1520,9 +1517,8 @@ IMPL_LINK(ScCheckListMenuControl, KeyInputHdl, const KeyEvent&, rKEvt, bool) if ( rKey.GetCode() == KEY_RETURN || rKey.GetCode() == KEY_SPACE ) { - std::unique_ptr<weld::TreeIter> xEntry = mpChecks->make_iterator(); - bool bEntry = mpChecks->get_cursor(xEntry.get()); - if (bEntry && mpChecks->get_sensitive(*xEntry, 0)) + std::unique_ptr<weld::TreeIter> xEntry = mpChecks->get_cursor(); + if (xEntry && mpChecks->get_sensitive(*xEntry, 0)) { bool bOldCheck = mpChecks->get_toggle(*xEntry) == TRISTATE_TRUE; CheckEntry(*xEntry, !bOldCheck); diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx index 2dee766a189a..8bdfaf151e88 100644 --- a/sc/source/ui/miscdlgs/acredlin.cxx +++ b/sc/source/ui/miscdlgs/acredlin.cxx @@ -1375,10 +1375,10 @@ void ScAcceptChgDlg::RemoveEntries(sal_uLong nStartAction,sal_uLong nEndAction) weld::TreeView& rTreeView = pTheView->GetWidget(); ScRedlinData *pEntryData=nullptr; - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - if (rTreeView.get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_cursor()) pEntryData = weld::fromId<ScRedlinData*>(rTreeView.get_id(*xEntry)); + std::unique_ptr<weld::TreeIter> xEntry = rTreeView.make_iterator(); if (!rTreeView.get_iter_first(*xEntry)) return; @@ -1580,9 +1580,8 @@ IMPL_LINK(ScAcceptChgDlg, CommandHdl, const CommandEvent&, rCEvt, bool) return false; weld::TreeView& rTreeView = pTheView->GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - bool bEntry = rTreeView.get_cursor(xEntry.get()); - if (bEntry) + std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_cursor(); + if (xEntry) rTreeView.select(*xEntry); int nSortedCol = rTreeView.get_sort_column(); @@ -1591,7 +1590,7 @@ IMPL_LINK(ScAcceptChgDlg, CommandHdl, const CommandEvent&, rCEvt, bool) m_xPopup->set_sensitive(u"calcedit"_ustr, false); - if (pDoc->IsDocEditable() && bEntry) + if (pDoc->IsDocEditable() && xEntry) { ScRedlinData *pEntryData = weld::fromId<ScRedlinData*>(rTreeView.get_id(*xEntry)); if (pEntryData) @@ -1608,7 +1607,7 @@ IMPL_LINK(ScAcceptChgDlg, CommandHdl, const CommandEvent&, rCEvt, bool) { if (sCommand == "calcedit") { - if (bEntry) + if (xEntry) { ScRedlinData *pEntryData = weld::fromId<ScRedlinData*>(rTreeView.get_id(*xEntry)); if (pEntryData) diff --git a/sc/source/ui/miscdlgs/conflictsdlg.cxx b/sc/source/ui/miscdlgs/conflictsdlg.cxx index a7cfc15d2239..4f9b8af4d024 100644 --- a/sc/source/ui/miscdlgs/conflictsdlg.cxx +++ b/sc/source/ui/miscdlgs/conflictsdlg.cxx @@ -407,9 +407,8 @@ void ScConflictsDlg::SetActionString(ScChangeAction& rAction, ScDocument& rDoc, void ScConflictsDlg::HandleListBoxSelection() { weld::TreeView& rTreeView = m_xLbConflicts->GetWidget(); - std::unique_ptr<weld::TreeIter> xEntry(rTreeView.make_iterator()); - bool bSelEntry = rTreeView.get_cursor(xEntry.get()); - if (!bSelEntry) + std::unique_ptr<weld::TreeIter> xEntry = rTreeView.get_cursor(); + if (!xEntry) xEntry = rTreeView.get_selected(); if (!xEntry) return; diff --git a/sc/source/ui/namedlg/namemgrtable.cxx b/sc/source/ui/namedlg/namemgrtable.cxx index b1b1cec1e98c..d540c60d6903 100644 --- a/sc/source/ui/namedlg/namemgrtable.cxx +++ b/sc/source/ui/namedlg/namemgrtable.cxx @@ -23,8 +23,7 @@ void ScRangeManagerTable::GetCurrentLine(ScRangeNameLine& rLine) { - std::unique_ptr<weld::TreeIter> xCurrentEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xCurrentEntry.get())) + if (std::unique_ptr<weld::TreeIter> xCurrentEntry = m_xTreeView->get_cursor()) GetLine(rLine, *xCurrentEntry); } diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx index 03ccbd8ee0db..aaeed24d6870 100644 --- a/sc/source/ui/navipi/content.cxx +++ b/sc/source/ui/navipi/content.cxx @@ -335,9 +335,7 @@ IMPL_LINK_NOARG(ScContentTree, ContentDoubleClickHdl, weld::TreeView&, bool) { ScContentId nType; sal_uLong nChild; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xEntry.get())) - xEntry.reset(); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); GetEntryIndexes(nType, nChild, xEntry.get()); if (xEntry && (nType != ScContentId::ROOT) && (nChild != SC_CONTENT_NOCHILD)) @@ -454,10 +452,7 @@ IMPL_LINK(ScContentTree, KeyInputHdl, const KeyEvent&, rKEvt, bool) break; case 0: { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xEntry.get())) - xEntry.reset(); - if (xEntry) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor()) { ScContentId nType; sal_uLong nChild; @@ -488,9 +483,7 @@ IMPL_LINK(ScContentTree, KeyInputHdl, const KeyEvent&, rKEvt, bool) bUsed = true; ScContentId nType; sal_uLong nChild; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xEntry.get())) - xEntry.reset(); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); GetEntryIndexes(nType, nChild, xEntry.get()); if (xEntry && (nType != ScContentId::ROOT) && (nChild != SC_CONTENT_NOCHILD)) @@ -556,9 +549,7 @@ IMPL_LINK(ScContentTree, CommandHdl, const CommandEvent&, rCEvt, bool) ScContentId nType; sal_uLong nChild; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xEntry.get())) - xEntry.reset(); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); GetEntryIndexes(nType, nChild, xEntry.get()); switch ( rCEvt.GetCommand() ) @@ -1247,10 +1238,7 @@ IMPL_LINK(ScContentTree, DragBeginHdl, bool&, rUnsetDragIcon, bool) ScContentId nType; sal_uLong nChild; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xEntry.get())) - xEntry.reset(); - + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); GetEntryIndexes(nType, nChild, xEntry.get()); if( xEntry && @@ -1388,8 +1376,7 @@ void ScContentTree::ToggleRoot() // after selection ScContentId nNew = ScContentId::ROOT; if ( nRootType == ScContentId::ROOT ) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor()) { std::unique_ptr<weld::TreeIter> xParent(m_xTreeView->make_iterator(xEntry.get())); if (!m_xTreeView->iter_parent(*xParent)) @@ -1638,9 +1625,7 @@ void ScContentTree::StoreNavigatorSettings() pSettings->SetExpanded( nEntry, bExp ); } - std::unique_ptr<weld::TreeIter> xCurEntry(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xCurEntry.get())) - xCurEntry.reset(); + std::unique_ptr<weld::TreeIter> xCurEntry = m_xTreeView->get_cursor(); ScContentId nRoot; sal_uLong nChild; diff --git a/sc/source/ui/xmlsource/xmlsourcedlg.cxx b/sc/source/ui/xmlsource/xmlsourcedlg.cxx index e6b947b299fb..9a1d96cff1e4 100644 --- a/sc/source/ui/xmlsource/xmlsourcedlg.cxx +++ b/sc/source/ui/xmlsource/xmlsourcedlg.cxx @@ -235,8 +235,8 @@ std::unique_ptr<weld::TreeIter> getReferenceEntry(const weld::TreeView& rTree, c void ScXMLSourceDlg::TreeItemSelected() { - std::unique_ptr<weld::TreeIter> xEntry(mxLbTree->make_iterator()); - if (!mxLbTree->get_cursor(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = mxLbTree->get_cursor(); + if (!xEntry) return; mxLbTree->unselect_all(); diff --git a/sd/source/ui/animations/CustomAnimationList.cxx b/sd/source/ui/animations/CustomAnimationList.cxx index 4337edf74e56..add1867981ee 100644 --- a/sd/source/ui/animations/CustomAnimationList.cxx +++ b/sd/source/ui/animations/CustomAnimationList.cxx @@ -503,9 +503,7 @@ IMPL_LINK(CustomAnimationList, DragBeginHdl, bool&, rUnsetDragIcon, bool) }); // Note: pEntry is the effect with focus (if multiple effects are selected) - mxDndEffectDragging = mxTreeView->make_iterator(); - if (!mxTreeView->get_cursor(mxDndEffectDragging.get())) - mxDndEffectDragging.reset(); + mxDndEffectDragging = mxTreeView->get_cursor(); // Allow normal processing. return false; @@ -596,8 +594,7 @@ IMPL_LINK(CustomAnimationList, KeyInputHdl, const KeyEvent&, rKEvt, bool) return true; case KEY_SPACE: { - std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->make_iterator(); - if (mxTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->get_cursor()) { auto aRect = mxTreeView->get_row_area(*xEntry); const Point aPos(aRect.getOpenWidth() / 2, aRect.getOpenHeight() / 2); @@ -690,8 +687,6 @@ void CustomAnimationList::update() ::tools::Long nFirstSelOld = -1; ::tools::Long nLastSelOld = -1; - std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->make_iterator(); - if( mpMainSequence ) { std::unique_ptr<weld::TreeIter> xLastSelectedEntry; @@ -744,7 +739,7 @@ void CustomAnimationList::update() if (xLastVisibleEntry) nLastVis = weld::GetAbsPos(*mxTreeView, *xLastVisibleEntry); - if (mxTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->get_cursor()) { CustomAnimationListEntryItem* pEntry = weld::fromId<CustomAnimationListEntryItem*>(mxTreeView->get_id(*xEntry)); aCurrent = pEntry->getEffect(); @@ -798,6 +793,7 @@ void CustomAnimationList::update() std::vector<std::unique_ptr<weld::TreeIter>> aNewSelection; // restore selection state, expand state, and current-entry (under cursor) + std::unique_ptr<weld::TreeIter> xEntry = mxTreeView->make_iterator(); if (mxTreeView->get_iter_first(*xEntry)) { do diff --git a/sd/source/ui/dlg/sdtreelb.cxx b/sd/source/ui/dlg/sdtreelb.cxx index 0e3210633018..e91f96d42afd 100644 --- a/sd/source/ui/dlg/sdtreelb.cxx +++ b/sd/source/ui/dlg/sdtreelb.cxx @@ -362,8 +362,8 @@ IMPL_LINK(SdPageObjsTLV, KeyInputHdl, const KeyEvent&, rKEvt, bool) } if (rKeyCode.GetCode() == KEY_RETURN) { - std::unique_ptr<weld::TreeIter> xCursor(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xCursor.get()) && m_xTreeView->iter_has_child(*xCursor)) + std::unique_ptr<weld::TreeIter> xCursor = m_xTreeView->get_cursor(); + if (xCursor && m_xTreeView->iter_has_child(*xCursor)) { if (m_xTreeView->get_row_expanded(*xCursor)) m_xTreeView->collapse_row(*xCursor); @@ -476,11 +476,10 @@ bool SdPageObjsTLV::DoDrag() m_xDropTargetHelper->SetDrawView(pViewShell->GetDrawView()); m_xDropTargetHelper->SetOrderFrontToBack(m_bOrderFrontToBack); - std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->make_iterator(); - bool bUserData = m_xTreeView->get_cursor(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); SdrObject* pObject = nullptr; - sal_Int64 nUserData = bUserData ? m_xTreeView->get_id(*xEntry).toInt64() : 0; + sal_Int64 nUserData = xEntry ? m_xTreeView->get_id(*xEntry).toInt64() : 0; if (nUserData != 1) pObject = reinterpret_cast<SdrObject*>(nUserData); if (pObject != nullptr) @@ -906,8 +905,8 @@ void SdPageObjsTLV::Select() { // Only for page/slide entry and only if page/slide entry dragging is re-enabled. // Commit 1b031eb1ba6c529ce67ff8f471afee414d64a098 disabled page/slide entry dragging. - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xIter.get()) && m_xTreeView->get_iter_depth(*xIter) == 0 + std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_cursor(); + if (xIter && m_xTreeView->get_iter_depth(*xIter) == 0 && m_pDoc->GetSdPageCount(PageKind::Standard) == 1) { // Can not move away the last slide in a document. diff --git a/sd/source/ui/inc/sdtreelb.hxx b/sd/source/ui/inc/sdtreelb.hxx index 2452444bf590..9fce4578a6cb 100644 --- a/sd/source/ui/inc/sdtreelb.hxx +++ b/sd/source/ui/inc/sdtreelb.hxx @@ -293,16 +293,14 @@ public: OUString get_cursor_text() const { - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_cursor()) return m_xTreeView->get_text(*xIter); return OUString(); } OUString get_cursor_id() const { - std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xIter.get())) + if (std::unique_ptr<weld::TreeIter> xIter = m_xTreeView->get_cursor()) return m_xTreeView->get_id(*xIter); return OUString(); } diff --git a/sfx2/source/control/charmapcontainer.cxx b/sfx2/source/control/charmapcontainer.cxx index 96a1324d896c..f48e0aace175 100644 --- a/sfx2/source/control/charmapcontainer.cxx +++ b/sfx2/source/control/charmapcontainer.cxx @@ -378,8 +378,9 @@ IMPL_LINK(SfxCharmapContainer, ItemViewFocusInHdl, weld::Widget&, rWidget, void) { weld::IconView& rIconView = dynamic_cast<weld::IconView&>(rWidget); std::unique_ptr<weld::TreeIter> pIter = rIconView.make_iterator(); - if (rIconView.get_cursor(pIter.get())) - rIconView.select(*pIter); + std::unique_ptr<weld::TreeIter> pCursor = rIconView.get_cursor(); + if (pCursor) + rIconView.select(*pCursor); else if (rIconView.get_iter_first(*pIter)) rIconView.select(*pIter); else diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx index 2c78bfd0fcf3..6f06ffb2d84a 100644 --- a/sfx2/source/dialog/StyleList.cxx +++ b/sfx2/source/dialog/StyleList.cxx @@ -1829,8 +1829,8 @@ IMPL_LINK(StyleList, CustomRenderHdl, weld::TreeView::render_args, aPayload, voi // Selection of a template during the Watercan-Status IMPL_LINK(StyleList, FmtSelectHdl, weld::TreeView&, rListBox, void) { - std::unique_ptr<weld::TreeIter> xHdlEntry = rListBox.make_iterator(); - if (!rListBox.get_cursor(xHdlEntry.get())) + std::unique_ptr<weld::TreeIter> xHdlEntry = rListBox.get_cursor(); + if (!xHdlEntry) return; m_pParentDialog->SelectStyle(rListBox.get_text(*xHdlEntry), true, *this); diff --git a/svx/source/form/filtnav.cxx b/svx/source/form/filtnav.cxx index ec37f26fc083..f981ee0145e6 100644 --- a/svx/source/form/filtnav.cxx +++ b/svx/source/form/filtnav.cxx @@ -1453,9 +1453,10 @@ IMPL_LINK(FmFilterNavigator, PopupMenuHdl, const CommandEvent&, rEvt, bool) { // the place where it was clicked Point aWhere; - std::unique_ptr<weld::TreeIter> xClicked(m_xTreeView->make_iterator()); + std::unique_ptr<weld::TreeIter> xClicked; if (rEvt.IsMouseEvent()) { + xClicked = m_xTreeView->make_iterator(); aWhere = rEvt.GetMousePosPixel(); if (!m_xTreeView->get_dest_row_at_pos(aWhere, xClicked.get(), false)) break; @@ -1469,7 +1470,8 @@ IMPL_LINK(FmFilterNavigator, PopupMenuHdl, const CommandEvent&, rEvt, bool) } else { - if (!m_xTreeView->get_cursor(xClicked.get())) + xClicked = m_xTreeView->get_cursor(); + if (!xClicked) break; aWhere = m_xTreeView->get_row_area(*xClicked).Center(); } diff --git a/svx/source/form/navigatortree.cxx b/svx/source/form/navigatortree.cxx index 9466a8bf1b51..6a329efe87fc 100644 --- a/svx/source/form/navigatortree.cxx +++ b/svx/source/form/navigatortree.cxx @@ -227,8 +227,7 @@ namespace svxform bool NavigatorTree::implAllowExchange( sal_Int8 _nAction, bool* _pHasNonHidden ) { - bool bCurEntry = m_xTreeView->get_cursor(nullptr); - if (!bCurEntry) + if (!m_xTreeView->get_cursor()) return false; // Information for AcceptDrop and Execute Drop @@ -262,7 +261,7 @@ namespace svxform return false; m_aControlExchange.prepareDrag(); - m_aControlExchange->setFocusEntry(m_xTreeView->get_cursor(nullptr)); + m_aControlExchange->setFocusEntry(bool(m_xTreeView->get_cursor())); for (const auto& rpEntry : m_arrCurrentSelection) m_aControlExchange->addSelectedEntry(m_xTreeView->make_iterator(rpEntry.get())); @@ -330,8 +329,8 @@ namespace svxform if (m_arrCurrentSelection.empty()) // only happens with context menu via keyboard break; - std::unique_ptr<weld::TreeIter> xCurrent(m_xTreeView->make_iterator()); - if (!m_xTreeView->get_cursor(xCurrent.get())) + std::unique_ptr<weld::TreeIter> xCurrent = m_xTreeView->get_cursor(); + if (!xCurrent) break; ptWhere = m_xTreeView->get_row_area(*xCurrent).Center(); } diff --git a/sw/source/uibase/sidebar/QuickFindPanel.cxx b/sw/source/uibase/sidebar/QuickFindPanel.cxx index a975c5e17cd0..128ea7f81206 100644 --- a/sw/source/uibase/sidebar/QuickFindPanel.cxx +++ b/sw/source/uibase/sidebar/QuickFindPanel.cxx @@ -428,8 +428,8 @@ IMPL_LINK(QuickFindPanel, SearchFindsListRender, weld::TreeView::render_args, aP IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListSelectionChangedHandler, weld::TreeView&, void) { - std::unique_ptr<weld::TreeIter> xEntry(m_xSearchFindsList->make_iterator()); - if (!m_xSearchFindsList->get_cursor(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = m_xSearchFindsList->get_cursor(); + if (!xEntry) return; OUString sId = m_xSearchFindsList->get_id(*xEntry); @@ -478,8 +478,8 @@ IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListSelectionChangedHandler, weld::Tr IMPL_LINK_NOARG(QuickFindPanel, SearchFindsListRowActivatedHandler, weld::TreeView&, bool) { - std::unique_ptr<weld::TreeIter> xEntry(m_xSearchFindsList->make_iterator()); - if (!m_xSearchFindsList->get_cursor(xEntry.get())) + std::unique_ptr<weld::TreeIter> xEntry = m_xSearchFindsList->get_cursor(); + if (!xEntry) return false; // check for page number entry diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx index 0e7e5eb3c176..757e8226d928 100644 --- a/sw/source/uibase/utlui/content.cxx +++ b/sw/source/uibase/utlui/content.cxx @@ -3194,9 +3194,8 @@ IMPL_LINK_NOARG(SwContentTree, ContentDoubleClickHdl, weld::TreeView&, bool) bool bConsumed = false; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xEntry.get()) && lcl_IsContent(*xEntry, *m_xTreeView) && - (State::HIDDEN != m_eState)) + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); + if (xEntry && lcl_IsContent(*xEntry, *m_xTreeView) && (State::HIDDEN != m_eState)) { SwContent* pCnt = weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry)); assert(pCnt && "no UserData"); @@ -3214,11 +3213,10 @@ IMPL_LINK_NOARG(SwContentTree, AsyncContentDoubleClickHdl, void*, void) { m_nRowActivateEventId = nullptr; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - bool bEntry = m_xTreeView->get_cursor(xEntry.get()); + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); // Is it a content type? - OSL_ENSURE(bEntry, "no current entry!"); - if (bEntry) + OSL_ENSURE(xEntry, "no current entry!"); + if (xEntry) { if (lcl_IsContentType(*xEntry, *m_xTreeView) && !m_xTreeView->iter_has_child(*xEntry)) { @@ -3540,9 +3538,8 @@ bool SwContentTree::FillTransferData(TransferDataContainer& rTransfer) SwWrtShell* pWrtShell = GetWrtShell(); OSL_ENSURE(pWrtShell, "no Shell!"); - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - bool bEntry = m_xTreeView->get_cursor(xEntry.get()); - if (!bEntry || lcl_IsContentType(*xEntry, *m_xTreeView) || !pWrtShell) + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); + if (!xEntry || lcl_IsContentType(*xEntry, *m_xTreeView) || !pWrtShell) return false; assert(dynamic_cast<SwContent*>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry)))); SwContent* pCnt = weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry)); @@ -3746,9 +3743,8 @@ void SwContentTree::ToggleToRoot() { if(!m_bIsRoot) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - bool bEntry = m_xTreeView->get_cursor(xEntry.get()); - if (bEntry) + std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor(); + if (xEntry) { const SwContentType* pCntType; if (lcl_IsContentType(*xEntry, *m_xTreeView)) @@ -4197,8 +4193,7 @@ void SwContentTree::Notify(SfxBroadcaster & rBC, SfxHint const& rHint) { m_bIsLastReadOnly = bReadOnly; - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor()) { m_xTreeView->select(*xEntry); UpdateContentFunctionsToolbar(); @@ -5647,8 +5642,7 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool) //multi-selection. else if (aCode.GetCode() == KEY_SPACE && 0 == aCode.GetModifier()) { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor()) { if (State::HIDDEN != m_eState) { @@ -5734,8 +5728,7 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool) } else { - std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator()); - if (m_xTreeView->get_cursor(xEntry.get())) + if (std::unique_ptr<weld::TreeIter> xEntry = m_xTreeView->get_cursor()) { SwContent* pCnt = dynamic_cast<SwContent*>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry))); if (pCnt && pCnt->GetParent()->GetType() == ContentTypeId::OUTLINE) diff --git a/vcl/inc/qt5/QtInstanceItemView.hxx b/vcl/inc/qt5/QtInstanceItemView.hxx index a5e5752709e7..59b0442640b9 100644 --- a/vcl/inc/qt5/QtInstanceItemView.hxx +++ b/vcl/inc/qt5/QtInstanceItemView.hxx @@ -62,7 +62,7 @@ public: virtual std::unique_ptr<weld::TreeIter> get_selected() const override; - virtual bool get_cursor(weld::TreeIter* pIter) const override; + virtual std::unique_ptr<weld::TreeIter> get_cursor() const override; virtual void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) override; diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index b59b35e34a38..112db73615e1 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1529,7 +1529,7 @@ public: virtual std::unique_ptr<weld::TreeIter> get_selected() const override; - virtual bool get_cursor(weld::TreeIter* pIter) const override; + virtual std::unique_ptr<weld::TreeIter> get_cursor() const override; virtual int n_children() const override; diff --git a/vcl/qt5/QtInstanceItemView.cxx b/vcl/qt5/QtInstanceItemView.cxx index ecf944884ba1..fdcd928a87a3 100644 --- a/vcl/qt5/QtInstanceItemView.cxx +++ b/vcl/qt5/QtInstanceItemView.cxx @@ -132,20 +132,18 @@ std::unique_ptr<weld::TreeIter> QtInstanceItemView::get_selected() const return pSelectedItem; } -bool QtInstanceItemView::get_cursor(weld::TreeIter* pIter) const +std::unique_ptr<weld::TreeIter> QtInstanceItemView::get_cursor() const { SolarMutexGuard g; - bool bRet = false; + std::unique_ptr<weld::TreeIter> pCursor; GetQtInstance().RunInMainThread([&] { const QModelIndex aCurrentIndex = getItemView().currentIndex(); - QtInstanceTreeIter* pQtIter = static_cast<QtInstanceTreeIter*>(pIter); - if (pQtIter) - pQtIter->setModelIndex(aCurrentIndex); - bRet = aCurrentIndex.isValid(); + if (aCurrentIndex.isValid()) + pCursor = std::make_unique<QtInstanceTreeIter>(aCurrentIndex); }); - return bRet; + return pCursor; } void QtInstanceItemView::selected_foreach(const std::function<bool(weld::TreeIter&)>& func) diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 9f7d2577beb5..f490b076f994 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -3602,13 +3602,13 @@ std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_selected() const return {}; } -bool SalInstanceItemView::get_cursor(weld::TreeIter* pIter) const +std::unique_ptr<weld::TreeIter> SalInstanceItemView::get_cursor() const { SvTreeListEntry* pEntry = m_pTreeListBox->GetCurEntry(); - auto pVclIter = static_cast<SalInstanceTreeIter*>(pIter); - if (pVclIter) - pVclIter->iter = pEntry; - return pEntry != nullptr; + if (pEntry) + return std::make_unique<SalInstanceTreeIter>(pEntry); + + return {}; } void SalInstanceItemView::do_select_all() diff --git a/vcl/source/weld/ItemView.cxx b/vcl/source/weld/ItemView.cxx index c9314a80d665..41f8a6ef895e 100644 --- a/vcl/source/weld/ItemView.cxx +++ b/vcl/source/weld/ItemView.cxx @@ -27,8 +27,7 @@ void ItemView::set_id(int pos, const OUString& rId) int ItemView::get_cursor_index() const { - std::unique_ptr<weld::TreeIter> pIter = make_iterator(); - if (get_cursor(pIter.get())) + if (std::unique_ptr<weld::TreeIter> pIter = get_cursor()) return get_iter_index_in_parent(*pIter); return -1; diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 7d4ecb45ccd4..e1dbeb3f1e25 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -14013,11 +14013,13 @@ private: { if (signal_row_activated()) return; - GtkInstanceTreeIter aIter(nullptr); - if (!get_cursor(&aIter)) + std::unique_ptr<weld::TreeIter> pIter = get_cursor(); + if (!pIter) return; - if (gtk_tree_model_iter_has_child(m_pTreeModel, &aIter.iter)) - get_row_expanded(aIter) ? collapse_row(aIter) : expand_row(aIter); + + GtkInstanceTreeIter* pGtkIter = static_cast<GtkInstanceTreeIter*>(pIter.get()); + if (gtk_tree_model_iter_has_child(m_pTreeModel, &pGtkIter->iter)) + get_row_expanded(*pIter) ? collapse_row(*pIter) : expand_row(*pIter); } static void signalRowActivated(GtkTreeView*, GtkTreePath*, GtkTreeViewColumn*, gpointer widget) @@ -14413,33 +14415,34 @@ private: if (pEvent->keyval != GDK_KEY_Left && pEvent->keyval != GDK_KEY_Right) return false; - GtkInstanceTreeIter aIter(nullptr); - if (!get_cursor(&aIter)) + std::unique_ptr<weld::TreeIter> pIter = get_cursor(); + if (!pIter) return false; - bool bHasChild = gtk_tree_model_iter_has_child(m_pTreeModel, &aIter.iter); + GtkInstanceTreeIter* pGtkIter = static_cast<GtkInstanceTreeIter*>(pIter.get()); + bool bHasChild = gtk_tree_model_iter_has_child(m_pTreeModel, &pGtkIter->iter); if (pEvent->keyval == GDK_KEY_Right) { - if (bHasChild && !get_row_expanded(aIter)) + if (bHasChild && !get_row_expanded(*pIter)) { - expand_row(aIter); + expand_row(*pIter); return true; } return false; } - if (bHasChild && get_row_expanded(aIter)) + if (bHasChild && get_row_expanded(*pIter)) { - collapse_row(aIter); + collapse_row(*pIter); return true; } - if (iter_parent(aIter)) + if (iter_parent(*pIter)) { unselect_all(); - set_cursor(aIter); - select(aIter); + set_cursor(*pIter); + select(*pIter); return true; } @@ -15551,19 +15554,17 @@ public: return {}; } - virtual bool get_cursor(weld::TreeIter* pIter) const override + virtual std::unique_ptr<weld::TreeIter> get_cursor() const override { - GtkInstanceTreeIter* pGtkIter = static_cast<GtkInstanceTreeIter*>(pIter); + GtkTreeIter iter; GtkTreePath* path; gtk_tree_view_get_cursor(m_pTreeView, &path, nullptr); - if (pGtkIter && path) - { - gtk_tree_model_get_iter(m_pTreeModel, &pGtkIter->iter, path); - } + if (path) + gtk_tree_model_get_iter(m_pTreeModel, &iter, path); if (!path) - return false; + return {}; gtk_tree_path_free(path); - return true; + return std::make_unique<GtkInstanceTreeIter>(iter); } virtual void do_set_cursor(const weld::TreeIter& rIter) override @@ -16917,17 +16918,20 @@ public: return {}; } - virtual bool get_cursor(weld::TreeIter* pIter) const override + virtual std::unique_ptr<weld::TreeIter> get_cursor() const override { - GtkInstanceTreeIter* pGtkIter = static_cast<GtkInstanceTreeIter*>(pIter); + GtkTreeIter iter; GtkTreePath* path; gtk_icon_view_get_cursor(m_pIconView, &path, nullptr); - if (pGtkIter && path) + if (path) { GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore); - gtk_tree_model_get_iter(pModel, &pGtkIter->iter, path); + gtk_tree_model_get_iter(pModel, &iter, path); } - return path != nullptr; + if (path) + return std::make_unique<GtkInstanceTreeIter>(iter); + + return {}; } virtual void do_set_cursor(const weld::TreeIter& rIter) override commit 363b9bfd97f89ff7639c96602e73aaae7e4d316c Author: Michael Weghorn <[email protected]> AuthorDate: Wed Dec 31 13:52:57 2025 +0100 Commit: Michael Weghorn <[email protected]> CommitDate: Sat Jan 3 08:11:17 2026 +0100 Move ThumbnailView::mxContextMenu to TemplateLocalView It is only used by that subclass (and subclasses of that subclass), so there's no need to have it in the ThumbnailView base class. Change-Id: Iafb2578ca90e9ccd50b5393621a34f56de6e55da Reviewed-on: https://gerrit.libreoffice.org/c/core/+/196385 Tested-by: Jenkins Reviewed-by: Michael Weghorn <[email protected]> diff --git a/dbaccess/source/ui/app/AppIconControl.cxx b/dbaccess/source/ui/app/AppIconControl.cxx index bd6e86dcb8b7..4d68ef11bb48 100644 --- a/dbaccess/source/ui/app/AppIconControl.cxx +++ b/dbaccess/source/ui/app/AppIconControl.cxx @@ -57,7 +57,7 @@ public: }; OApplicationIconControl::OApplicationIconControl(std::unique_ptr<weld::ScrolledWindow> xScroll) - : ThumbnailView(std::move(xScroll), nullptr) + : ThumbnailView(std::move(xScroll)) , m_pActionListener(nullptr) , m_nMaxWidth(0) , m_nMaxHeight(0) diff --git a/include/sfx2/templatelocalview.hxx b/include/sfx2/templatelocalview.hxx index ebe5e4f303c0..137d3e500397 100644 --- a/include/sfx2/templatelocalview.hxx +++ b/include/sfx2/templatelocalview.hxx @@ -185,6 +185,8 @@ protected: std::unique_ptr<SfxDocumentTemplates> mpDocTemplates; std::vector<std::unique_ptr<TemplateContainerItem> > maRegions; std::vector<TemplateItemProperties > maAllTemplates; + + std::unique_ptr<weld::Menu> mxContextMenu; }; diff --git a/include/sfx2/thumbnailview.hxx b/include/sfx2/thumbnailview.hxx index 657b1048bab6..87c81154164d 100644 --- a/include/sfx2/thumbnailview.hxx +++ b/include/sfx2/thumbnailview.hxx @@ -162,8 +162,7 @@ class SFX2_DLLPUBLIC ThumbnailView : public weld::CustomWidgetController friend class ThumbnailViewItemAcc; public: - ThumbnailView(std::unique_ptr<weld::ScrolledWindow> xWindow, - std::unique_ptr<weld::Menu> xMenu = {}); + ThumbnailView(std::unique_ptr<weld::ScrolledWindow> xWindow); virtual ~ThumbnailView() override; @@ -322,7 +321,6 @@ protected: Link<const ThumbnailViewItem*, void> maItemStateHdl; std::unique_ptr<ThumbnailItemAttributes> mpItemAttrs; std::unique_ptr<weld::ScrolledWindow> mxScrolledWindow; - std::unique_ptr<weld::Menu> mxContextMenu; std::function<bool (const ThumbnailViewItem*)> maFilterFunc; }; diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx index a21c00fdb673..e0f32d4445eb 100644 --- a/sfx2/source/control/templatelocalview.cxx +++ b/sfx2/source/control/templatelocalview.cxx @@ -84,13 +84,14 @@ void TemplateLocalView::updateThumbnailDimensions(tools::Long itemMaxSize) TemplateLocalView::TemplateLocalView(std::unique_ptr<weld::ScrolledWindow> xWindow, std::unique_ptr<weld::Menu> xMenu) - : ThumbnailView(std::move(xWindow), std::move(xMenu)) + : ThumbnailView(std::move(xWindow)) , mnCurRegionId(0) , mpSelectedItem(nullptr) , mnThumbnailWidth(TEMPLATE_THUMBNAIL_MAX_WIDTH) , mnThumbnailHeight(TEMPLATE_THUMBNAIL_MAX_HEIGHT) , maPosition(0,0) , mpDocTemplates(new SfxDocumentTemplates) + , mxContextMenu(std::move(xMenu)) { } diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index 23461d5054e4..f14dc192ab6f 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -188,7 +188,7 @@ Bitmap ThumbnailView::readThumbnail(const OUString &msURL) return aThumbnail; } -ThumbnailView::ThumbnailView(std::unique_ptr<weld::ScrolledWindow> xWindow, std::unique_ptr<weld::Menu> xMenu) +ThumbnailView::ThumbnailView(std::unique_ptr<weld::ScrolledWindow> xWindow) : mnThumbnailHeight(0) , mnDisplayHeight(0) , mnVItemSpace(-1) @@ -196,7 +196,6 @@ ThumbnailView::ThumbnailView(std::unique_ptr<weld::ScrolledWindow> xWindow, std: , mbSelectOnFocus(true) , mpItemAttrs(new ThumbnailItemAttributes) , mxScrolledWindow(std::move(xWindow)) - , mxContextMenu(std::move(xMenu)) { ImplInit(); mxScrolledWindow->connect_vadjustment_value_changed(LINK(this, ThumbnailView, ImplScrollHdl));
