[Libreoffice-commits] core.git: basctl/source cui/source dbaccess/source extensions/source filter/source formula/source include/sfx2 include/svx include/vcl sc/source sfx2/source svx/source sw/source vcl/source vcl/unx xmlsecurity/inc xmlsecurity/source

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Sun Oct 6 20:15:41 UTC 2019


 basctl/source/basicide/bastype2.cxx                    |    7 ++++---
 basctl/source/basicide/brkdlg.cxx                      |    8 ++++----
 basctl/source/basicide/brkdlg.hxx                      |    2 +-
 basctl/source/basicide/macrodlg.cxx                    |    7 ++++---
 basctl/source/basicide/macrodlg.hxx                    |    2 +-
 basctl/source/inc/bastype2.hxx                         |    2 +-
 cui/source/customize/cfg.cxx                           |    3 ++-
 cui/source/customize/cfgutil.cxx                       |   16 ++--------------
 cui/source/customize/macropg.cxx                       |    3 ++-
 cui/source/dialogs/SpellDialog.cxx                     |    3 ++-
 cui/source/dialogs/cuigaldlg.cxx                       |    3 ++-
 cui/source/dialogs/hlmarkwn.cxx                        |    3 ++-
 cui/source/dialogs/insdlg.cxx                          |    3 ++-
 cui/source/dialogs/linkdlg.cxx                         |    3 ++-
 cui/source/dialogs/pastedlg.cxx                        |    3 ++-
 cui/source/dialogs/thesdlg.cxx                         |    4 +++-
 cui/source/inc/SpellDialog.hxx                         |    2 +-
 cui/source/inc/autocdlg.hxx                            |    2 +-
 cui/source/inc/cfg.hxx                                 |    2 +-
 cui/source/inc/cfgutil.hxx                             |    5 ++---
 cui/source/inc/cuigaldlg.hxx                           |    2 +-
 cui/source/inc/dbregister.hxx                          |    2 +-
 cui/source/inc/hlmarkwn.hxx                            |    2 +-
 cui/source/inc/insdlg.hxx                              |    2 +-
 cui/source/inc/linkdlg.hxx                             |    2 +-
 cui/source/inc/macroass.hxx                            |    2 +-
 cui/source/inc/macropg.hxx                             |    2 +-
 cui/source/inc/numfmt.hxx                              |    2 +-
 cui/source/inc/optlingu.hxx                            |    2 +-
 cui/source/inc/optpath.hxx                             |    2 +-
 cui/source/inc/pastedlg.hxx                            |    2 +-
 cui/source/inc/tabstpge.hxx                            |    2 +-
 cui/source/inc/thesdlg.hxx                             |    2 +-
 cui/source/inc/treeopt.hxx                             |    1 -
 cui/source/options/dbregister.cxx                      |    3 ++-
 cui/source/options/optaboutconfig.cxx                  |    3 ++-
 cui/source/options/optaboutconfig.hxx                  |    2 +-
 cui/source/options/optjava.cxx                         |    3 ++-
 cui/source/options/optjava.hxx                         |    2 +-
 cui/source/options/optlingu.cxx                        |    3 ++-
 cui/source/options/optpath.cxx                         |    3 ++-
 cui/source/options/treeopt.cxx                         |    9 ---------
 cui/source/tabpages/autocdlg.cxx                       |    3 ++-
 cui/source/tabpages/macroass.cxx                       |    5 +++--
 cui/source/tabpages/numfmt.cxx                         |    6 +++---
 cui/source/tabpages/tabstpge.cxx                       |    3 ++-
 dbaccess/source/ui/dlg/CollectionView.cxx              |    4 +++-
 dbaccess/source/ui/dlg/adtabdlg.cxx                    |    3 ++-
 dbaccess/source/ui/dlg/dsselect.cxx                    |    3 ++-
 dbaccess/source/ui/dlg/dsselect.hxx                    |    2 +-
 dbaccess/source/ui/inc/CollectionView.hxx              |    2 +-
 dbaccess/source/ui/inc/WColumnSelect.hxx               |    2 +-
 dbaccess/source/ui/inc/adtabdlg.hxx                    |    2 +-
 dbaccess/source/ui/misc/WColumnSelect.cxx              |    4 +++-
 extensions/source/abpilot/tableselectionpage.cxx       |    3 ++-
 extensions/source/abpilot/tableselectionpage.hxx       |    2 +-
 extensions/source/bibliography/datman.cxx              |    5 +++--
 extensions/source/dbpilots/commonpagesdbp.cxx          |    3 ++-
 extensions/source/dbpilots/commonpagesdbp.hxx          |    2 +-
 extensions/source/dbpilots/gridwizard.cxx              |    5 ++---
 extensions/source/dbpilots/gridwizard.hxx              |    2 +-
 extensions/source/dbpilots/listcombowizard.cxx         |    6 ++++--
 extensions/source/dbpilots/listcombowizard.hxx         |    4 ++--
 filter/source/xsltdialog/xmlfiltersettingsdialog.cxx   |    3 ++-
 filter/source/xsltdialog/xmlfiltersettingsdialog.hxx   |    2 +-
 formula/source/ui/dlg/funcpage.cxx                     |    3 ++-
 formula/source/ui/dlg/funcpage.hxx                     |    2 +-
 include/sfx2/new.hxx                                   |    2 +-
 include/sfx2/newstyle.hxx                              |    2 +-
 include/svx/ClassificationDialog.hxx                   |    6 +++---
 include/svx/txencbox.hxx                               |    2 +-
 include/vcl/weld.hxx                                   |   15 +++++++++++----
 sc/source/ui/condformat/condformatmgr.cxx              |    6 +++---
 sc/source/ui/dbgui/PivotLayoutTreeList.cxx             |    8 +++++---
 sc/source/ui/dbgui/PivotLayoutTreeListData.cxx         |    6 ++++--
 sc/source/ui/dbgui/pvfundlg.cxx                        |    9 ++++++---
 sc/source/ui/dbgui/scuiimoptdlg.cxx                    |    3 ++-
 sc/source/ui/inc/PivotLayoutTreeList.hxx               |    2 +-
 sc/source/ui/inc/PivotLayoutTreeListData.hxx           |    2 +-
 sc/source/ui/inc/condformatmgr.hxx                     |    2 +-
 sc/source/ui/inc/lbseldlg.hxx                          |    2 +-
 sc/source/ui/inc/pvfundlg.hxx                          |    8 ++++----
 sc/source/ui/inc/scuiautofmt.hxx                       |    2 +-
 sc/source/ui/inc/scuiimoptdlg.hxx                      |    2 +-
 sc/source/ui/inc/shtabdlg.hxx                          |    2 +-
 sc/source/ui/inc/solveroptions.hxx                     |    2 +-
 sc/source/ui/miscdlgs/lbseldlg.cxx                     |    3 ++-
 sc/source/ui/miscdlgs/scuiautofmt.cxx                  |    4 +++-
 sc/source/ui/miscdlgs/shtabdlg.cxx                     |    3 ++-
 sc/source/ui/miscdlgs/solveroptions.cxx                |    3 ++-
 sfx2/source/dialog/newstyle.cxx                        |    3 ++-
 sfx2/source/dialog/versdlg.cxx                         |    3 ++-
 sfx2/source/doc/new.cxx                                |    3 ++-
 sfx2/source/inc/versdlg.hxx                            |    2 +-
 svx/source/dialog/ClassificationDialog.cxx             |    9 ++++++---
 sw/source/ui/chrdlg/swuiccoll.cxx                      |    3 ++-
 sw/source/ui/dbui/dbinsdlg.cxx                         |    4 +++-
 sw/source/ui/dochdl/selglos.cxx                        |    3 ++-
 sw/source/ui/fldui/DropDownFieldDialog.cxx             |    5 +++--
 sw/source/ui/fldui/fldfunc.cxx                         |    3 ++-
 sw/source/ui/fldui/fldfunc.hxx                         |    2 +-
 sw/source/ui/fldui/fldpage.cxx                         |    6 ++++--
 sw/source/ui/fldui/fldpage.hxx                         |    4 ++--
 sw/source/ui/fldui/fldvar.cxx                          |    5 +++--
 sw/source/ui/fldui/fldvar.hxx                          |    2 +-
 sw/source/ui/index/cnttab.cxx                          |    4 +++-
 sw/source/ui/misc/bookmark.cxx                         |    3 ++-
 sw/source/ui/misc/glossary.cxx                         |    3 ++-
 sw/source/ui/misc/outline.cxx                          |    5 +++--
 sw/source/uibase/inc/DropDownFieldDialog.hxx           |    2 +-
 sw/source/uibase/inc/bookmark.hxx                      |    4 ++--
 sw/source/uibase/inc/dbinsdlg.hxx                      |    2 +-
 sw/source/uibase/inc/dbtree.hxx                        |    2 +-
 sw/source/uibase/inc/glossary.hxx                      |    2 +-
 sw/source/uibase/inc/numfmtlb.hxx                      |    2 +-
 sw/source/uibase/inc/selglos.hxx                       |    2 +-
 sw/source/uibase/inc/swuiccoll.hxx                     |    2 +-
 sw/source/uibase/inc/swuicnttab.hxx                    |    2 +-
 sw/source/uibase/utlui/gloslst.cxx                     |    5 +++--
 vcl/source/app/salvtables.cxx                          |    3 +--
 vcl/unx/gtk3/gtk3gtkinst.cxx                           |   13 ++++++++++++-
 xmlsecurity/inc/certificatechooser.hxx                 |    2 +-
 xmlsecurity/inc/digitalsignaturesdialog.hxx            |    2 +-
 xmlsecurity/source/dialogs/certificatechooser.cxx      |    3 ++-
 xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx |    3 ++-
 125 files changed, 250 insertions(+), 188 deletions(-)

New commits:
commit 48595c805dd5b917e9bd01ad1c2deb4a047c5f7b
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Sat Oct 5 18:36:38 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Sun Oct 6 22:14:17 2019 +0200

    Related: tdf#127935 set default activate handler to toggle row expansion
    
    Change-Id: I2bbfb1445b8d2e748f642cdf4723d41b7f072e2b
    Reviewed-on: https://gerrit.libreoffice.org/80305
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/basctl/source/basicide/bastype2.cxx b/basctl/source/basicide/bastype2.cxx
index 75be6630011e..4807996a3c75 100644
--- a/basctl/source/basicide/bastype2.cxx
+++ b/basctl/source/basicide/bastype2.cxx
@@ -1498,11 +1498,11 @@ void SbTreeListBox::SetCurrentEntry (EntryDescriptor const & rDesc)
     m_xControl->set_cursor(*xCurIter);
 }
 
-IMPL_LINK_NOARG(SbTreeListBox, OpenCurrentHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SbTreeListBox, OpenCurrentHdl, weld::TreeView&, bool)
 {
     bool bValidIter = m_xControl->get_cursor(m_xIter.get());
     if (!bValidIter)
-        return;
+        return true;
     EntryDescriptor aDesc = GetEntryDescriptor(m_xIter.get());
     switch (aDesc.GetType())
     {
@@ -1520,7 +1520,7 @@ IMPL_LINK_NOARG(SbTreeListBox, OpenCurrentHdl, weld::TreeView&, void)
                     SID_BASICIDE_SHOWSBX, SfxCallMode::SYNCHRON,
                     { &aSbxItem }
                 );
-                return;
+                return true;
             }
             break;
 
@@ -1531,6 +1531,7 @@ IMPL_LINK_NOARG(SbTreeListBox, OpenCurrentHdl, weld::TreeView&, void)
                 m_xControl->collapse_row(*m_xIter);
             break;
     }
+    return true;
 }
 
 } // namespace basctl
diff --git a/basctl/source/basicide/brkdlg.cxx b/basctl/source/basicide/brkdlg.cxx
index e7132e7469ed..6839ff0e5a99 100644
--- a/basctl/source/basicide/brkdlg.cxx
+++ b/basctl/source/basicide/brkdlg.cxx
@@ -167,11 +167,11 @@ IMPL_LINK(BreakPointDialog, FieldModifyHdl, weld::SpinButton&, rEdit, void)
         pBrk->nStopAfter = rEdit.get_value();
 }
 
-IMPL_LINK_NOARG(BreakPointDialog, TreeModifyHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(BreakPointDialog, TreeModifyHdl, weld::TreeView&, bool)
 {
-    if (!m_xDelButton->get_sensitive())
-        return;
-    ButtonHdl(*m_xDelButton);
+    if (m_xDelButton->get_sensitive())
+        ButtonHdl(*m_xDelButton);
+    return true;
 }
 
 IMPL_LINK(BreakPointDialog, ButtonHdl, weld::Button&, rButton, void)
diff --git a/basctl/source/basicide/brkdlg.hxx b/basctl/source/basicide/brkdlg.hxx
index 48b91cf8a6e6..43e6153b677b 100644
--- a/basctl/source/basicide/brkdlg.hxx
+++ b/basctl/source/basicide/brkdlg.hxx
@@ -42,7 +42,7 @@ class BreakPointDialog final : public weld::GenericDialogController
     DECL_LINK(EditModifyHdl, weld::ComboBox&, void);
     DECL_LINK(FieldModifyHdl, weld::SpinButton&, void);
     DECL_LINK(ButtonHdl, weld::Button&, void);
-    DECL_LINK(TreeModifyHdl, weld::TreeView&, void);
+    DECL_LINK(TreeModifyHdl, weld::TreeView&, bool);
     void            UpdateFields( BreakPoint const & rBrk );
     BreakPoint*     GetSelectedBreakPoint();
 
diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx
index ff5422490527..9d1add2ae515 100644
--- a/basctl/source/basicide/macrodlg.cxx
+++ b/basctl/source/basicide/macrodlg.cxx
@@ -431,7 +431,7 @@ void MacroChooser::CheckButtons()
     }
 }
 
-IMPL_LINK_NOARG(MacroChooser, MacroDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(MacroChooser, MacroDoubleClickHdl, weld::TreeView&, bool)
 {
     SbMethod* pMethod = GetMacro();
     SbModule* pModule = pMethod ? pMethod->GetModule() : nullptr;
@@ -444,17 +444,18 @@ IMPL_LINK_NOARG(MacroChooser, MacroDoubleClickHdl, weld::TreeView&, void)
             Application::CreateMessageDialog(m_xDialog.get(), VclMessageType::Warning,
                                              VclButtonsType::Ok, IDEResId(RID_STR_CANNOTRUNMACRO)));
         xError->run();
-        return;
+        return true;
     }
 
     StoreMacroDescription();
     if (nMode == Recording)
     {
         if (pMethod && !QueryReplaceMacro(pMethod->GetName(), m_xDialog.get()))
-            return;
+            return true;
     }
 
     m_xDialog->response(Macro_OkRun);
+    return true;
 }
 
 IMPL_LINK_NOARG(MacroChooser, MacroSelectHdl, weld::TreeView&, void)
diff --git a/basctl/source/basicide/macrodlg.hxx b/basctl/source/basicide/macrodlg.hxx
index 9ab71acc13fa..e6ce85ec3b00 100644
--- a/basctl/source/basicide/macrodlg.hxx
+++ b/basctl/source/basicide/macrodlg.hxx
@@ -55,7 +55,7 @@ private:
     Mode                    nMode;
 
     DECL_LINK(MacroSelectHdl, weld::TreeView&, void);
