Resolves: tdf#105602 fix extended help for non-dispatchable toolbox commands

Change-Id: I832a043ca5ae3a4030b9ac22447cecfabd3650c0
Reviewed-on: https://gerrit.libreoffice.org/65422
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index ba0281ba..857bf71 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -2121,9 +2121,9 @@ VclPtr<vcl::Window> VclBuilder::makeObject(vcl::Window *pParent, const OString &
                    //TODO: ImplToolItems::size_type -> sal_uInt16!
                pToolBox->InsertItem(nItemId, extractLabel(rMap), nBits);
                pToolBox->SetItemCommand(nItemId, aCommand);
                pToolBox->SetHelpId(nItemId, m_sHelpRoot + id);
            }

            pToolBox->SetHelpId(nItemId, m_sHelpRoot + id);
            OUString sTooltip(extractTooltipText(rMap));
            if (!sTooltip.isEmpty())
                pToolBox->SetQuickHelpText(nItemId, sTooltip);
diff --git a/vcl/source/window/toolbox.cxx b/vcl/source/window/toolbox.cxx
index 824f216..4d203c6 100644
--- a/vcl/source/window/toolbox.cxx
+++ b/vcl/source/window/toolbox.cxx
@@ -3792,6 +3792,17 @@ void ToolBox::Resize()
    }
}

namespace
{
    bool DispatchableCommand(const OUString& rName)
    {
        return rName.startsWith(".uno")  ||
               rName.startsWith("slot:")  ||
               rName.startsWith("macro:")  ||
               rName.startsWith("vnd.sun.star.script");
    }
}

const OUString& ToolBox::ImplGetHelpText( sal_uInt16 nItemId ) const
{
    ImplToolItem* pItem = ImplGetItem( nItemId );
@@ -3803,7 +3814,7 @@ const OUString& ToolBox::ImplGetHelpText( sal_uInt16 nItemId ) const
        Help* pHelp = Application::GetHelp();
        if ( pHelp )
        {
            if ( pItem->maCommandStr.getLength() )
            if (DispatchableCommand(pItem->maCommandStr))
                pItem->maHelpText = pHelp->GetHelpText( pItem->maCommandStr, this );
            if ( pItem->maHelpText.isEmpty() && !pItem->maHelpId.isEmpty() )
                pItem->maHelpText = pHelp->GetHelpText( OStringToOUString( pItem->maHelpId, RTL_TEXTENCODING_UTF8 ), this );