Resolves: tdf#160028 Type to select currency in dropdown does not work for gtk

LibreOffice embeds RTL/LTR direction markers in currency strings, which
defeats the default gtk search mechanism, so switch in our one instead.

Change-Id: Ia118f8c8e27103c21955683f8a2fd3c17c2b2098
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165557
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 495e403..e535e30 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -14841,6 +14841,32 @@ private:
    }
#endif

    static gboolean search_equal_func(GtkTreeModel *model,
                                      int           column,
                                      const char   *key,
                                      GtkTreeIter  *iter,
                                      gpointer    /*user_data*/)
    {
        GValue aValue = G_VALUE_INIT;
        gtk_tree_model_get_value(model, iter, column, &aValue);

        GValue aStringValue = G_VALUE_INIT;
        g_value_init(&aStringValue, G_TYPE_STRING);
        const bool fail = !g_value_transform(&aValue, &aStringValue);
        g_value_unset(&aValue);
        if (fail)
            return true;

        bool bNoMatch(true);
        if (const char *str = g_value_get_string(&aStringValue))
        {
            const vcl::I18nHelper& rI18nHelper = Application::GetSettings().GetLocaleI18nHelper();
            bNoMatch = !rI18nHelper.MatchString(OUString::fromUtf8(key), OUString::fromUtf8(str));
        }
        g_value_unset(&aStringValue);
        return bNoMatch;
    }

public:
    GtkInstanceTreeView(GtkTreeView* pTreeView, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
        : GtkInstanceWidget(GTK_WIDGET(pTreeView), pBuilder, bTakeOwnership)
@@ -14972,6 +14998,10 @@ public:

        m_nRowDeletedSignalId = g_signal_connect(m_pTreeModel, "row-deleted", G_CALLBACK(signalRowDeleted), this);
        m_nRowInsertedSignalId = g_signal_connect(m_pTreeModel, "row-inserted", G_CALLBACK(signalRowInserted), this);

        // tdf#160028 LibreOffice embeds RTL/LTR direction markers in currency strings, which defeats the
        // default gtk search mechanism, so switch in our one here
        gtk_tree_view_set_search_equal_func(m_pTreeView, search_equal_func, nullptr, nullptr);
    }

    virtual void connect_query_tooltip(const Link<const weld::TreeIter&, OUString>& rLink) override