-    DECL_LINK(MacroDoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(MacroDoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(BasicSelectHdl, weld::TreeView&, void);
     DECL_LINK(EditModifyHdl, weld::Entry&, void);
     DECL_LINK(ButtonHdl, weld::Button&, void);
diff --git a/basctl/source/inc/bastype2.hxx b/basctl/source/inc/bastype2.hxx
index 7f14f3f66ca0..88c303e3f5d1 100644
--- a/basctl/source/inc/bastype2.hxx
+++ b/basctl/source/inc/bastype2.hxx
@@ -253,7 +253,7 @@ private:
 
 protected:
     DECL_LINK(RequestingChildrenHdl, const weld::TreeIter&, bool);
-    DECL_LINK(OpenCurrentHdl, weld::TreeView&, void);
+    DECL_LINK(OpenCurrentHdl, weld::TreeView&, bool);
     void                    ImpCreateLibEntries(const weld::TreeIter& rShellRootEntry, const ScriptDocument& rDocument, LibraryLocation eLocation);
     void                    ImpCreateLibSubEntries(const weld::TreeIter& rLibRootEntry, const ScriptDocument& rDocument, const OUString& rLibName);
     void                    ImpCreateLibSubEntriesInVBAMode(const weld::TreeIter& rLibRootEntry, const ScriptDocument& rDocument, const OUString& rLibName );
diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index 79977a220ab5..b9f08fe53149 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -1553,10 +1553,11 @@ IMPL_LINK(SvxConfigPage, MoveHdl, weld::Button&, rButton, void)
     MoveEntry(&rButton == m_xMoveUpButton.get());
 }
 
-IMPL_LINK_NOARG(SvxConfigPage, FunctionDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxConfigPage, FunctionDoubleClickHdl, weld::TreeView&, bool)
 {
     if (m_xAddCommandButton->get_sensitive())
         m_xAddCommandButton->clicked();
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxConfigPage, SelectFunctionHdl, weld::TreeView&, void)
diff --git a/cui/source/customize/cfgutil.cxx b/cui/source/customize/cfgutil.cxx
index ebfc025ea27c..0549e04cfbf5 100644
--- a/cui/source/customize/cfgutil.cxx
+++ b/cui/source/customize/cfgutil.cxx
@@ -408,23 +408,10 @@ CuiConfigGroupListBox::CuiConfigGroupListBox(std::unique_ptr<weld::TreeView> xTr
     , m_pStylesInfo(nullptr)
     , m_xTreeView(std::move(xTreeView))
 {
-    m_xTreeView->connect_row_activated(LINK(this, CuiConfigGroupListBox, OpenCurrentHdl));
     m_xTreeView->connect_expanding(LINK(this, CuiConfigGroupListBox, ExpandingHdl));
     m_xTreeView->set_size_request(m_xTreeView->get_approximate_digit_width() * 35, m_xTreeView->get_height_rows(9));
 }
 
-IMPL_LINK_NOARG(CuiConfigGroupListBox, OpenCurrentHdl, weld::TreeView&, void)
-{
-    std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator());
-    bool bValidIter = m_xTreeView->get_cursor(xIter.get());
-    if (!bValidIter)
-        return;
-    if (!m_xTreeView->get_row_expanded(*xIter))
-        m_xTreeView->expand_row(*xIter);
-    else
-        m_xTreeView->collapse_row(*xIter);
-}
-
 CuiConfigGroupListBox::~CuiConfigGroupListBox()
 {
     ClearAll();
@@ -1133,10 +1120,11 @@ IMPL_LINK(SvxScriptSelectorDialog, SelectHdl, weld::TreeView&, rCtrl, void)
     UpdateUI();
 }
 
-IMPL_LINK_NOARG(SvxScriptSelectorDialog, FunctionDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxScriptSelectorDialog, FunctionDoubleClickHdl, weld::TreeView&, bool)
 {
     if (m_xOKButton->get_sensitive())
         ClickHdl(*m_xOKButton);
+    return true;
 }
 
 // Check if command is selected and enable the OK button accordingly
diff --git a/cui/source/customize/macropg.cxx b/cui/source/customize/macropg.cxx
index b2b3beadb4a8..2fb442dbdb24 100644
--- a/cui/source/customize/macropg.cxx
+++ b/cui/source/customize/macropg.cxx
@@ -385,9 +385,10 @@ IMPL_LINK( SvxMacroTabPage_, AssignDeleteHdl_Impl, weld::Button&, rBtn, void )
     GenericHandler_Impl(this, &rBtn);
 }
 
-IMPL_LINK_NOARG( SvxMacroTabPage_, DoubleClickHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG( SvxMacroTabPage_, DoubleClickHdl_Impl, weld::TreeView&, bool)
 {
     GenericHandler_Impl(this, nullptr);
+    return true;
 }
 
 // handler for double click on the listbox, and for the assign/delete buttons
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx
index caa9b92291c1..2574dd84a25e 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -498,9 +498,10 @@ OUString SpellDialog::getReplacementString() const
     return getDotReplacementString(sOrigString, sReplacement);
 }
 
-IMPL_LINK_NOARG(SpellDialog, DoubleClickChangeHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SpellDialog, DoubleClickChangeHdl, weld::TreeView&, bool)
 {
     ChangeHdl(*m_xChangePB);
+    return true;
 }
 
 IMPL_LINK_NOARG(SpellDialog, ChangeHdl, weld::Button&, void)
diff --git a/cui/source/dialogs/cuigaldlg.cxx b/cui/source/dialogs/cuigaldlg.cxx
index 660d7b5bf113..acac953f5a36 100644
--- a/cui/source/dialogs/cuigaldlg.cxx
+++ b/cui/source/dialogs/cuigaldlg.cxx
@@ -966,7 +966,7 @@ IMPL_LINK_NOARG(TPGalleryThemeProperties, SelectFoundHdl, weld::TreeView&, void)
     }
 }
 
-IMPL_LINK_NOARG(TPGalleryThemeProperties, DClickFoundHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(TPGalleryThemeProperties, DClickFoundHdl, weld::TreeView&, bool)
 {
     if( bInputAllowed )
     {
@@ -975,6 +975,7 @@ IMPL_LINK_NOARG(TPGalleryThemeProperties, DClickFoundHdl, weld::TreeView&, void)
         if (m_xLbxFound->count_selected_rows() == 1 && bEntriesFound)
             ClickTakeHdl(*m_xBtnTake);
     }
+    return true;
 }
 
 IMPL_LINK_NOARG(TPGalleryThemeProperties, PreviewTimerHdl, Timer *, void)
diff --git a/cui/source/dialogs/hlmarkwn.cxx b/cui/source/dialogs/hlmarkwn.cxx
index 9589f6087b00..08d1798b42e5 100644
--- a/cui/source/dialogs/hlmarkwn.cxx
+++ b/cui/source/dialogs/hlmarkwn.cxx
@@ -411,9 +411,10 @@ bool SvxHlinkDlgMarkWnd::SelectEntry(const OUString& aStrMark)
 }
 
 // Click on Apply-Button / Double-click on item in tree
-IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, DoubleClickApplyHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, DoubleClickApplyHdl_Impl, weld::TreeView&, bool)
 {
     ClickApplyHdl_Impl(*mxBtApply);
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxHlinkDlgMarkWnd, ClickApplyHdl_Impl, weld::Button&, void)
diff --git a/cui/source/dialogs/insdlg.cxx b/cui/source/dialogs/insdlg.cxx
index 63169d3664df..948a02d88efa 100644
--- a/cui/source/dialogs/insdlg.cxx
+++ b/cui/source/dialogs/insdlg.cxx
@@ -76,9 +76,10 @@ InsertObjectDialog_Impl::InsertObjectDialog_Impl(weld::Window* pParent,
 {
 }
 
-IMPL_LINK_NOARG(SvInsertOleDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvInsertOleDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 IMPL_LINK_NOARG(SvInsertOleDlg, BrowseHdl, weld::Button&, void)
diff --git a/cui/source/dialogs/linkdlg.cxx b/cui/source/dialogs/linkdlg.cxx
index 33f7529516da..f8388ece411c 100644
--- a/cui/source/dialogs/linkdlg.cxx
+++ b/cui/source/dialogs/linkdlg.cxx
@@ -214,9 +214,10 @@ void SvBaseLinksDlg::LinksSelectHdl(weld::TreeView* pSvTabListBox)
     }
 }
 
-IMPL_LINK_NOARG( SvBaseLinksDlg, LinksDoubleClickHdl, weld::TreeView&, void )
+IMPL_LINK_NOARG( SvBaseLinksDlg, LinksDoubleClickHdl, weld::TreeView&, bool )
 {
     ChangeSourceClickHdl(*m_xPbChangeSource);
+    return true;
 }
 
 IMPL_LINK_NOARG( SvBaseLinksDlg, AutomaticClickHdl, weld::Button&, void )
diff --git a/cui/source/dialogs/pastedlg.cxx b/cui/source/dialogs/pastedlg.cxx
index 3b08dcd5466f..f9d9a76318ab 100644
--- a/cui/source/dialogs/pastedlg.cxx
+++ b/cui/source/dialogs/pastedlg.cxx
@@ -56,9 +56,10 @@ IMPL_LINK_NOARG(SvPasteObjectDialog, SelectHdl, weld::TreeView&, void)
         m_xOKButton->set_sensitive(true);
 }
 
