Related tdf#108458 if no TooltipHdl set use usual tooltip

also if the Tooltip was blank continue to use usual tooltip

Change-Id: I7dd02ffcbb558684ff41e50586284607a1ea4881
Reviewed-on: https://gerrit.libreoffice.org/84741
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/vcl/treelistbox.hxx b/include/vcl/treelistbox.hxx
index ba088ce..69bbdab 100644
--- a/include/vcl/treelistbox.hxx
+++ b/include/vcl/treelistbox.hxx
@@ -200,7 +200,7 @@ class VCL_DLLPUBLIC SvTreeListBox
    Link<SvTreeListBox*,void>  aSelectHdl;
    Link<SvTreeListBox*,void>  aDeselectHdl;
    Link<const CommandEvent&, bool> aPopupMenuHdl;
    Link<const HelpEvent&, void> aTooltipHdl;
    Link<const HelpEvent&, bool> aTooltipHdl;

    Image           aPrevInsertedExpBmp;
    Image           aPrevInsertedColBmp;
@@ -434,7 +434,7 @@ public:
    void            SetExpandingHdl(const Link<SvTreeListBox*,bool>& rNewHdl){aExpandingHdl=rNewHdl;}
    void            SetExpandedHdl(const Link<SvTreeListBox*,void>& rNewHdl){aExpandedHdl=rNewHdl;}
    void SetPopupMenuHdl(const Link<const CommandEvent&, bool>& rLink) { aPopupMenuHdl = rLink; }
    void SetTooltipHdl(const Link<const HelpEvent&, void>& rLink) { aTooltipHdl = rLink; }
    void SetTooltipHdl(const Link<const HelpEvent&, bool>& rLink) { aTooltipHdl = rLink; }

    virtual void    ExpandedHdl();
    virtual bool    ExpandingHdl();
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e26a6a3..c37cab6 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3469,7 +3469,7 @@ private:
    DECL_LINK(VisibleRangeChangedHdl, SvTreeListBox*, void);
    DECL_LINK(CompareHdl, const SvSortData&, sal_Int32);
    DECL_LINK(PopupMenuHdl, const CommandEvent&, bool);
    DECL_LINK(TooltipHdl, const HelpEvent&, void);
    DECL_LINK(TooltipHdl, const HelpEvent&, bool);

    bool IsDummyEntry(SvTreeListEntry* pEntry) const
    {
@@ -4627,24 +4627,27 @@ public:
        m_xTreeView->SetSelectHdl(Link<SvTreeListBox*, void>());
        m_xTreeView->SetDeselectHdl(Link<SvTreeListBox*, void>());
        m_xTreeView->SetScrolledHdl(Link<SvTreeListBox*, void>());
        m_xTreeView->SetTooltipHdl(Link<const HelpEvent&, void>());
        m_xTreeView->SetTooltipHdl(Link<const HelpEvent&, bool>());
    }
};

IMPL_LINK(SalInstanceTreeView, TooltipHdl, const HelpEvent&, rHEvt, void)
IMPL_LINK(SalInstanceTreeView, TooltipHdl, const HelpEvent&, rHEvt, bool)
{
    if (notify_events_disabled())
        return;
        return false;
    Point aPos(m_xTreeView->ScreenToOutputPixel(rHEvt.GetMousePosPixel()));
    SvTreeListEntry* pEntry = m_xTreeView->GetEntry(aPos);
    if (pEntry)
    {
        SalInstanceTreeIter aIter(pEntry);
        OUString aTooltip = signal_query_tooltip(aIter);
        if (aTooltip.isEmpty())
            return false;
        Size aSize(m_xTreeView->GetOutputSizePixel().Width(), m_xTreeView->GetEntryHeight());
        tools::Rectangle aScreenRect(m_xTreeView->OutputToScreenPixel(m_xTreeView->GetEntryPosition(pEntry)), aSize);
        Help::ShowQuickHelp(m_xTreeView, aScreenRect, aTooltip);
    }
    return true;
}

IMPL_LINK(SalInstanceTreeView, CompareHdl, const SvSortData&, rSortData, sal_Int32)
diff --git a/vcl/source/treelist/treelistbox.cxx b/vcl/source/treelist/treelistbox.cxx
index a192fa7..5e9629d 100644
--- a/vcl/source/treelist/treelistbox.cxx
+++ b/vcl/source/treelist/treelistbox.cxx
@@ -3322,13 +3322,11 @@ void SvTreeListBox::GetLastTab( SvLBoxTabFlags nFlagMask, sal_uInt16& rTabPos )

void SvTreeListBox::RequestHelp( const HelpEvent& rHEvt )
{
    if (aTooltipHdl.IsSet())
        aTooltipHdl.Call(rHEvt);
    else
    {
        if( !pImpl->RequestHelp( rHEvt ) )
            Control::RequestHelp( rHEvt );
    }
    if (aTooltipHdl.IsSet() && aTooltipHdl.Call(rHEvt))
        return;

    if( !pImpl->RequestHelp( rHEvt ) )
        Control::RequestHelp( rHEvt );
}

sal_Int32 SvTreeListBox::DefaultCompare(const SvLBoxString* pLeftText, const SvLBoxString* pRightText)
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 504355c..71a8489 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -8534,6 +8534,8 @@ private:
        if (!gtk_tree_view_get_tooltip_context(pTreeView, &x, &y, keyboard_tip, &pModel, &pPath, &iter))
            return false;
        OUString aTooltip = pThis->signal_query_tooltip(GtkInstanceTreeIter(iter));
        if (aTooltip.isEmpty())
            return false;
        gtk_tooltip_set_text(tooltip, OUStringToOString(aTooltip, RTL_TEXTENCODING_UTF8).getStr());
        gtk_tree_view_set_tooltip_row(pTreeView, tooltip, pPath);
        gtk_tree_path_free(pPath);