-IMPL_LINK_NOARG(SvPasteObjectDialog, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvPasteObjectDialog, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /*************************************************************************
diff --git a/cui/source/dialogs/thesdlg.cxx b/cui/source/dialogs/thesdlg.cxx
index dcb8805e7a0d..5792d456b702 100644
--- a/cui/source/dialogs/thesdlg.cxx
+++ b/cui/source/dialogs/thesdlg.cxx
@@ -197,7 +197,7 @@ IMPL_LINK( SvxThesaurusDialog, AlternativesSelectHdl_Impl, weld::TreeView&, rBox
     }
 }
 
-IMPL_LINK( SvxThesaurusDialog, AlternativesDoubleClickHdl_Impl, weld::TreeView&, rBox, void )
+IMPL_LINK( SvxThesaurusDialog, AlternativesDoubleClickHdl_Impl, weld::TreeView&, rBox, bool )
 {
     int nEntry = rBox.get_selected_index();
     if (nEntry != -1)
@@ -217,6 +217,8 @@ IMPL_LINK( SvxThesaurusDialog, AlternativesDoubleClickHdl_Impl, weld::TreeView&,
     //! workaround to set the selection since calling SelectEntryPos within
     //! the double click handler does not work
     Application::PostUserEvent(LINK(this, SvxThesaurusDialog, SelectFirstHdl_Impl));
+
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxThesaurusDialog, SelectFirstHdl_Impl, void *, void)
diff --git a/cui/source/inc/SpellDialog.hxx b/cui/source/inc/SpellDialog.hxx
index 65de78342f7e..b38880ee5869 100644
--- a/cui/source/inc/SpellDialog.hxx
+++ b/cui/source/inc/SpellDialog.hxx
@@ -171,7 +171,7 @@ private:
     std::unique_ptr<weld::CustomWeld> m_xSentenceEDWeld;
 
     DECL_LINK(ChangeHdl, weld::Button&, void);
-    DECL_LINK(DoubleClickChangeHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickChangeHdl, weld::TreeView&, bool);
     DECL_LINK(ChangeAllHdl, weld::Button&, void);
     DECL_LINK(IgnoreAllHdl, weld::Button&, void);
     DECL_LINK(IgnoreHdl, weld::Button&, void);
diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx
index dbf437dfbe5a..3254573a6d3a 100644
--- a/cui/source/inc/autocdlg.hxx
+++ b/cui/source/inc/autocdlg.hxx
@@ -114,7 +114,7 @@ class OfaSwAutoFmtOptionsPage : public SfxTabPage
 
     DECL_LINK(SelectHdl, weld::TreeView&, void);
     DECL_LINK(EditHdl, weld::Button&, void);
-    DECL_LINK(DoubleClickEditHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickEditHdl, weld::TreeView&, bool);
 
     void CreateEntry(const OUString& rTxt, sal_uInt16 nCol);
 
diff --git a/cui/source/inc/cfg.hxx b/cui/source/inc/cfg.hxx
index e360d79f096e..8163387f13e9 100644
--- a/cui/source/inc/cfg.hxx
+++ b/cui/source/inc/cfg.hxx
@@ -408,7 +408,7 @@ protected:
 
     DECL_LINK(MoveHdl, weld::Button&, void);
     DECL_LINK(SelectFunctionHdl, weld::TreeView&, void);
-    DECL_LINK(FunctionDoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(FunctionDoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(SelectSaveInLocation, weld::ComboBox&, void);
     DECL_LINK(SelectElementHdl, weld::ComboBox&, void);
     DECL_LINK(ImplUpdateDataHdl, Timer*, void);
diff --git a/cui/source/inc/cfgutil.hxx b/cui/source/inc/cfgutil.hxx
index 331a59a21d8d..e930c24ac3ec 100644
--- a/cui/source/inc/cfgutil.hxx
+++ b/cui/source/inc/cfgutil.hxx
@@ -111,7 +111,7 @@ public:
     CuiConfigFunctionListBox(std::unique_ptr<weld::TreeView> xTreeView);
     void set_sensitive(bool bSensitive) { m_xTreeView->set_sensitive(bSensitive); }
     void connect_changed(const Link<weld::TreeView&, void>& rLink) { m_xTreeView->connect_changed(rLink); }
-    void connect_row_activated(const Link<weld::TreeView&, void>& rLink) { m_xTreeView->connect_row_activated(rLink); }
+    void connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { m_xTreeView->connect_row_activated(rLink); }
     void freeze() { m_xTreeView->freeze(); }
     void thaw() { m_xTreeView->thaw(); }
     void append(const OUString& rId, const OUString& rStr, const weld::TreeIter* pParent = nullptr)
@@ -208,7 +208,6 @@ class CuiConfigGroupListBox
     OUString MapCommand2UIName(const OUString& sCommand);
 
     DECL_LINK(ExpandingHdl, const weld::TreeIter&, bool);
-    DECL_LINK(OpenCurrentHdl, weld::TreeView&, void);
 
 public:
     CuiConfigGroupListBox(std::unique_ptr<weld::TreeView> xTreeView);
@@ -250,7 +249,7 @@ class SvxScriptSelectorDialog : public weld::GenericDialogController
 
     DECL_LINK(ClickHdl, weld::Button&, void);
     DECL_LINK(SelectHdl, weld::TreeView&, void);
-    DECL_LINK(FunctionDoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(FunctionDoubleClickHdl, weld::TreeView&, bool);
 
     void                            UpdateUI();
 
diff --git a/cui/source/inc/cuigaldlg.hxx b/cui/source/inc/cuigaldlg.hxx
index 35142bf1c935..f472d283b2fd 100644
--- a/cui/source/inc/cuigaldlg.hxx
+++ b/cui/source/inc/cuigaldlg.hxx
@@ -256,7 +256,7 @@ class TPGalleryThemeProperties : public SfxTabPage
     DECL_LINK(ClickTakeAllHdl, weld::Button&, void);
     DECL_LINK(SelectFoundHdl, weld::TreeView&, void);
     DECL_LINK(SelectFileTypeHdl, weld::ComboBox&, void);
-    DECL_LINK(DClickFoundHdl, weld::TreeView&, void);
+    DECL_LINK(DClickFoundHdl, weld::TreeView&, bool);
     DECL_LINK(PreviewTimerHdl, Timer*, void);
     DECL_LINK(DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, void);
 
diff --git a/cui/source/inc/dbregister.hxx b/cui/source/inc/dbregister.hxx
index 06ea7809cb8b..e1bc2f6b1a28 100644
--- a/cui/source/inc/dbregister.hxx
+++ b/cui/source/inc/dbregister.hxx
@@ -42,7 +42,7 @@ namespace svx
         DECL_LINK( NewHdl, weld::Button&, void );
         DECL_LINK( EditHdl, weld::Button&, void );
         DECL_LINK( DeleteHdl, weld::Button&, void );
-        DECL_LINK( PathBoxDoubleClickHdl, weld::TreeView&, void);
+        DECL_LINK( PathBoxDoubleClickHdl, weld::TreeView&, bool);
 
         DECL_LINK( PathSelect_Impl, weld::TreeView&, void);
 
diff --git a/cui/source/inc/hlmarkwn.hxx b/cui/source/inc/hlmarkwn.hxx
index aa03d4da4ddf..9dd566a74a6c 100644
--- a/cui/source/inc/hlmarkwn.hxx
+++ b/cui/source/inc/hlmarkwn.hxx
@@ -53,7 +53,7 @@ protected:
     int FillTree( const css::uno::Reference< css::container::XNameAccess >& xLinks, const weld::TreeIter* pParentEntry =nullptr );
 
     DECL_LINK( ClickApplyHdl_Impl, weld::Button&, void );
-    DECL_LINK( DoubleClickApplyHdl_Impl, weld::TreeView&, void );
+    DECL_LINK( DoubleClickApplyHdl_Impl, weld::TreeView&, bool );
     DECL_LINK( ClickCloseHdl_Impl, weld::Button&, void );
 
 public:
diff --git a/cui/source/inc/insdlg.hxx b/cui/source/inc/insdlg.hxx
index 50f14987b492..7c17022edcde 100644
--- a/cui/source/inc/insdlg.hxx
+++ b/cui/source/inc/insdlg.hxx
@@ -63,7 +63,7 @@ class SvInsertOleDlg : public InsertObjectDialog_Impl
     std::unique_ptr<weld::CheckButton> m_xCbFilelink;
     std::unique_ptr<weld::CheckButton> m_xCbAsIcon;
 
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(BrowseHdl, weld::Button&, void);
     DECL_LINK(RadioHdl, weld::Button&, void);
     bool IsCreateNew() const override { return m_xRbNewObject->get_active(); }
diff --git a/cui/source/inc/linkdlg.hxx b/cui/source/inc/linkdlg.hxx
index 5ef41e9b05e1..90d51aba828e 100644
--- a/cui/source/inc/linkdlg.hxx
+++ b/cui/source/inc/linkdlg.hxx
@@ -58,7 +58,7 @@ class SvBaseLinksDlg : public weld::GenericDialogController
     ScopedVclPtr<VirtualDevice> m_xVirDev;
 
     DECL_LINK( LinksSelectHdl, weld::TreeView&, void );
-    DECL_LINK( LinksDoubleClickHdl, weld::TreeView&, void );
+    DECL_LINK( LinksDoubleClickHdl, weld::TreeView&, bool );
     DECL_LINK( AutomaticClickHdl, weld::Button&, void );
     DECL_LINK( ManualClickHdl, weld::Button&, void );
     DECL_LINK( UpdateNowClickHdl, weld::Button&, void);
diff --git a/cui/source/inc/macroass.hxx b/cui/source/inc/macroass.hxx
index 2069cc4c2ea7..d4403686c237 100644
--- a/cui/source/inc/macroass.hxx
+++ b/cui/source/inc/macroass.hxx
@@ -38,7 +38,7 @@ class SfxMacroTabPage final : public SfxTabPage
     DECL_LINK(SelectGroup_Impl, weld::TreeView&, void);
     DECL_LINK(SelectMacro_Impl, weld::TreeView&, void);
 
-    DECL_LINK(AssignDeleteHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(AssignDeleteHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(AssignDeleteClickHdl_Impl, weld::Button&, void);
     void AssignDeleteHdl(const weld::Widget*);
     DECL_LINK( TimeOut_Impl, Timer*, void );
diff --git a/cui/source/inc/macropg.hxx b/cui/source/inc/macropg.hxx
index c761e19423b7..3ffb8afa49a9 100644
--- a/cui/source/inc/macropg.hxx
+++ b/cui/source/inc/macropg.hxx
@@ -56,7 +56,7 @@ class SvxMacroTabPage_ : public SfxTabPage
 {
     DECL_LINK( SelectEvent_Impl, weld::TreeView&, void );
     DECL_LINK( AssignDeleteHdl_Impl, weld::Button&, void );
-    DECL_LINK( DoubleClickHdl_Impl, weld::TreeView&, void );
+    DECL_LINK( DoubleClickHdl_Impl, weld::TreeView&, bool );
 
     static void GenericHandler_Impl( SvxMacroTabPage_* pThis, const weld::Button* pBtn );
 
diff --git a/cui/source/inc/numfmt.hxx b/cui/source/inc/numfmt.hxx
index 5d68d4082ae9..9a493371731e 100644
--- a/cui/source/inc/numfmt.hxx
+++ b/cui/source/inc/numfmt.hxx
@@ -132,7 +132,7 @@ private:
     bool    Click_Impl(weld::Button& rIB);
     // Handler
     DECL_LINK(LostFocusHdl_Impl, weld::Widget&, void);
-    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(SelFormatListBoxHdl_Impl, weld::ComboBox&, void);
     DECL_LINK(SelFormatTreeListBoxHdl_Impl, weld::TreeView&, void);
     DECL_LINK(SelFormatClickHdl_Impl, weld::Button&, void);
diff --git a/cui/source/inc/optlingu.hxx b/cui/source/inc/optlingu.hxx
index 37b3f0900f2e..1571ae8a243d 100644
--- a/cui/source/inc/optlingu.hxx
+++ b/cui/source/inc/optlingu.hxx
@@ -123,7 +123,7 @@ private:
 
     DECL_LINK( SelectHdl_Impl, weld::TreeView&, void );
     DECL_LINK( ClickHdl_Impl, weld::Button&, void );
-    DECL_LINK( BoxDoubleClickHdl_Impl, weld::TreeView&, void );
+    DECL_LINK( BoxDoubleClickHdl_Impl, weld::TreeView&, bool );
     typedef std::pair<int, int> row_col;
     DECL_LINK( ModulesBoxCheckButtonHdl_Impl, const row_col&, void );
     DECL_LINK( DicsBoxCheckButtonHdl_Impl, const row_col&, void );
diff --git a/cui/source/inc/optpath.hxx b/cui/source/inc/optpath.hxx
index 5dea8c1f201a..cc3d67b42a05 100644
--- a/cui/source/inc/optpath.hxx
+++ b/cui/source/inc/optpath.hxx
@@ -45,7 +45,7 @@ private:
     void        ChangeCurrentEntry( const OUString& _rFolder );
 
     DECL_LINK(PathHdl_Impl, weld::Button&, void);
-    DECL_LINK(DoubleClickPathHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickPathHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(StandardHdl_Impl, weld::Button&, void);
 
     DECL_LINK(PathSelect_Impl, weld::TreeView&, void);
diff --git a/cui/source/inc/pastedlg.hxx b/cui/source/inc/pastedlg.hxx
index ff66beca7c5a..565101d7fe19 100644
--- a/cui/source/inc/pastedlg.hxx
+++ b/cui/source/inc/pastedlg.hxx
@@ -43,7 +43,7 @@ class SvPasteObjectDialog : public weld::GenericDialogController
 
     void            SelectObject();
     DECL_LINK(SelectHdl, weld::TreeView&, void);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 
 public:
     SvPasteObjectDialog(weld::Window* pParent);
diff --git a/cui/source/inc/tabstpge.hxx b/cui/source/inc/tabstpge.hxx
index a49d0e99095a..6c9e63b109b8 100644
--- a/cui/source/inc/tabstpge.hxx
+++ b/cui/source/inc/tabstpge.hxx
@@ -133,7 +133,7 @@ private:
     DECL_LINK(FillTypeCheckHdl_Impl, weld::ToggleButton&, void);
     DECL_LINK(TabTypeCheckHdl_Impl, weld::ToggleButton&, void);
 
-    DECL_LINK(SelectHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(SelectHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(ModifyHdl_Impl, weld::ComboBox&, void);
     DECL_LINK(ReformatHdl_Impl, weld::Widget&, void);
     DECL_LINK(GetFillCharHdl_Impl, weld::Widget&, void);
diff --git a/cui/source/inc/thesdlg.hxx b/cui/source/inc/thesdlg.hxx
index 46af0be49cfd..65c4050cc4d3 100644
--- a/cui/source/inc/thesdlg.hxx
+++ b/cui/source/inc/thesdlg.hxx
@@ -54,7 +54,7 @@ public:
     DECL_LINK( LanguageHdl_Impl, weld::ComboBox&, void );
     DECL_LINK( WordSelectHdl_Impl, weld::ComboBox&, void );
     DECL_LINK( AlternativesSelectHdl_Impl, weld::TreeView&, void );
-    DECL_LINK( AlternativesDoubleClickHdl_Impl, weld::TreeView&, void );
+    DECL_LINK( AlternativesDoubleClickHdl_Impl, weld::TreeView&, bool );
     DECL_LINK( SelectFirstHdl_Impl, void*, void );
     DECL_LINK( ReplaceEditHdl_Impl, weld::Entry&, void );
     DECL_LINK( ModifyTimer_Hdl, Timer *, void );
diff --git a/cui/source/inc/treeopt.hxx b/cui/source/inc/treeopt.hxx
index 1042b68877e3..aa6f7f5b0a02 100644
--- a/cui/source/inc/treeopt.hxx
+++ b/cui/source/inc/treeopt.hxx
@@ -159,7 +159,6 @@ private:
 
     void            ApplyOptions( bool deactivate );
 
-    DECL_STATIC_LINK(OfaTreeOptionsDialog, ExpandCollapseHdl_Impl, weld::TreeView&, void);
     DECL_LINK(ShowPageHdl_Impl, weld::TreeView&, void);
     DECL_LINK(BackHdl_Impl, weld::Button&, void);
     DECL_LINK(ApplyHdl_Impl, weld::Button&, void);
diff --git a/cui/source/options/dbregister.cxx b/cui/source/options/dbregister.cxx
index 30a8b444ffd3..0cf15071adf8 100644
--- a/cui/source/options/dbregister.cxx
+++ b/cui/source/options/dbregister.cxx
@@ -204,9 +204,10 @@ IMPL_LINK_NOARG(DbRegistrationOptionsPage, NewHdl, weld::Button&, void)
     openLinkDialog(OUString(),OUString());
 }
 
-IMPL_LINK_NOARG(DbRegistrationOptionsPage, PathBoxDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(DbRegistrationOptionsPage, PathBoxDoubleClickHdl, weld::TreeView&, bool)
 {
     EditHdl(*m_xEdit);
+    return true;
 }
 
 IMPL_LINK_NOARG(DbRegistrationOptionsPage, EditHdl, weld::Button&, void)
diff --git a/cui/source/options/optaboutconfig.cxx b/cui/source/options/optaboutconfig.cxx
index 89f3cd3816e2..2b7a91360d09 100644
--- a/cui/source/options/optaboutconfig.cxx
+++ b/cui/source/options/optaboutconfig.cxx
@@ -557,9 +557,10 @@ IMPL_LINK_NOARG( CuiAboutConfigTabPage, ResetBtnHdl_Impl, weld::Button&, void )
     Reset();
 }
 
-IMPL_LINK_NOARG(CuiAboutConfigTabPage, DoubleClickHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(CuiAboutConfigTabPage, DoubleClickHdl_Impl, weld::TreeView&, bool)
 {
     StandardHdl_Impl(*m_xEditBtn);
+    return true;
 }
 
 IMPL_LINK_NOARG( CuiAboutConfigTabPage, StandardHdl_Impl, weld::Button&, void )
diff --git a/cui/source/options/optaboutconfig.hxx b/cui/source/options/optaboutconfig.hxx
index 008d8009f7dd..b7781859eb4b 100644
--- a/cui/source/options/optaboutconfig.hxx
+++ b/cui/source/options/optaboutconfig.hxx
@@ -57,7 +57,7 @@ private:
     void InsertEntry(const prefBoxEntry& rEntry);
 
     DECL_LINK(StandardHdl_Impl, weld::Button&, void);
-    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(ResetBtnHdl_Impl, weld::Button&, void);
     DECL_LINK(SearchHdl_Impl, weld::Button&, void);
     DECL_LINK(ExpandingHdl_Impl, const weld::TreeIter&, bool);
diff --git a/cui/source/options/optjava.cxx b/cui/source/options/optjava.cxx
index 8fc6da8dd1db..bd88d04f7ce5 100644
--- a/cui/source/options/optjava.cxx
+++ b/cui/source/options/optjava.cxx
@@ -659,9 +659,10 @@ IMPL_LINK_NOARG(SvxJavaParameterDlg, SelectHdl_Impl, weld::TreeView&, void)
     EnableRemoveButton();
 }
 
-IMPL_LINK_NOARG(SvxJavaParameterDlg, DblClickHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxJavaParameterDlg, DblClickHdl_Impl, weld::TreeView&, bool)
 {
     EditParameter();
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxJavaParameterDlg, RemoveHdl_Impl, weld::Button&, void)
diff --git a/cui/source/options/optjava.hxx b/cui/source/options/optjava.hxx
index 2000145d0b4e..e5537f1e1ff7 100644
--- a/cui/source/options/optjava.hxx
+++ b/cui/source/options/optjava.hxx
@@ -130,7 +130,7 @@ private:
     DECL_LINK(ModifyHdl_Impl, weld::Entry&, void);
     DECL_LINK(AssignHdl_Impl, weld::Button&, void);
     DECL_LINK(SelectHdl_Impl, weld::TreeView&, void);
-    DECL_LINK(DblClickHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DblClickHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(RemoveHdl_Impl, weld::Button&, void);
     DECL_LINK(EditHdl_Impl, weld::Button&, void);
 
diff --git a/cui/source/options/optlingu.cxx b/cui/source/options/optlingu.cxx
index bdc8579cc37c..c8ee82ad43dd 100644
--- a/cui/source/options/optlingu.cxx
+++ b/cui/source/options/optlingu.cxx
@@ -1270,7 +1270,7 @@ void SvxLinguTabPage::Reset( const SfxItemSet* rSet )
                                          m_xLinguOptionsCLB->get_height_rows(5));
 }
 
-IMPL_LINK(SvxLinguTabPage, BoxDoubleClickHdl_Impl, weld::TreeView&, rBox, void)
+IMPL_LINK(SvxLinguTabPage, BoxDoubleClickHdl_Impl, weld::TreeView&, rBox, bool)
 {
     if (&rBox == m_xLinguModulesCLB.get())
     {
@@ -1284,6 +1284,7 @@ IMPL_LINK(SvxLinguTabPage, BoxDoubleClickHdl_Impl, weld::TreeView&, rBox, void)
     {
         ClickHdl_Impl(*m_xLinguOptionsEditPB);
     }
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxLinguTabPage, PostDblClickHdl_Impl, void*, void)
diff --git a/cui/source/options/optpath.cxx b/cui/source/options/optpath.cxx
index 3760e16c83fe..73110b9e193f 100644
--- a/cui/source/options/optpath.cxx
+++ b/cui/source/options/optpath.cxx
@@ -457,9 +457,10 @@ void SvxPathTabPage::ChangeCurrentEntry( const OUString& _rFolder )
     }
 }
 
-IMPL_LINK_NOARG(SvxPathTabPage, DoubleClickPathHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxPathTabPage, DoubleClickPathHdl_Impl, weld::TreeView&, bool)
 {
     PathHdl_Impl(*m_xPathBtn);
+    return true;
 }
 
 IMPL_LINK_NOARG(SvxPathTabPage, PathHdl_Impl, weld::Button&, void)
diff --git a/cui/source/options/treeopt.cxx b/cui/source/options/treeopt.cxx
index ab802ecaa63b..845e7651ad68 100644
--- a/cui/source/options/treeopt.cxx
+++ b/cui/source/options/treeopt.cxx
@@ -608,14 +608,6 @@ sal_uInt16  OfaTreeOptionsDialog::AddGroup(const OUString& rGroupName,
     return nRet - 1;
 }
 
-IMPL_STATIC_LINK(OfaTreeOptionsDialog, ExpandCollapseHdl_Impl, weld::TreeView&, xTreeView, void)
-{
-    std::unique_ptr<weld::TreeIter> xEntry(xTreeView.make_iterator());
-    xTreeView.get_selected(xEntry.get());
-    if (xTreeView.iter_has_child(*xEntry))
-        xTreeView.get_row_expanded(*xEntry) ? xTreeView.collapse_row(*xEntry) : xTreeView.expand_row(*xEntry);
-}
-
 IMPL_LINK_NOARG(OfaTreeOptionsDialog, ShowPageHdl_Impl, weld::TreeView&, void)
 {
     SelectHdl_Impl();
@@ -749,7 +741,6 @@ void OfaTreeOptionsDialog::ApplyItemSets()
 void OfaTreeOptionsDialog::InitTreeAndHandler()
 {
     xTreeLB->set_help_id(HID_OFADLG_TREELISTBOX);
-    xTreeLB->connect_row_activated( LINK( this, OfaTreeOptionsDialog, ExpandCollapseHdl_Impl ) );
     xTreeLB->connect_changed( LINK( this, OfaTreeOptionsDialog, ShowPageHdl_Impl ) );
     xBackPB->connect_clicked( LINK( this, OfaTreeOptionsDialog, BackHdl_Impl ) );
     xApplyPB->connect_clicked( LINK( this, OfaTreeOptionsDialog, ApplyHdl_Impl ) );
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index d95471f14b0f..1f5f78dfdce2 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -611,9 +611,10 @@ IMPL_LINK(OfaSwAutoFmtOptionsPage, SelectHdl, weld::TreeView&, rBox, void)
     m_xEditPB->set_sensitive(rBox.get_selected_id().toInt64() != 0);
 }
 
-IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, DoubleClickEditHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, DoubleClickEditHdl, weld::TreeView&, bool)
 {
     EditHdl(*m_xEditPB);
+    return true;
 }
 
 IMPL_LINK_NOARG(OfaSwAutoFmtOptionsPage, EditHdl, weld::Button&, void)
diff --git a/cui/source/tabpages/macroass.cxx b/cui/source/tabpages/macroass.cxx
index 0a62c5aadeb5..df3e47bf489b 100644
--- a/cui/source/tabpages/macroass.cxx
+++ b/cui/source/tabpages/macroass.cxx
@@ -259,9 +259,10 @@ IMPL_LINK(SfxMacroTabPage, AssignDeleteClickHdl_Impl, weld::Button&, rBtn, void)
     AssignDeleteHdl(&rBtn);
 }
 
-IMPL_LINK(SfxMacroTabPage, AssignDeleteHdl_Impl, weld::TreeView&, rBtn, void)
+IMPL_LINK(SfxMacroTabPage, AssignDeleteHdl_Impl, weld::TreeView&, rBtn, bool)
 {
     AssignDeleteHdl(&rBtn);
+    return true;
 }
 
 void SfxMacroTabPage::AssignDeleteHdl(const weld::Widget* pBtn)
@@ -316,7 +317,7 @@ IMPL_LINK( SfxMacroTabPage, TimeOut_Impl, Timer*,, void )
 void SfxMacroTabPage::InitAndSetHandler()
 {
     weld::TreeView& rListBox = mpImpl->m_xEventLB->GetListBox();
-    Link<weld::TreeView&,void> aLnk(LINK(this, SfxMacroTabPage, AssignDeleteHdl_Impl));
+    Link<weld::TreeView&,bool> aLnk(LINK(this, SfxMacroTabPage, AssignDeleteHdl_Impl));
     mpImpl->m_xMacroLB->connect_row_activated( aLnk);
     mpImpl->m_xDeletePB->connect_clicked(LINK(this, SfxMacroTabPage, AssignDeleteClickHdl_Impl));
     mpImpl->m_xAssignPB->connect_clicked(LINK(this, SfxMacroTabPage, AssignDeleteClickHdl_Impl));
diff --git a/cui/source/tabpages/numfmt.cxx b/cui/source/tabpages/numfmt.cxx
index 18517527dca6..3a7dc1b053d4 100644
--- a/cui/source/tabpages/numfmt.cxx
+++ b/cui/source/tabpages/numfmt.cxx
@@ -1118,8 +1118,7 @@ void SvxNumberFormatTabPage::UpdateDecimalsDenominatorEditBox()
 #*  Output:     ---
 #*
 #************************************************************************/
-
-IMPL_LINK(SvxNumberFormatTabPage, DoubleClickHdl_Impl, weld::TreeView&, rLb, void)
+IMPL_LINK(SvxNumberFormatTabPage, DoubleClickHdl_Impl, weld::TreeView&, rLb, bool)
 {
     SelFormatHdl_Impl(&rLb);
 
@@ -1127,8 +1126,9 @@ IMPL_LINK(SvxNumberFormatTabPage, DoubleClickHdl_Impl, weld::TreeView&, rLb, voi
     assert(pController);
     weld::Button& rOkButton = pController->GetOKButton();
     rOkButton.clicked();
-}
 
+    return true;
+}
 
 /*************************************************************************
 #*  Method:    SelFormatHdl_Impl
diff --git a/cui/source/tabpages/tabstpge.cxx b/cui/source/tabpages/tabstpge.cxx
index 5c347ffd5612..f9b7205247cb 100644
--- a/cui/source/tabpages/tabstpge.cxx
+++ b/cui/source/tabpages/tabstpge.cxx
@@ -615,7 +615,7 @@ IMPL_LINK_NOARG(SvxTabulatorTabPage, GetDezCharHdl_Impl, weld::Widget&, void)
     }
 }
 
-IMPL_LINK_NOARG(SvxTabulatorTabPage, SelectHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SvxTabulatorTabPage, SelectHdl_Impl, weld::TreeView&, bool)
 {
     const int nPos = FindCurrentTab();
     if (nPos != -1)
@@ -624,6 +624,7 @@ IMPL_LINK_NOARG(SvxTabulatorTabPage, SelectHdl_Impl, weld::TreeView&, void)
         m_xNewBtn->set_sensitive(false);
         SetFillAndTabType_Impl();
     }
+    return true;
 }
 
 OUString SvxTabulatorTabPage::FormatTab()
diff --git a/dbaccess/source/ui/dlg/CollectionView.cxx b/dbaccess/source/ui/dlg/CollectionView.cxx
index 14f942902e9d..a55badb43b28 100644
--- a/dbaccess/source/ui/dlg/CollectionView.cxx
+++ b/dbaccess/source/ui/dlg/CollectionView.cxx
@@ -226,7 +226,7 @@ IMPL_LINK_NOARG(OCollectionView, Up_Click, weld::Button&, void)
     }
 }
 
-IMPL_LINK_NOARG(OCollectionView, Dbl_Click_FileView, weld::TreeView&, void)
+IMPL_LINK_NOARG(OCollectionView, Dbl_Click_FileView, weld::TreeView&, bool)
 {
     try
     {
@@ -252,6 +252,8 @@ IMPL_LINK_NOARG(OCollectionView, Dbl_Click_FileView, weld::TreeView&, void)
     {
         DBG_UNHANDLED_EXCEPTION("dbaccess");
     }
+
+    return true;
 }
 
 void OCollectionView::initCurrentPath()
diff --git a/dbaccess/source/ui/dlg/adtabdlg.cxx b/dbaccess/source/ui/dlg/adtabdlg.cxx
index 9cb22f5fbb10..e69987042145 100644
--- a/dbaccess/source/ui/dlg/adtabdlg.cxx
+++ b/dbaccess/source/ui/dlg/adtabdlg.cxx
@@ -407,7 +407,7 @@ IMPL_LINK_NOARG( OAddTableDlg, AddClickHdl, weld::Button&, void )
     TableListDoubleClickHdl(m_xTableList->GetWidget());
 }
 
-IMPL_LINK_NOARG(OAddTableDlg, TableListDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(OAddTableDlg, TableListDoubleClickHdl, weld::TreeView&, bool)
 {
     if ( impl_isAddAllowed() )
     {
@@ -421,6 +421,7 @@ IMPL_LINK_NOARG(OAddTableDlg, TableListDoubleClickHdl, weld::TreeView&, void)
         if ( !impl_isAddAllowed() )
             m_xDialog->response(RET_CLOSE);
     }
+    return true;
 }
 
 IMPL_LINK_NOARG( OAddTableDlg, TableListSelectHdl, weld::TreeView&, void )
diff --git a/dbaccess/source/ui/dlg/dsselect.cxx b/dbaccess/source/ui/dlg/dsselect.cxx
index c7eee5b6fba5..e9e5aa2ed98e 100644
--- a/dbaccess/source/ui/dlg/dsselect.cxx
+++ b/dbaccess/source/ui/dlg/dsselect.cxx
@@ -65,10 +65,11 @@ ODatasourceSelectDialog::~ODatasourceSelectDialog()
 {
 }
 
-IMPL_LINK(ODatasourceSelectDialog, ListDblClickHdl, weld::TreeView&, rListBox, void)
+IMPL_LINK(ODatasourceSelectDialog, ListDblClickHdl, weld::TreeView&, rListBox, bool)
 {
     if (rListBox.n_children())
         m_xDialog->response(RET_OK);
+    return true;
 }
 
 short ODatasourceSelectDialog::run()
diff --git a/dbaccess/source/ui/dlg/dsselect.hxx b/dbaccess/source/ui/dlg/dsselect.hxx
index b27693a70c18..2f2322de1f38 100644
--- a/dbaccess/source/ui/dlg/dsselect.hxx
+++ b/dbaccess/source/ui/dlg/dsselect.hxx
@@ -57,7 +57,7 @@ public:
     virtual short run() override;
 
 private:
-    DECL_LINK( ListDblClickHdl, weld::TreeView&, void );
+    DECL_LINK( ListDblClickHdl, weld::TreeView&, bool );
 #ifdef HAVE_ODBC_ADMINISTRATION
     DECL_LINK(ManageClickHdl, weld::Button&, void);
     DECL_LINK(ManageProcessFinished, void*, void);
diff --git a/dbaccess/source/ui/inc/CollectionView.hxx b/dbaccess/source/ui/inc/CollectionView.hxx
index 949e60b749ec..4dd484f24e9b 100644
--- a/dbaccess/source/ui/inc/CollectionView.hxx
+++ b/dbaccess/source/ui/inc/CollectionView.hxx
@@ -47,7 +47,7 @@ namespace dbaui
         DECL_LINK(Up_Click, weld::Button&, void);
         DECL_LINK(NewFolder_Click, weld::Button&, void);
         DECL_LINK(Save_Click, weld::Button&, void);
-        DECL_LINK(Dbl_Click_FileView, weld::TreeView&, void);
+        DECL_LINK(Dbl_Click_FileView, weld::TreeView&, bool);
 
         /// sets the fixedtext to the right content
         void initCurrentPath();
diff --git a/dbaccess/source/ui/inc/WColumnSelect.hxx b/dbaccess/source/ui/inc/WColumnSelect.hxx
index e024a0742e2b..59ebc0ae81a4 100644
--- a/dbaccess/source/ui/inc/WColumnSelect.hxx
+++ b/dbaccess/source/ui/inc/WColumnSelect.hxx
@@ -40,7 +40,7 @@ namespace dbaui
         std::unique_ptr<weld::TreeView> m_xNewColumnNames; // right side
 
         DECL_LINK( ButtonClickHdl, weld::Button&, void );
-        DECL_LINK( ListDoubleClickHdl, weld::TreeView&, void );
+        DECL_LINK( ListDoubleClickHdl, weld::TreeView&, bool );
 
         static void clearListBox(weld::TreeView& _rListBox);
         static void fillColumns(weld::TreeView const * pRight,
diff --git a/dbaccess/source/ui/inc/adtabdlg.hxx b/dbaccess/source/ui/inc/adtabdlg.hxx
index 1c87f218b717..bad72a5f6830 100644
--- a/dbaccess/source/ui/inc/adtabdlg.hxx
+++ b/dbaccess/source/ui/inc/adtabdlg.hxx
@@ -69,7 +69,7 @@ namespace dbaui
 
         DECL_LINK( AddClickHdl, weld::Button&, void );
         DECL_LINK( CloseClickHdl, weld::Button&, void);
-        DECL_LINK( TableListDoubleClickHdl, weld::TreeView&, void );
+        DECL_LINK( TableListDoubleClickHdl, weld::TreeView&, bool );
         DECL_LINK( TableListSelectHdl, weld::TreeView&, void );
         DECL_LINK( OnTypeSelected, weld::Button&, void );
 
diff --git a/dbaccess/source/ui/misc/WColumnSelect.cxx b/dbaccess/source/ui/misc/WColumnSelect.cxx
index d137ef8ea7a7..077e01049767 100644
--- a/dbaccess/source/ui/misc/WColumnSelect.cxx
+++ b/dbaccess/source/ui/misc/WColumnSelect.cxx
@@ -226,7 +226,7 @@ IMPL_LINK(OWizColumnSelect, ButtonClickHdl, weld::Button&, rButton, void)
         m_xOrgColumnNames->select(0);
 }
 
-IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, weld::TreeView&, rListBox, void )
+IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, weld::TreeView&, rListBox, bool )
 {
     weld::TreeView *pLeft,*pRight;
     if (&rListBox == m_xOrgColumnNames.get())
@@ -259,6 +259,8 @@ IMPL_LINK( OWizColumnSelect, ListDoubleClickHdl, weld::TreeView&, rListBox, void
         pLeft->remove(*it);
 
     enableButtons();
+
+    return true;
 }
 
 void OWizColumnSelect::clearListBox(weld::TreeView& rListBox)
diff --git a/extensions/source/abpilot/tableselectionpage.cxx b/extensions/source/abpilot/tableselectionpage.cxx
index 585a5ea3d5ae..abf8e582967a 100644
--- a/extensions/source/abpilot/tableselectionpage.cxx
+++ b/extensions/source/abpilot/tableselectionpage.cxx
@@ -67,10 +67,11 @@ namespace abp
         m_xTableList->select_text(rSettings.sSelectedTable);
     }
 
-    IMPL_LINK_NOARG( TableSelectionPage, OnTableDoubleClicked, weld::TreeView&, void )
+    IMPL_LINK_NOARG( TableSelectionPage, OnTableDoubleClicked, weld::TreeView&, bool )
     {
         if (m_xTableList->count_selected_rows() == 1)
             getDialog()->travelNext();
+        return true;
     }
 
     IMPL_LINK_NOARG( TableSelectionPage, OnTableSelected, weld::TreeView&, void )
diff --git a/extensions/source/abpilot/tableselectionpage.hxx b/extensions/source/abpilot/tableselectionpage.hxx
index 2f96aeb60bd2..e527b22c8461 100644
--- a/extensions/source/abpilot/tableselectionpage.hxx
+++ b/extensions/source/abpilot/tableselectionpage.hxx
@@ -44,7 +44,7 @@ namespace abp
         virtual bool        canAdvance() const override;
 
         DECL_LINK(OnTableSelected, weld::TreeView&, void);
-        DECL_LINK(OnTableDoubleClicked, weld::TreeView&, void);
+        DECL_LINK(OnTableDoubleClicked, weld::TreeView&, bool);
     };
 
 }   // namespace abp
diff --git a/extensions/source/bibliography/datman.cxx b/extensions/source/bibliography/datman.cxx
index d5d97729cfd4..8364deb9e657 100644
--- a/extensions/source/bibliography/datman.cxx
+++ b/extensions/source/bibliography/datman.cxx
@@ -404,7 +404,7 @@ class DBChangeDialog_Impl : public weld::GenericDialogController
 
     std::unique_ptr<weld::TreeView> m_xSelectionLB;
 
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 public:
     DBChangeDialog_Impl(weld::Window* pParent, BibDataManager* pMan);
 
@@ -433,9 +433,10 @@ DBChangeDialog_Impl::DBChangeDialog_Impl(weld::Window* pParent, BibDataManager*
     }
 }
 
-IMPL_LINK_NOARG(DBChangeDialog_Impl, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(DBChangeDialog_Impl, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 OUString  DBChangeDialog_Impl::GetCurrentURL()const
diff --git a/extensions/source/dbpilots/commonpagesdbp.cxx b/extensions/source/dbpilots/commonpagesdbp.cxx
index 513d02050679..30e76024218b 100644
--- a/extensions/source/dbpilots/commonpagesdbp.cxx
+++ b/extensions/source/dbpilots/commonpagesdbp.cxx
@@ -209,10 +209,11 @@ namespace dbp
         }
     }
 
-    IMPL_LINK(OTableSelectionPage, OnListboxDoubleClicked, weld::TreeView&, _rBox, void)
+    IMPL_LINK(OTableSelectionPage, OnListboxDoubleClicked, weld::TreeView&, _rBox, bool)
     {
         if (_rBox.count_selected_rows())
             getDialog()->travelNext();
+        return true;
     }
 
     IMPL_LINK(OTableSelectionPage, OnListboxSelection, weld::TreeView&, _rBox, void)
diff --git a/extensions/source/dbpilots/commonpagesdbp.hxx b/extensions/source/dbpilots/commonpagesdbp.hxx
index 08ddd560ab84..5d93b9301271 100644
--- a/extensions/source/dbpilots/commonpagesdbp.hxx
+++ b/extensions/source/dbpilots/commonpagesdbp.hxx
@@ -50,7 +50,7 @@ namespace dbp
         virtual bool        commitPage( ::vcl::WizardTypes::CommitPageReason _eReason ) override;
 
         DECL_LINK( OnListboxSelection, weld::TreeView&, void );
-        DECL_LINK( OnListboxDoubleClicked, weld::TreeView&, void );
+        DECL_LINK( OnListboxDoubleClicked, weld::TreeView&, bool );
         DECL_LINK( OnSearchClicked, weld::Button&, void );
 
         void implFillTables(const css::uno::Reference< css::sdbc::XConnection >&
diff --git a/extensions/source/dbpilots/gridwizard.cxx b/extensions/source/dbpilots/gridwizard.cxx
index f64897ca534c..3f979332a1da 100644
--- a/extensions/source/dbpilots/gridwizard.cxx
+++ b/extensions/source/dbpilots/gridwizard.cxx
@@ -366,13 +366,12 @@ namespace dbp
         getDialog()->enableButtons(WizardButtonFlags::FINISH, 0 != m_xSelFields->n_children());
     }
 
-    IMPL_LINK(OGridFieldsSelection, OnEntryDoubleClicked, weld::TreeView&, rList, void)
+    IMPL_LINK(OGridFieldsSelection, OnEntryDoubleClicked, weld::TreeView&, rList, bool)
     {
         weld::Button* pSimulateButton = m_xExistFields.get() == &rList ? m_xSelectOne.get() : m_xDeselectOne.get();
         if (pSimulateButton->get_sensitive())
-        {
             OnMoveOneEntry(*pSimulateButton);
-        }
+        return true;
     }
 
     IMPL_LINK_NOARG(OGridFieldsSelection, OnEntrySelected, weld::TreeView&, void)
diff --git a/extensions/source/dbpilots/gridwizard.hxx b/extensions/source/dbpilots/gridwizard.hxx
index c8258cd88b2d..5eb9732bd6fd 100644
--- a/extensions/source/dbpilots/gridwizard.hxx
+++ b/extensions/source/dbpilots/gridwizard.hxx
@@ -94,7 +94,7 @@ namespace dbp
         DECL_LINK(OnMoveOneEntry, weld::Button&, void);
         DECL_LINK(OnMoveAllEntries, weld::Button&, void);
         DECL_LINK(OnEntrySelected, weld::TreeView&, void);
-        DECL_LINK(OnEntryDoubleClicked, weld::TreeView&, void);
+        DECL_LINK(OnEntryDoubleClicked, weld::TreeView&, bool);
 
         void implCheckButtons();
     };
diff --git a/extensions/source/dbpilots/listcombowizard.cxx b/extensions/source/dbpilots/listcombowizard.cxx
index 8192180e9c1a..a1440f2468a3 100644
--- a/extensions/source/dbpilots/listcombowizard.cxx
+++ b/extensions/source/dbpilots/listcombowizard.cxx
@@ -292,10 +292,11 @@ namespace dbp
         updateDialogTravelUI();
     }
 
-    IMPL_LINK( OContentTableSelection, OnTableDoubleClicked, weld::TreeView&, _rListBox, void )
+    IMPL_LINK( OContentTableSelection, OnTableDoubleClicked, weld::TreeView&, _rListBox, bool )
     {
         if (_rListBox.count_selected_rows())
             getDialog()->travelNext();
+        return true;
     }
 
     void OContentTableSelection::initializePage()
@@ -369,10 +370,11 @@ namespace dbp
         return 0 != m_xSelectTableField->count_selected_rows();
     }
 
-    IMPL_LINK_NOARG( OContentFieldSelection, OnTableDoubleClicked, weld::TreeView&, void )
+    IMPL_LINK_NOARG( OContentFieldSelection, OnTableDoubleClicked, weld::TreeView&, bool )
     {
         if (m_xSelectTableField->count_selected_rows())
             getDialog()->travelNext();
+        return true;
     }
 
     IMPL_LINK_NOARG( OContentFieldSelection, OnFieldSelected, weld::TreeView&, void )
diff --git a/extensions/source/dbpilots/listcombowizard.hxx b/extensions/source/dbpilots/listcombowizard.hxx
index d01d270f858b..6fad3011006b 100644
--- a/extensions/source/dbpilots/listcombowizard.hxx
+++ b/extensions/source/dbpilots/listcombowizard.hxx
@@ -109,7 +109,7 @@ namespace dbp
         virtual bool        commitPage( ::vcl::WizardTypes::CommitPageReason _eReason ) override;
         virtual bool        canAdvance() const override;
 
-        DECL_LINK( OnTableDoubleClicked, weld::TreeView&, void );
+        DECL_LINK( OnTableDoubleClicked, weld::TreeView&, bool );
         DECL_LINK( OnTableSelected, weld::TreeView&, void );
     };
 
@@ -125,7 +125,7 @@ namespace dbp
 
     private:
         DECL_LINK( OnFieldSelected, weld::TreeView&, void );
-        DECL_LINK( OnTableDoubleClicked, weld::TreeView&, void );
+        DECL_LINK( OnTableDoubleClicked, weld::TreeView&, bool );
 
         // OWizardPage overridables
         virtual void        initializePage() override;
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
index 6f81c821f113..d5c568b7a49e 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
@@ -157,9 +157,10 @@ IMPL_LINK_NOARG(XMLFilterSettingsDialog, SelectionChangedHdl_Impl, weld::TreeVie
     updateStates();
 }
 
-IMPL_LINK_NOARG(XMLFilterSettingsDialog, DoubleClickHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(XMLFilterSettingsDialog, DoubleClickHdl_Impl, weld::TreeView&, bool)
 {
     onEdit();
+    return true;
 }
 
 void XMLFilterSettingsDialog::UpdateWindow()
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
index 2db86ee394cb..f6a876b258ab 100644
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.hxx
@@ -40,7 +40,7 @@ public:
 
     DECL_LINK(ClickHdl_Impl, weld::Button&, void );
     DECL_LINK(SelectionChangedHdl_Impl, weld::TreeView&, void);
-    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl_Impl, weld::TreeView&, bool);
 
     void    UpdateWindow();
 
diff --git a/formula/source/ui/dlg/funcpage.cxx b/formula/source/ui/dlg/funcpage.cxx
index 92cb584fc99c..92035c709a3d 100644
--- a/formula/source/ui/dlg/funcpage.cxx
+++ b/formula/source/ui/dlg/funcpage.cxx
@@ -203,9 +203,10 @@ IMPL_LINK_NOARG(FuncPage, SelTreeViewHdl, weld::TreeView&, void)
     aSelectionLink.Call(*this);
 }
 
-IMPL_LINK_NOARG(FuncPage, DblClkHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(FuncPage, DblClkHdl, weld::TreeView&, bool)
 {
     aDoubleClickLink.Call(*this);
+    return true;
 }
 
 IMPL_LINK_NOARG(FuncPage, ModifyHdl, weld::Entry&, void)
diff --git a/formula/source/ui/dlg/funcpage.hxx b/formula/source/ui/dlg/funcpage.hxx
index 41dfae60a6a4..95b9e1337b02 100644
--- a/formula/source/ui/dlg/funcpage.hxx
+++ b/formula/source/ui/dlg/funcpage.hxx
@@ -53,7 +53,7 @@ private:
 
     DECL_LINK(SelComboBoxHdl, weld::ComboBox&, void);
     DECL_LINK(SelTreeViewHdl, weld::TreeView&, void);
-    DECL_LINK(DblClkHdl, weld::TreeView&, void);
+    DECL_LINK(DblClkHdl, weld::TreeView&, bool);
     DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
     DECL_LINK(ModifyHdl, weld::Entry&, void);
 
diff --git a/include/sfx2/new.hxx b/include/sfx2/new.hxx
index 9792fc503ee8..54e66528e470 100644
--- a/include/sfx2/new.hxx
+++ b/include/sfx2/new.hxx
@@ -85,7 +85,7 @@ private:
 
     DECL_LINK(RegionSelect, weld::TreeView&, void);
     DECL_LINK(TemplateSelect, weld::TreeView&, void);
-    DECL_LINK(DoubleClick, weld::TreeView&, void);
+    DECL_LINK(DoubleClick, weld::TreeView&, bool);
     DECL_LINK(Expand, weld::Expander&, void);
     sal_uInt16  GetSelectedTemplatePos() const;
 
diff --git a/include/sfx2/newstyle.hxx b/include/sfx2/newstyle.hxx
index 8e7489881c47..72569f4b45fd 100644
--- a/include/sfx2/newstyle.hxx
+++ b/include/sfx2/newstyle.hxx
@@ -36,7 +36,7 @@ private:
 
     std::unique_ptr<weld::MessageDialog> m_xQueryOverwriteBox;
 
-    DECL_DLLPRIVATE_LINK(OKHdl, weld::TreeView&, void);
+    DECL_DLLPRIVATE_LINK(OKHdl, weld::TreeView&, bool);
     DECL_DLLPRIVATE_LINK(OKClickHdl, weld::Button&, void);
     DECL_DLLPRIVATE_LINK(ModifyHdl, weld::ComboBox&, void);
 
diff --git a/include/svx/ClassificationDialog.hxx b/include/svx/ClassificationDialog.hxx
index edc21e14e50d..b9ca3f36d403 100644
--- a/include/svx/ClassificationDialog.hxx
+++ b/include/svx/ClassificationDialog.hxx
@@ -56,10 +56,10 @@ private:
     DECL_LINK(ButtonClicked, weld::Button&, void);
     DECL_LINK(SelectToolboxHdl, weld::ToggleButton&, void);
     DECL_LINK(SelectClassificationHdl, weld::ComboBox&, void);
-    DECL_LINK(SelectMarkingHdl, weld::TreeView&, void);
-    DECL_LINK(SelectIPPartNumbersHdl, weld::TreeView&, void);
+    DECL_LINK(SelectMarkingHdl, weld::TreeView&, bool);
+    DECL_LINK(SelectIPPartNumbersHdl, weld::TreeView&, bool);
     DECL_LINK(SelectRecentlyUsedHdl, weld::ComboBox&, void);
-    DECL_LINK(SelectIPPartHdl, weld::TreeView&, void);
+    DECL_LINK(SelectIPPartHdl, weld::TreeView&, bool);
     DECL_LINK(EditWindowModifiedHdl, LinkParamNone*, void);
     DECL_STATIC_LINK(ClassificationDialog, ExpandedHdl, weld::Expander&, void);
     DECL_STATIC_LINK(ClassificationDialog, KeyInput, const KeyEvent&, bool);
diff --git a/include/svx/txencbox.hxx b/include/svx/txencbox.hxx
index b341994dc997..2ed7ffa6bad9 100644
--- a/include/svx/txencbox.hxx
+++ b/include/svx/txencbox.hxx
@@ -197,7 +197,7 @@ public:
     rtl_TextEncoding    GetSelectTextEncoding() const;
 
     void connect_changed(const Link<weld::TreeView&, void>& rLink) { m_xControl->connect_changed(rLink); }
-    void connect_row_activated(const Link<weld::TreeView&, void>& rLink) { m_xControl->connect_row_activated(rLink); }
+    void connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { m_xControl->connect_row_activated(rLink); }
     void grab_focus() { m_xControl->grab_focus(); }
     void show() { m_xControl->show(); }
     void hide() { m_xControl->hide(); }
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 327e3762cf3d..197eaaca79b7 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -642,7 +642,7 @@ private:
 
 protected:
     Link<TreeView&, void> m_aChangeHdl;
-    Link<TreeView&, void> m_aRowActivatedHdl;
+    Link<TreeView&, bool> m_aRowActivatedHdl;
     Link<int, void> m_aColumnClickedHdl;
     Link<const std::pair<int, int>&, void> m_aRadioToggleHdl;
     Link<const TreeIter&, bool> m_aEditingStartedHdl;
@@ -657,7 +657,7 @@ protected:
     std::vector<int> m_aRadioIndexes;
 
     void signal_changed() { m_aChangeHdl.Call(*this); }
-    void signal_row_activated() { m_aRowActivatedHdl.Call(*this); }
+    bool signal_row_activated() { return m_aRowActivatedHdl.Call(*this); }
     void signal_column_clicked(int nColumn) { m_aColumnClickedHdl.Call(nColumn); }
     bool signal_expanding(const TreeIter& rIter)
     {
@@ -725,7 +725,14 @@ public:
     }
 
     void connect_changed(const Link<TreeView&, void>& rLink) { m_aChangeHdl = rLink; }
-    void connect_row_activated(const Link<TreeView&, void>& rLink) { m_aRowActivatedHdl = rLink; }
+
+    /* A row is "activated" when the user double clicks a treeview row. It may
+       also be emitted when a row is selected and Space or Enter is pressed.
+
+       a return of "true" means the activation has been handled, a "false" propogates
+       the activation to the default handler which expands/collapses the row, if possible.
+    */
+    void connect_row_activated(const Link<TreeView&, bool>& rLink) { m_aRowActivatedHdl = rLink; }
 
     // Argument is a pair of row, col describing the node in non-tree mode.
     // If in tree mode, then retrieve the toggled node with get_cursor
@@ -1400,7 +1407,7 @@ public:
     {
         return m_xEntry->get_selection_bounds(rStartPos, rEndPos);
     }
-    void connect_row_activated(const Link<TreeView&, void>& rLink)
+    void connect_row_activated(const Link<TreeView&, bool>& rLink)
     {
         m_xTreeView->connect_row_activated(rLink);
     }
diff --git a/sc/source/ui/condformat/condformatmgr.cxx b/sc/source/ui/condformat/condformatmgr.cxx
index 1ac76ac319b1..a8206a3d1d7a 100644
--- a/sc/source/ui/condformat/condformatmgr.cxx
+++ b/sc/source/ui/condformat/condformatmgr.cxx
@@ -136,17 +136,17 @@ IMPL_LINK_NOARG(ScCondFormatManagerDlg, EditBtnClickHdl, weld::Button&, void)
     EditBtnHdl(*m_xTreeView);
 }
 
-IMPL_LINK_NOARG(ScCondFormatManagerDlg, EditBtnHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScCondFormatManagerDlg, EditBtnHdl, weld::TreeView&, bool)
 {
     ScConditionalFormat* pFormat = m_xCtrlManager->GetSelection();
 
     if (!pFormat)
-        return;
+        return true;
 
     m_bModified = true;
     m_xDialog->response( DLG_RET_EDIT );
 
-    return;
+    return true;
 }
 
 IMPL_LINK_NOARG(ScCondFormatManagerDlg, AddBtnHdl, weld::Button&, void)
diff --git a/sc/source/ui/dbgui/PivotLayoutTreeList.cxx b/sc/source/ui/dbgui/PivotLayoutTreeList.cxx
index 6882a19ee6e7..e9a16a33b729 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeList.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeList.cxx
@@ -34,17 +34,17 @@ void ScPivotLayoutTreeList::Setup(ScPivotLayoutDialog* pParent, SvPivotTreeListT
     meType = eType;
 }
 
-IMPL_LINK_NOARG(ScPivotLayoutTreeList, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScPivotLayoutTreeList, DoubleClickHdl, weld::TreeView&, bool)
 {
     int nEntry = mxControl->get_cursor_index();
     if (nEntry == -1)
-        return;
+        return true;
 
     ScItemValue* pCurrentItemValue = reinterpret_cast<ScItemValue*>(mxControl->get_id(nEntry).toInt64());
     ScPivotFuncData& rCurrentFunctionData = pCurrentItemValue->maFunctionData;
 
     if (mpParent->IsDataElement(rCurrentFunctionData.mnCol))
-        return;
+        return true;
 
     SCCOL nCurrentColumn = rCurrentFunctionData.mnCol;
     ScDPLabelData& rCurrentLabelData = mpParent->GetLabelData(nCurrentColumn);
@@ -62,6 +62,8 @@ IMPL_LINK_NOARG(ScPivotLayoutTreeList, DoubleClickHdl, weld::TreeView&, void)
         pDialog->FillLabelData(rCurrentLabelData);
         rCurrentFunctionData.mnFuncMask = pDialog->GetFuncMask();
     }
+
+    return true;
 }
 
 void ScPivotLayoutTreeList::FillFields(ScPivotFieldVector& rFieldVector)
diff --git a/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx b/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx
index dec6a897ee95..cde29f02034a 100644
--- a/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx
+++ b/sc/source/ui/dbgui/PivotLayoutTreeListData.cxx
@@ -71,11 +71,11 @@ ScPivotLayoutTreeListData::ScPivotLayoutTreeListData(std::unique_ptr<weld::TreeV
 ScPivotLayoutTreeListData::~ScPivotLayoutTreeListData()
 {}
 
-IMPL_LINK_NOARG(ScPivotLayoutTreeListData, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScPivotLayoutTreeListData, DoubleClickHdl, weld::TreeView&, bool)
 {
     int nEntry = mxControl->get_cursor_index();
     if (nEntry == -1)
-        return;
+        return true;
 
     ScItemValue* pCurrentItemValue = reinterpret_cast<ScItemValue*>(mxControl->get_id(nEntry).toInt64());
     ScPivotFuncData& rCurrentFunctionData = pCurrentItemValue->maFunctionData;
@@ -106,6 +106,8 @@ IMPL_LINK_NOARG(ScPivotLayoutTreeListData, DoubleClickHdl, weld::TreeView&, void
 
         mxControl->set_text(nEntry, sDataItemName);
     }
+
+    return true;
 }
 
 void ScPivotLayoutTreeListData::FillDataField(ScPivotFieldVector& rDataFields)
diff --git a/sc/source/ui/dbgui/pvfundlg.cxx b/sc/source/ui/dbgui/pvfundlg.cxx
index a082dbfdd544..f9df9a244eb7 100644
--- a/sc/source/ui/dbgui/pvfundlg.cxx
+++ b/sc/source/ui/dbgui/pvfundlg.cxx
@@ -438,9 +438,10 @@ IMPL_LINK( ScDPFunctionDlg, SelectHdl, weld::ComboBox&, rLBox, void )
     }
 }
 
-IMPL_LINK_NOARG(ScDPFunctionDlg, DblClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScDPFunctionDlg, DblClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 ScDPSubtotalDlg::ScDPSubtotalDlg(weld::Widget* pParent, ScDPObject& rDPObj,
@@ -529,9 +530,10 @@ IMPL_LINK(ScDPSubtotalDlg, RadioClickHdl, weld::Button&, rBtn, void)
     mxLbFunc->set_sensitive(&rBtn == mxRbUser.get());
 }
 
-IMPL_LINK_NOARG(ScDPSubtotalDlg, DblClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScDPSubtotalDlg, DblClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 IMPL_LINK(ScDPSubtotalDlg, ClickHdl, weld::Button&, rBtn, void)
@@ -905,9 +907,10 @@ OUString ScDPShowDetailDlg::GetDimensionName() const
     return mrDPObj.GetDimName(nDim, bIsDataLayout);
 }
 
-IMPL_LINK_NOARG(ScDPShowDetailDlg, DblClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScDPShowDetailDlg, DblClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/dbgui/scuiimoptdlg.cxx b/sc/source/ui/dbgui/scuiimoptdlg.cxx
index 0a0d8b2b884b..03fce13e6fbc 100644
--- a/sc/source/ui/dbgui/scuiimoptdlg.cxx
+++ b/sc/source/ui/dbgui/scuiimoptdlg.cxx
@@ -317,9 +317,10 @@ IMPL_LINK_NOARG(ScImportOptionsDlg, FixedWidthHdl, weld::ToggleButton&, void)
     m_xCbQuoteAll->set_sensitive( bEnable );
 }
 
-IMPL_LINK_NOARG(ScImportOptionsDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScImportOptionsDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 void ScImportOptionsDlg::SaveImportOptions() const
diff --git a/sc/source/ui/inc/PivotLayoutTreeList.hxx b/sc/source/ui/inc/PivotLayoutTreeList.hxx
index 02120e7b4812..42f090faa5d9 100644
--- a/sc/source/ui/inc/PivotLayoutTreeList.hxx
+++ b/sc/source/ui/inc/PivotLayoutTreeList.hxx
@@ -21,7 +21,7 @@ private:
     std::vector<std::unique_ptr<ScItemValue> > maItemValues;
 
     DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 
 public:
     ScPivotLayoutTreeList(std::unique_ptr<weld::TreeView> xControl);
diff --git a/sc/source/ui/inc/PivotLayoutTreeListData.hxx b/sc/source/ui/inc/PivotLayoutTreeListData.hxx
index c9f9dce4366c..c5a3fb07ce44 100644
--- a/sc/source/ui/inc/PivotLayoutTreeListData.hxx
+++ b/sc/source/ui/inc/PivotLayoutTreeListData.hxx
@@ -20,7 +20,7 @@ class ScPivotLayoutTreeListData final : public ScPivotLayoutTreeListBase
 {
 private:
     DECL_LINK(KeyInputHdl, const KeyEvent&, bool);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 
 public:
     ScPivotLayoutTreeListData(std::unique_ptr<weld::TreeView> xControl);
diff --git a/sc/source/ui/inc/condformatmgr.hxx b/sc/source/ui/inc/condformatmgr.hxx
index 94bbf346cb1d..02e904b3c255 100644
--- a/sc/source/ui/inc/condformatmgr.hxx
+++ b/sc/source/ui/inc/condformatmgr.hxx
@@ -63,7 +63,7 @@ private:
     DECL_LINK(RemoveBtnHdl, weld::Button&, void);
     DECL_LINK(EditBtnClickHdl, weld::Button&, void);
     DECL_LINK(AddBtnHdl, weld::Button&, void);
-    DECL_LINK(EditBtnHdl, weld::TreeView&, void);
+    DECL_LINK(EditBtnHdl, weld::TreeView&, bool);
 };
 
 #endif
diff --git a/sc/source/ui/inc/lbseldlg.hxx b/sc/source/ui/inc/lbseldlg.hxx
index fc78c8a77367..62bec0d291c5 100644
--- a/sc/source/ui/inc/lbseldlg.hxx
+++ b/sc/source/ui/inc/lbseldlg.hxx
@@ -27,7 +27,7 @@ class ScSelEntryDlg : public weld::GenericDialogController
 private:
     std::unique_ptr<weld::TreeView> m_xLb;
 
-    DECL_LINK(DblClkHdl, weld::TreeView&, void);
+    DECL_LINK(DblClkHdl, weld::TreeView&, bool);
 
 public:
     ScSelEntryDlg(weld::Window* pParent, const std::vector<OUString> &rEntryList);
diff --git a/sc/source/ui/inc/pvfundlg.hxx b/sc/source/ui/inc/pvfundlg.hxx
index 19b1d49cb164..47891ece7a8d 100644
--- a/sc/source/ui/inc/pvfundlg.hxx
+++ b/sc/source/ui/inc/pvfundlg.hxx
@@ -41,7 +41,7 @@ public:
 
     void set_sensitive(bool sensitive) { m_xControl->set_sensitive(sensitive); }
     void set_selection_mode(SelectionMode eMode) { m_xControl->set_selection_mode(eMode); }
-    void connect_row_activated(const Link<weld::TreeView&, void>& rLink) { m_xControl->connect_row_activated(rLink); }
+    void connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { m_xControl->connect_row_activated(rLink); }
     int get_height_rows(int nRows) const { return m_xControl->get_height_rows(nRows); }
     void set_size_request(int nWidth, int nHeight) { m_xControl->set_size_request(nWidth, nHeight); }
 
@@ -70,7 +70,7 @@ private:
     sal_Int32 FindBaseItemPos( const OUString& rEntry, sal_Int32 nStartPos ) const;
 
     DECL_LINK(SelectHdl, weld::ComboBox&, void);
-    DECL_LINK(DblClickHdl, weld::TreeView&, void);
+    DECL_LINK(DblClickHdl, weld::TreeView&, bool);
 
 private:
     std::unique_ptr<ScDPFunctionListBox> mxLbFunc;
@@ -103,7 +103,7 @@ public:
 private:
     void                Init( const ScDPLabelData& rLabelData, const ScPivotFuncData& rFuncData );
 
-    DECL_LINK( DblClickHdl, weld::TreeView&, void );
+    DECL_LINK( DblClickHdl, weld::TreeView&, bool );
     DECL_LINK( RadioClickHdl, weld::Button&, void );
     DECL_LINK( ClickHdl, weld::Button&, void );
 
@@ -191,7 +191,7 @@ public:
     OUString GetDimensionName() const;
 
 private:
-    DECL_LINK(DblClickHdl, weld::TreeView&, void);
+    DECL_LINK(DblClickHdl, weld::TreeView&, bool);
 
 private:
     typedef std::unordered_map<OUString, long> DimNameIndexMap;
diff --git a/sc/source/ui/inc/scuiautofmt.hxx b/sc/source/ui/inc/scuiautofmt.hxx
index 6ddaf400ac94..3b05ec1dfd60 100644
--- a/sc/source/ui/inc/scuiautofmt.hxx
+++ b/sc/source/ui/inc/scuiautofmt.hxx
@@ -70,7 +70,7 @@ private:
     DECL_LINK( RemoveHdl, weld::Button&, void );
     DECL_LINK( SelFmtHdl, weld::TreeView&, void );
     DECL_LINK( CloseHdl, weld::Button&, void );
-    DECL_LINK( DblClkHdl, weld::TreeView&, void );
+    DECL_LINK( DblClkHdl, weld::TreeView&, bool );
     DECL_LINK( RenameHdl, weld::Button&, void );
 
 };
diff --git a/sc/source/ui/inc/scuiimoptdlg.hxx b/sc/source/ui/inc/scuiimoptdlg.hxx
index fff65114ec98..b100410bf620 100644
--- a/sc/source/ui/inc/scuiimoptdlg.hxx
+++ b/sc/source/ui/inc/scuiimoptdlg.hxx
@@ -70,7 +70,7 @@ private:
     void FillFromDbTextEncodingMap(bool bExcludeImportSubsets, sal_uInt32 nExcludeInfoFlags = 0);
 
     DECL_LINK(FixedWidthHdl, weld::ToggleButton&, void);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 };
 
 #endif
diff --git a/sc/source/ui/inc/shtabdlg.hxx b/sc/source/ui/inc/shtabdlg.hxx
index 37d69ba07a36..0143ad73a690 100644
--- a/sc/source/ui/inc/shtabdlg.hxx
+++ b/sc/source/ui/inc/shtabdlg.hxx
@@ -28,7 +28,7 @@ private:
     std::unique_ptr<weld::Frame> m_xFrame;
     std::unique_ptr<weld::TreeView> m_xLb;
 
-    DECL_LINK( DblClkHdl, weld::TreeView&, void );
+    DECL_LINK( DblClkHdl, weld::TreeView&, bool );
 
 public:
     ScShowTabDlg(weld::Window* pParent);
diff --git a/sc/source/ui/inc/solveroptions.hxx b/sc/source/ui/inc/solveroptions.hxx
index 18bc0ab3012a..41875a07b7d5 100644
--- a/sc/source/ui/inc/solveroptions.hxx
+++ b/sc/source/ui/inc/solveroptions.hxx
@@ -67,7 +67,7 @@ class ScSolverOptionsDialog : public weld::GenericDialogController
 
     DECL_LINK( EngineSelectHdl, weld::ComboBox&, void );
     DECL_LINK( SettingsSelHdl, weld::TreeView&, void );
-    DECL_LINK( SettingsDoubleClickHdl, weld::TreeView&, void );
+    DECL_LINK( SettingsDoubleClickHdl, weld::TreeView&, bool );
     DECL_LINK( ButtonHdl, weld::Button&, void );
 
     void    ReadFromComponent();
diff --git a/sc/source/ui/miscdlgs/lbseldlg.cxx b/sc/source/ui/miscdlgs/lbseldlg.cxx
index 67adcb1dbe9a..4c0b592c7073 100644
--- a/sc/source/ui/miscdlgs/lbseldlg.cxx
+++ b/sc/source/ui/miscdlgs/lbseldlg.cxx
@@ -45,9 +45,10 @@ OUString ScSelEntryDlg::GetSelectedEntry() const
     return m_xLb->get_selected_text();
 }
 
-IMPL_LINK_NOARG(ScSelEntryDlg, DblClkHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScSelEntryDlg, DblClkHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/miscdlgs/scuiautofmt.cxx b/sc/source/ui/miscdlgs/scuiautofmt.cxx
index f933fc0ffa41..82d80da27619 100644
--- a/sc/source/ui/miscdlgs/scuiautofmt.cxx
+++ b/sc/source/ui/miscdlgs/scuiautofmt.cxx
@@ -141,12 +141,14 @@ IMPL_LINK(ScAutoFormatDlg, CloseHdl, weld::Button&, rBtn, void)
     }
 }
 
-IMPL_LINK_NOARG(ScAutoFormatDlg, DblClkHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScAutoFormatDlg, DblClkHdl, weld::TreeView&, bool)
 {
     if ( bCoreDataChanged )
         ScGlobal::GetOrCreateAutoFormat()->Save();
 
     m_xDialog->response( RET_OK );
+
+    return true;
 }
 
 IMPL_LINK(ScAutoFormatDlg, CheckHdl, weld::ToggleButton&, rBtn, void)
diff --git a/sc/source/ui/miscdlgs/shtabdlg.cxx b/sc/source/ui/miscdlgs/shtabdlg.cxx
index ee21149bd988..71e4fa0d1c03 100644
--- a/sc/source/ui/miscdlgs/shtabdlg.cxx
+++ b/sc/source/ui/miscdlgs/shtabdlg.cxx
@@ -63,9 +63,10 @@ OUString ScShowTabDlg::GetEntry(sal_Int32 nIndex) const
     return m_xLb->get_text(nIndex);
 }
 
-IMPL_LINK_NOARG(ScShowTabDlg, DblClkHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScShowTabDlg, DblClkHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/miscdlgs/solveroptions.cxx b/sc/source/ui/miscdlgs/solveroptions.cxx
index 33cfc826fd06..40efcef60260 100644
--- a/sc/source/ui/miscdlgs/solveroptions.cxx
+++ b/sc/source/ui/miscdlgs/solveroptions.cxx
@@ -278,9 +278,10 @@ IMPL_LINK( ScSolverOptionsDialog, ButtonHdl, weld::Button&, rBtn, void )
         EditOption();
 }
 
-IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsDoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(ScSolverOptionsDialog, SettingsDoubleClickHdl, weld::TreeView&, bool)
 {
     EditOption();
+    return true;
 }
 
 IMPL_LINK_NOARG(ScSolverOptionsDialog, EngineSelectHdl, weld::ComboBox&, void)
diff --git a/sfx2/source/dialog/newstyle.cxx b/sfx2/source/dialog/newstyle.cxx
index 088dbe6ddbdb..ed7a20f70d63 100644
--- a/sfx2/source/dialog/newstyle.cxx
+++ b/sfx2/source/dialog/newstyle.cxx
@@ -49,9 +49,10 @@ IMPL_LINK_NOARG(SfxNewStyleDlg, OKClickHdl, weld::Button&, void)
         m_xDialog->response(RET_OK);
 }
 
-IMPL_LINK_NOARG(SfxNewStyleDlg, OKHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SfxNewStyleDlg, OKHdl, weld::TreeView&, bool)
 {
     OKClickHdl(*m_xOKBtn);
+    return true;
 }
 
 IMPL_LINK(SfxNewStyleDlg, ModifyHdl, weld::ComboBox&, rBox, void)
diff --git a/sfx2/source/dialog/versdlg.cxx b/sfx2/source/dialog/versdlg.cxx
index 6dfc4329c769..2aece774b2cd 100644
--- a/sfx2/source/dialog/versdlg.cxx
+++ b/sfx2/source/dialog/versdlg.cxx
@@ -289,9 +289,10 @@ void SfxVersionDialog::Open_Impl()
     m_xDialog->response(RET_OK);
 }
 
-IMPL_LINK_NOARG(SfxVersionDialog, DClickHdl_Impl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SfxVersionDialog, DClickHdl_Impl, weld::TreeView&, bool)
 {
     Open_Impl();
+    return true;
 }
 
 IMPL_LINK_NOARG(SfxVersionDialog, SelectHdl_Impl, weld::TreeView&, void)
diff --git a/sfx2/source/doc/new.cxx b/sfx2/source/doc/new.cxx
index 32abbf890f76..ecebd52c1ed7 100644
--- a/sfx2/source/doc/new.cxx
+++ b/sfx2/source/doc/new.cxx
@@ -206,11 +206,12 @@ IMPL_LINK_NOARG(SfxNewFileDialog, TemplateSelect, weld::TreeView&, void)
     m_aPrevIdle.Start();
 }
 
-IMPL_LINK_NOARG( SfxNewFileDialog, DoubleClick, weld::TreeView&, void )
+IMPL_LINK_NOARG( SfxNewFileDialog, DoubleClick, weld::TreeView&, bool )
 {
     // Still loading
     if (!m_xDocShell.Is() || !m_xDocShell->GetProgress())
         m_xDialog->response(RET_OK);
+    return true;
 }
 
 sal_uInt16  SfxNewFileDialog::GetSelectedTemplatePos() const
diff --git a/sfx2/source/inc/versdlg.hxx b/sfx2/source/inc/versdlg.hxx
index 8f9377881e91..d486692e77a3 100644
--- a/sfx2/source/inc/versdlg.hxx
+++ b/sfx2/source/inc/versdlg.hxx
@@ -41,7 +41,7 @@ class SfxVersionDialog : public SfxDialogController
     std::unique_ptr<weld::Button> m_xCmisButton;
     std::unique_ptr<weld::TreeView> m_xVersionBox;
 
-    DECL_LINK(DClickHdl_Impl, weld::TreeView&, void);
+    DECL_LINK(DClickHdl_Impl, weld::TreeView&, bool);
     DECL_LINK(SelectHdl_Impl, weld::TreeView&, void);
     DECL_LINK(ButtonHdl_Impl, weld::Button&, void );
     void Init_Impl();
diff --git a/svx/source/dialog/ClassificationDialog.cxx b/svx/source/dialog/ClassificationDialog.cxx
index 895688d07b51..c81fa7a2dc29 100644
--- a/svx/source/dialog/ClassificationDialog.cxx
+++ b/svx/source/dialog/ClassificationDialog.cxx
@@ -615,7 +615,7 @@ IMPL_LINK(ClassificationDialog, SelectClassificationHdl, weld::ComboBox&, rBox,
     m_nCurrentSelectedCategory = nSelected;
 }
 
-IMPL_LINK(ClassificationDialog, SelectMarkingHdl, weld::TreeView&, rBox, void)
+IMPL_LINK(ClassificationDialog, SelectMarkingHdl, weld::TreeView&, rBox, bool)
 {
     sal_Int32 nSelected = rBox.get_selected_index();
     if (nSelected >= 0)
@@ -623,9 +623,10 @@ IMPL_LINK(ClassificationDialog, SelectMarkingHdl, weld::TreeView&, rBox, void)
         const OUString aString = maHelper.GetMarkings()[nSelected];
         insertField(ClassificationType::MARKING, aString, aString);
     }
+    return true;
 }
 
-IMPL_LINK(ClassificationDialog, SelectIPPartNumbersHdl, weld::TreeView&, rBox, void)
+IMPL_LINK(ClassificationDialog, SelectIPPartNumbersHdl, weld::TreeView&, rBox, bool)
 {
     sal_Int32 nSelected = rBox.get_selected_index();
     if (nSelected >= 0)
@@ -634,6 +635,7 @@ IMPL_LINK(ClassificationDialog, SelectIPPartNumbersHdl, weld::TreeView&, rBox, v
         m_xIntellectualPropertyPartEdit->replace_selection(sString);
         m_xIntellectualPropertyPartEdit->grab_focus();
     }
+    return true;
 }
 
 IMPL_LINK(ClassificationDialog, SelectRecentlyUsedHdl, weld::ComboBox&, rBox, void)
@@ -646,7 +648,7 @@ IMPL_LINK(ClassificationDialog, SelectRecentlyUsedHdl, weld::ComboBox&, rBox, vo
     }
 }
 
-IMPL_LINK(ClassificationDialog, SelectIPPartHdl, weld::TreeView&, rBox, void)
+IMPL_LINK(ClassificationDialog, SelectIPPartHdl, weld::TreeView&, rBox, bool)
 {
     const sal_Int32 nSelected = rBox.get_selected_index();
     if (nSelected >= 0)
@@ -655,6 +657,7 @@ IMPL_LINK(ClassificationDialog, SelectIPPartHdl, weld::TreeView&, rBox, void)
         m_xIntellectualPropertyPartEdit->replace_selection(sString);
         m_xIntellectualPropertyPartEdit->grab_focus();
     }
+    return true;
 }
 
 IMPL_LINK(ClassificationDialog, ButtonClicked, weld::Button&, rButton, void)
diff --git a/sw/source/ui/chrdlg/swuiccoll.cxx b/sw/source/ui/chrdlg/swuiccoll.cxx
index 0a32569351fd..b794755744ba 100644
--- a/sw/source/ui/chrdlg/swuiccoll.cxx
+++ b/sw/source/ui/chrdlg/swuiccoll.cxx
@@ -188,9 +188,10 @@ IMPL_LINK(SwCondCollPage, AssignRemoveClickHdl, weld::Button&, rBtn, void)
     AssignRemove(&rBtn);
 }
 
-IMPL_LINK(SwCondCollPage, AssignRemoveTreeListBoxHdl, weld::TreeView&, rBtn, void)
+IMPL_LINK(SwCondCollPage, AssignRemoveTreeListBoxHdl, weld::TreeView&, rBtn, bool)
 {
     AssignRemove(&rBtn);
+    return true;
 }
 
 void SwCondCollPage::AssignRemove(const weld::Widget* pBtn)
diff --git a/sw/source/ui/dbui/dbinsdlg.cxx b/sw/source/ui/dbui/dbinsdlg.cxx
index a78e7acd2601..3a130a79d317 100644
--- a/sw/source/ui/dbui/dbinsdlg.cxx
+++ b/sw/source/ui/dbui/dbinsdlg.cxx
@@ -605,7 +605,7 @@ IMPL_LINK( SwInsertDBColAutoPilot, TableToFromHdl, weld::Button&, rButton, void
     }
 }
 
-IMPL_LINK(SwInsertDBColAutoPilot, DblClickHdl, weld::TreeView&, rBox, void)
+IMPL_LINK(SwInsertDBColAutoPilot, DblClickHdl, weld::TreeView&, rBox, bool)
 {
     weld::Button* pButton = nullptr;
     if( &rBox == m_xLbTextDbColumn.get() )
@@ -617,6 +617,8 @@ IMPL_LINK(SwInsertDBColAutoPilot, DblClickHdl, weld::TreeView&, rBox, void)
 
     if (pButton)
         TableToFromHdl(*pButton);
+
+    return true;
 }
 
 IMPL_LINK_NOARG(SwInsertDBColAutoPilot, TableFormatHdl, weld::Button&, void)
diff --git a/sw/source/ui/dochdl/selglos.cxx b/sw/source/ui/dochdl/selglos.cxx
index 21f22690bbc2..534aa9b81667 100644
--- a/sw/source/ui/dochdl/selglos.cxx
+++ b/sw/source/ui/dochdl/selglos.cxx
@@ -34,9 +34,10 @@ SwSelGlossaryDlg::~SwSelGlossaryDlg()
 {
 }
 
-IMPL_LINK_NOARG(SwSelGlossaryDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwSelGlossaryDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/fldui/DropDownFieldDialog.cxx b/sw/source/ui/fldui/DropDownFieldDialog.cxx
index e5a549bbc69a..b9cb3b89f82a 100644
--- a/sw/source/ui/fldui/DropDownFieldDialog.cxx
+++ b/sw/source/ui/fldui/DropDownFieldDialog.cxx
@@ -42,7 +42,7 @@ sw::DropDownFieldDialog::DropDownFieldDialog(weld::Widget *pParent, SwWrtShell &
 {
     m_xListItemsLB->set_size_request(m_xListItemsLB->get_approximate_digit_width() * 24,
                                      m_xListItemsLB->get_height_rows(12));
-    Link<weld::TreeView&, void> aDoubleLk = LINK(this, DropDownFieldDialog, DoubleClickHdl);
+    Link<weld::TreeView&, bool> aDoubleLk = LINK(this, DropDownFieldDialog, DoubleClickHdl);
     m_xListItemsLB->connect_row_activated( aDoubleLk );
 
     Link<weld::Button&, void> aEditButtonLk = LINK(this, DropDownFieldDialog, EditHdl);
@@ -131,12 +131,13 @@ IMPL_LINK_NOARG(sw::DropDownFieldDialog, NextHdl, weld::Button&, void)
     m_xDialog->response(RET_OK);
 }
 
-IMPL_LINK_NOARG(sw::DropDownFieldDialog, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(sw::DropDownFieldDialog, DoubleClickHdl, weld::TreeView&, bool)
 {
     // tdf#114144, when next is available make double-click accept and go to next field
     if (m_xNextPB->get_visible() && m_xNextPB->get_sensitive())
         m_pPressedButton = m_xNextPB.get();
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/ui/fldui/fldfunc.cxx b/sw/source/ui/fldui/fldfunc.cxx
index 1298f5b5e398..38ec5c9d2952 100644
--- a/sw/source/ui/fldui/fldfunc.cxx
+++ b/sw/source/ui/fldui/fldfunc.cxx
@@ -390,10 +390,11 @@ IMPL_LINK_NOARG(SwFieldFuncPage, SelectHdl, weld::TreeView&, void)
         m_xNameED->set_text( m_xSelectionLB->get_selected_text() );
 }
 
-IMPL_LINK_NOARG(SwFieldFuncPage, InsertMacroHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwFieldFuncPage, InsertMacroHdl, weld::TreeView&, bool)
 {
     SelectHdl(*m_xSelectionLB);
     InsertHdl(nullptr);
+    return true;
 }
 
 IMPL_LINK(SwFieldFuncPage, ListModifyButtonHdl, weld::Button&, rControl, void)
diff --git a/sw/source/ui/fldui/fldfunc.hxx b/sw/source/ui/fldui/fldfunc.hxx
index 43632c0241d9..364a71d8e59e 100644
--- a/sw/source/ui/fldui/fldfunc.hxx
+++ b/sw/source/ui/fldui/fldfunc.hxx
@@ -62,7 +62,7 @@ class SwFieldFuncPage : public SwFieldPage
 
     DECL_LINK( TypeHdl, weld::TreeView&, void );
     DECL_LINK( SelectHdl, weld::TreeView&, void );
-    DECL_LINK( InsertMacroHdl, weld::TreeView&, void );
+    DECL_LINK( InsertMacroHdl, weld::TreeView&, bool );
     DECL_LINK( ModifyHdl, weld::Entry&, void );
     DECL_LINK( ListModifyReturnActionHdl, weld::Entry&, bool );
     DECL_LINK( ListModifyButtonHdl, weld::Button&, void );
diff --git a/sw/source/ui/fldui/fldpage.cxx b/sw/source/ui/fldui/fldpage.cxx
index a55a97e3c90c..dfc997c718df 100644
--- a/sw/source/ui/fldui/fldpage.cxx
+++ b/sw/source/ui/fldui/fldpage.cxx
@@ -300,9 +300,10 @@ void SwFieldPage::RestorePos(weld::TreeView& rLst1)
 }
 
 // Insert new fields
-IMPL_LINK( SwFieldPage, TreeViewInsertHdl, weld::TreeView&, rBox, void )
+IMPL_LINK( SwFieldPage, TreeViewInsertHdl, weld::TreeView&, rBox, bool )
 {
     InsertHdl(&rBox);
+    return true;
 }
 
 void SwFieldPage::InsertHdl(weld::Widget* pBtn)
@@ -338,9 +339,10 @@ void SwFieldPage::EnableInsert(bool bEnable)
     m_bInsert = bEnable;
 }
 
-IMPL_LINK_NOARG(SwFieldPage, NumFormatHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwFieldPage, NumFormatHdl, weld::TreeView&, bool)
 {
     InsertHdl(nullptr);
+    return true;
 }
 
 void SwFieldPage::SetWrtShell( SwWrtShell* pShell )
diff --git a/sw/source/ui/fldui/fldpage.hxx b/sw/source/ui/fldui/fldpage.hxx
index 178465d981fb..9c0cecf5a86d 100644
--- a/sw/source/ui/fldui/fldpage.hxx
+++ b/sw/source/ui/fldui/fldpage.hxx
@@ -51,8 +51,8 @@ protected:
     SwField*            GetCurField()               { return m_pCurField;}
     SwWrtShell*         GetWrtShell() { return m_pWrtShell;}
 
-    DECL_LINK( TreeViewInsertHdl, weld::TreeView&, void );
-    DECL_LINK( NumFormatHdl, weld::TreeView&, void );
+    DECL_LINK( TreeViewInsertHdl, weld::TreeView&, bool );
+    DECL_LINK( NumFormatHdl, weld::TreeView&, bool );
     void                InsertHdl(weld::Widget*);
 
     void                Init();
diff --git a/sw/source/ui/fldui/fldvar.cxx b/sw/source/ui/fldui/fldvar.cxx
index 2d9727084728..38a5b6a81520 100644
--- a/sw/source/ui/fldui/fldvar.cxx
+++ b/sw/source/ui/fldui/fldvar.cxx
@@ -531,7 +531,7 @@ void SwFieldVarPage::SubTypeHdl(const weld::TreeView* pBox)
     ModifyHdl(*m_xNameED);    // apply/insert/delete status update
 }
 
-IMPL_LINK(SwFieldVarPage, SubTypeInsertHdl, weld::TreeView&, rBox, void)
+IMPL_LINK(SwFieldVarPage, SubTypeInsertHdl, weld::TreeView&, rBox, bool)
 {
     if (!bInit)
     {
@@ -543,11 +543,12 @@ IMPL_LINK(SwFieldVarPage, SubTypeInsertHdl, weld::TreeView&, rBox, void)
             {
                 m_xValueED->replace_selection(m_xSelectionLB->get_text(nSelPos));
                 ModifyHdl(*m_xNameED);
-                return;
+                return true;
             }
         }
     }
     TreeViewInsertHdl(rBox);
+    return true;
 }
 
 // renew types in SelectionBox
diff --git a/sw/source/ui/fldui/fldvar.hxx b/sw/source/ui/fldui/fldvar.hxx
index f6f0c570a107..b214e5adf0c5 100644
--- a/sw/source/ui/fldui/fldvar.hxx
+++ b/sw/source/ui/fldui/fldvar.hxx
@@ -59,7 +59,7 @@ class SwFieldVarPage : public SwFieldPage
     DECL_LINK( TBClickHdl, weld::Button&, void );
     DECL_LINK( ChapterHdl, weld::ComboBox&, void );
     DECL_LINK( SeparatorHdl, weld::Entry&, void );
-    DECL_LINK( SubTypeInsertHdl, weld::TreeView&, void );
+    DECL_LINK( SubTypeInsertHdl, weld::TreeView&, bool );
     void SubTypeHdl(const weld::TreeView*);
 
     void                UpdateSubType();
diff --git a/sw/source/ui/index/cnttab.cxx b/sw/source/ui/index/cnttab.cxx
index 3e35881cdbd8..54823daf223e 100644
--- a/sw/source/ui/index/cnttab.cxx
+++ b/sw/source/ui/index/cnttab.cxx
@@ -3511,7 +3511,7 @@ IMPL_LINK_NOARG(SwTOXStylesTabPage, StdHdl, weld::Button&, void)
     }
 }
 
-IMPL_LINK_NOARG(SwTOXStylesTabPage, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwTOXStylesTabPage, DoubleClickHdl, weld::TreeView&, bool)
 {
     const OUString aTmpName(m_xParaLayLB->get_selected_text());
     SwWrtShell& rSh = static_cast<SwMultiTOXTabDialog*>(GetDialogController())->GetWrtShell();
@@ -3519,6 +3519,8 @@ IMPL_LINK_NOARG(SwTOXStylesTabPage, DoubleClickHdl, weld::TreeView&, void)
     if(m_xParaLayLB->get_selected_index() != -1 &&
        (m_xLevelLB->get_selected_index() == 0 || SwMultiTOXTabDialog::IsNoNum(rSh, aTmpName)))
         AssignHdl(*m_xAssignBT);
+
+    return true;
 }
 
 // enable only when selected
diff --git a/sw/source/ui/misc/bookmark.cxx b/sw/source/ui/misc/bookmark.cxx
index 8fcd297ec225..faf59a18c107 100644
--- a/sw/source/ui/misc/bookmark.cxx
+++ b/sw/source/ui/misc/bookmark.cxx
@@ -136,9 +136,10 @@ IMPL_LINK_NOARG(SwInsertBookmarkDlg, GotoHdl, weld::Button&, void)
     GotoSelectedBookmark();
 }
 
-IMPL_LINK_NOARG(SwInsertBookmarkDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwInsertBookmarkDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     GotoSelectedBookmark();
+    return true;
 }
 
 IMPL_LINK_NOARG(SwInsertBookmarkDlg, SelectionChangedHdl, weld::TreeView&, void)
diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx
index 8cc06b447e58..9585129767a0 100644
--- a/sw/source/ui/misc/glossary.cxx
+++ b/sw/source/ui/misc/glossary.cxx
@@ -415,11 +415,12 @@ IMPL_LINK(SwGlossaryDlg, NameModify, weld::Entry&, rEdit, void)
     }
 }
 
-IMPL_LINK( SwGlossaryDlg, NameDoubleClick, weld::TreeView&, rBox, 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)
         m_xDialog->response(RET_OK);
+    return true;
 }
 
 IMPL_LINK_NOARG( SwGlossaryDlg, EnableHdl, weld::ToggleButton&, void )
diff --git a/sw/source/ui/misc/outline.cxx b/sw/source/ui/misc/outline.cxx
index 3eb0b9ea1da9..47af1e385015 100644
--- a/sw/source/ui/misc/outline.cxx
+++ b/sw/source/ui/misc/outline.cxx
@@ -63,7 +63,7 @@ class SwNumNamesDlg : public weld::GenericDialogController
 
     DECL_LINK( ModifyHdl, weld::Entry&, void );
     DECL_LINK( SelectHdl, weld::TreeView&, void );
-    DECL_LINK( DoubleClickHdl, weld::TreeView&, void );
+    DECL_LINK( DoubleClickHdl, weld::TreeView&, bool );
 
 public:
     explicit SwNumNamesDlg(weld::Window *pParent);
@@ -107,9 +107,10 @@ IMPL_LINK( SwNumNamesDlg, ModifyHdl, weld::Entry&, rBox, void )
 }
 
 // DoubleClickHdl
-IMPL_LINK_NOARG(SwNumNamesDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwNumNamesDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 SwNumNamesDlg::SwNumNamesDlg(weld::Window *pParent)
diff --git a/sw/source/uibase/inc/DropDownFieldDialog.hxx b/sw/source/uibase/inc/DropDownFieldDialog.hxx
index f1d36c39f3d6..59510d37b751 100644
--- a/sw/source/uibase/inc/DropDownFieldDialog.hxx
+++ b/sw/source/uibase/inc/DropDownFieldDialog.hxx
@@ -44,7 +44,7 @@ class DropDownFieldDialog : public weld::GenericDialogController
     DECL_LINK(PrevHdl, weld::Button&, void);
     DECL_LINK(NextHdl, weld::Button&, void);
     void    Apply();
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 public:
     DropDownFieldDialog(weld::Widget *pParent, SwWrtShell &rSh,
                         SwField* pField, bool bPrevButton, bool bNextButton);
diff --git a/sw/source/uibase/inc/bookmark.hxx b/sw/source/uibase/inc/bookmark.hxx
index f11bdc198ccd..1a126788ca15 100644
--- a/sw/source/uibase/inc/bookmark.hxx
+++ b/sw/source/uibase/inc/bookmark.hxx
@@ -50,7 +50,7 @@ public:
     void selected_foreach(const std::function<bool(weld::TreeIter&)>& func) { m_xControl->selected_foreach(func); }
 
     void connect_changed(const Link<weld::TreeView&, void>& rLink) { m_xControl->connect_changed(rLink); }
-    void connect_row_activated(const Link<weld::TreeView&, void>& rLink) { m_xControl->connect_row_activated(rLink); }
+    void connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { m_xControl->connect_row_activated(rLink); }
     void connect_column_clicked(const Link<int, void>& rLink) { m_xControl->connect_column_clicked(rLink); }
     void make_sorted() { m_xControl->make_sorted(); }
     bool get_sort_order() const { return m_xControl->get_sort_order(); }
@@ -87,7 +87,7 @@ class SwInsertBookmarkDlg : public SfxDialogController
     DECL_LINK(RenameHdl, weld::Button&, void);
     DECL_LINK(GotoHdl, weld::Button&, void);
     DECL_LINK(SelectionChangedHdl, weld::TreeView&, void);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(HeaderBarClick, int, void);
     DECL_LINK(ChangeHideHdl, weld::ToggleButton&, void);
 
diff --git a/sw/source/uibase/inc/dbinsdlg.hxx b/sw/source/uibase/inc/dbinsdlg.hxx
index df31a2135ec7..4815a44f8966 100644
--- a/sw/source/uibase/inc/dbinsdlg.hxx
+++ b/sw/source/uibase/inc/dbinsdlg.hxx
@@ -130,7 +130,7 @@ class SwInsertDBColAutoPilot : public SfxDialogController, public utl::ConfigIte
     DECL_LINK( TableToFromHdl, weld::Button&, void );
     DECL_LINK( TVSelectHdl, weld::TreeView&, void );
     DECL_LINK( CBSelectHdl, weld::ComboBox&, void );
-    DECL_LINK( DblClickHdl, weld::TreeView&, void );
+    DECL_LINK( DblClickHdl, weld::TreeView&, bool );
     DECL_LINK( HeaderHdl, weld::Button&, void );
 
     bool SplitTextToColArr( const OUString& rText, DB_Columns& rColArr, bool bInsField );
diff --git a/sw/source/uibase/inc/dbtree.hxx b/sw/source/uibase/inc/dbtree.hxx
index 3e8be7ccf085..e3c994d44ddb 100644
--- a/sw/source/uibase/inc/dbtree.hxx
+++ b/sw/source/uibase/inc/dbtree.hxx
@@ -54,7 +54,7 @@ public:
     void    AddDataSource(const OUString& rSource);
 
     void connect_changed(const Link<weld::TreeView&, void>& rLink) { m_xTreeView->connect_changed(rLink); }
-    void connect_row_activated(const Link<weld::TreeView&, void>& rLink) { m_xTreeView->connect_row_activated(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); }
     bool iter_parent(weld::TreeIter& rIter) const { return m_xTreeView->iter_parent(rIter); }
diff --git a/sw/source/uibase/inc/glossary.hxx b/sw/source/uibase/inc/glossary.hxx
index 596ca184813b..7f0dab68901f 100644
--- a/sw/source/uibase/inc/glossary.hxx
+++ b/sw/source/uibase/inc/glossary.hxx
@@ -81,7 +81,7 @@ class SwGlossaryDlg : public SfxDialogController
     void ShowPreview();
 
     DECL_LINK( NameModify, weld::Entry&, void );
-    DECL_LINK( NameDoubleClick, weld::TreeView&, void );
+    DECL_LINK( NameDoubleClick, weld::TreeView&, bool );
     DECL_LINK( GrpSelect, weld::TreeView&, void );
     DECL_LINK( MenuHdl, const OString&, void );
     DECL_LINK( EnableHdl, weld::ToggleButton&, void );
diff --git a/sw/source/uibase/inc/numfmtlb.hxx b/sw/source/uibase/inc/numfmtlb.hxx
index 9a38706c7e91..f4f75e32d1d4 100644
--- a/sw/source/uibase/inc/numfmtlb.hxx
+++ b/sw/source/uibase/inc/numfmtlb.hxx
@@ -134,7 +134,7 @@ public:
     int             get_selected_index() const { return mxControl->get_selected_index(); }
     void            set_visible(bool bVisible) { mxControl->set_visible(bVisible); }
     void            select(int nPos) { mxControl->select(nPos); }
-    void            connect_row_activated(const Link<weld::TreeView&, void>& rLink) { mxControl->connect_row_activated(rLink); }
+    void            connect_row_activated(const Link<weld::TreeView&, bool>& rLink) { mxControl->connect_row_activated(rLink); }
 
     void            set_sensitive(bool bSensitive) { mxControl->set_sensitive(bSensitive); }
     void            connect_changed(const Link<weld::TreeView&, void>& rLink) { mxControl->connect_changed(rLink); }
diff --git a/sw/source/uibase/inc/selglos.hxx b/sw/source/uibase/inc/selglos.hxx
index 28a7821e3c96..b31f61a54ef6 100644
--- a/sw/source/uibase/inc/selglos.hxx
+++ b/sw/source/uibase/inc/selglos.hxx
@@ -26,7 +26,7 @@ class SwSelGlossaryDlg final : public weld::GenericDialogController
     std::unique_ptr<weld::Frame> m_xFrame;
     std::unique_ptr<weld::TreeView> m_xGlosBox;
 
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
 public:
     SwSelGlossaryDlg(weld::Window * pParent, const OUString &rShortName);
     virtual ~SwSelGlossaryDlg() override;
diff --git a/sw/source/uibase/inc/swuiccoll.hxx b/sw/source/uibase/inc/swuiccoll.hxx
index 7e8093540fba..4e0f5c2b2e3d 100644
--- a/sw/source/uibase/inc/swuiccoll.hxx
+++ b/sw/source/uibase/inc/swuiccoll.hxx
@@ -46,7 +46,7 @@ class SwCondCollPage : public SfxTabPage
     virtual DeactivateRC   DeactivatePage(SfxItemSet *pSet) override;
 
     DECL_LINK(OnOffHdl, weld::ToggleButton&, void);
-    DECL_LINK(AssignRemoveTreeListBoxHdl, weld::TreeView&, void);
+    DECL_LINK(AssignRemoveTreeListBoxHdl, weld::TreeView&, bool);
     DECL_LINK(AssignRemoveClickHdl, weld::Button&, void);
     DECL_LINK(SelectTreeListBoxHdl, weld::TreeView&, void);
     DECL_LINK(SelectListBoxHdl, weld::ComboBox&, void);
diff --git a/sw/source/uibase/inc/swuicnttab.hxx b/sw/source/uibase/inc/swuicnttab.hxx
index 20eb82bf8631..e27eeac6cb28 100644
--- a/sw/source/uibase/inc/swuicnttab.hxx
+++ b/sw/source/uibase/inc/swuicnttab.hxx
@@ -411,7 +411,7 @@ class SwTOXStylesTabPage : public SfxTabPage
     DECL_LINK(EditStyleHdl, weld::Button&, void);
     DECL_LINK(StdHdl, weld::Button&, void);
     DECL_LINK(EnableSelectHdl, weld::TreeView&, void);
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(AssignHdl, weld::Button&, void);
     void Modify();
 
diff --git a/sw/source/uibase/utlui/gloslst.cxx b/sw/source/uibase/utlui/gloslst.cxx
index c58498166cb4..58e4521b35dd 100644
--- a/sw/source/uibase/utlui/gloslst.cxx
+++ b/sw/source/uibase/utlui/gloslst.cxx
@@ -49,7 +49,7 @@ class SwGlossDecideDlg : public weld::GenericDialogController
     std::unique_ptr<weld::Button> m_xOk;
     std::unique_ptr<weld::TreeView> m_xListLB;
 
-    DECL_LINK(DoubleClickHdl, weld::TreeView&, void);
+    DECL_LINK(DoubleClickHdl, weld::TreeView&, bool);
     DECL_LINK(SelectHdl, weld::TreeView&, void);
 
 public:
@@ -69,9 +69,10 @@ SwGlossDecideDlg::SwGlossDecideDlg(weld::Window* pParent)
     m_xListLB->connect_changed(LINK(this, SwGlossDecideDlg, SelectHdl));
 }
 
-IMPL_LINK_NOARG(SwGlossDecideDlg, DoubleClickHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(SwGlossDecideDlg, DoubleClickHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 IMPL_LINK_NOARG(SwGlossDecideDlg, SelectHdl, weld::TreeView&, void)
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 2d9193dddbfb..baabc1e6327c 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -4402,8 +4402,7 @@ IMPL_LINK_NOARG(SalInstanceTreeView, DoubleClickHdl, SvTreeListBox*, bool)
 {
     if (notify_events_disabled())
         return false;
-    signal_row_activated();
-    return false;
+    return !signal_row_activated();
 }
 
 IMPL_LINK(SalInstanceTreeView, EndDragHdl, HeaderBar*, pHeaderBar, void)
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index fd8db4675ff3..848d3671ed3b 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -7373,11 +7373,22 @@ private:
         pThis->launch_signal_changed();
     }
 
+    void handle_row_activated()
+    {
+        if (signal_row_activated())
+            return;
+        GtkInstanceTreeIter aIter(nullptr);
+        if (!get_cursor(&aIter))
+            return;
+        if (iter_has_child(aIter))
+            get_row_expanded(aIter) ? collapse_row(aIter) : expand_row(aIter);
+    }
+
     static void signalRowActivated(GtkTreeView*, GtkTreePath*, GtkTreeViewColumn*, gpointer widget)
     {
         GtkInstanceTreeView* pThis = static_cast<GtkInstanceTreeView*>(widget);
         SolarMutexGuard aGuard;
-        pThis->signal_row_activated();
+        pThis->handle_row_activated();
     }
 
     virtual bool signal_popup_menu(const CommandEvent& rCEvt) override
diff --git a/xmlsecurity/inc/certificatechooser.hxx b/xmlsecurity/inc/certificatechooser.hxx
index d84af0fcc92f..645c72929771 100644
--- a/xmlsecurity/inc/certificatechooser.hxx
+++ b/xmlsecurity/inc/certificatechooser.hxx
@@ -69,7 +69,7 @@ private:
 
     DECL_LINK(ViewButtonHdl, weld::Button&, void);
     DECL_LINK(CertificateHighlightHdl, weld::TreeView&, void);
-    DECL_LINK(CertificateSelectHdl, weld::TreeView&, void);
+    DECL_LINK(CertificateSelectHdl, weld::TreeView&, bool);
 
     void ImplShowCertificateDetails();
     void ImplInitialize();
diff --git a/xmlsecurity/inc/digitalsignaturesdialog.hxx b/xmlsecurity/inc/digitalsignaturesdialog.hxx
index 363dfdeb2d41..59e699db7b69 100644
--- a/xmlsecurity/inc/digitalsignaturesdialog.hxx
+++ b/xmlsecurity/inc/digitalsignaturesdialog.hxx
@@ -84,7 +84,7 @@ private:
     DECL_LINK(AddButtonHdl, weld::Button&, void);
     DECL_LINK(RemoveButtonHdl, weld::Button&, void);
     DECL_LINK(SignatureHighlightHdl, weld::TreeView&, void);
-    DECL_LINK(SignatureSelectHdl, weld::TreeView&, void);
+    DECL_LINK(SignatureSelectHdl, weld::TreeView&, bool);
     DECL_LINK(StartVerifySignatureHdl, LinkParamNone*, bool);
     DECL_LINK(OKButtonHdl, weld::Button&, void);
     DECL_LINK(CertMgrButtonHdl, weld::Button&, void);
diff --git a/xmlsecurity/source/dialogs/certificatechooser.cxx b/xmlsecurity/source/dialogs/certificatechooser.cxx
index 75467a6a2e6f..4345bb24cdbf 100644
--- a/xmlsecurity/source/dialogs/certificatechooser.cxx
+++ b/xmlsecurity/source/dialogs/certificatechooser.cxx
@@ -303,9 +303,10 @@ IMPL_LINK_NOARG(CertificateChooser, CertificateHighlightHdl, weld::TreeView&, vo
     m_xDescriptionED->set_sensitive(bEnable);
 }
 
-IMPL_LINK_NOARG(CertificateChooser, CertificateSelectHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(CertificateChooser, CertificateSelectHdl, weld::TreeView&, bool)
 {
     m_xDialog->response(RET_OK);
+    return true;
 }
 
 IMPL_LINK_NOARG(CertificateChooser, ViewButtonHdl, weld::Button&, void)
diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
index ae7712f79fb3..5c1c7daf2785 100644
--- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
+++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx
@@ -353,9 +353,10 @@ IMPL_LINK_NOARG(DigitalSignaturesDialog, OKButtonHdl, weld::Button&, void)
     m_xDialog->response(RET_OK);
 }
 
-IMPL_LINK_NOARG(DigitalSignaturesDialog, SignatureSelectHdl, weld::TreeView&, void)
+IMPL_LINK_NOARG(DigitalSignaturesDialog, SignatureSelectHdl, weld::TreeView&, bool)
 {
     ImplShowSignaturesDetails();
+    return true;
 }
 
 IMPL_LINK_NOARG(DigitalSignaturesDialog, AdESCompliantCheckBoxHdl, weld::ToggleButton&, void)


More information about the Libreoffice-commits mailing list