vcl: allow editing a column other than the first one in GtkInstanceTreeView

This is basically commit fe38553aef2121f358fb58e450ec69314aad851e
for the native GTK widgets, so the "Edit Text" button in
Insert->Bookmarks dialog works.

Change-Id: Ifcd115de60ecee2c4e4c19535ce55156aa84ff79
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/137563
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 0576c8ac..49ae467 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -14190,6 +14190,12 @@ private:
    {
        nCol = to_internal_model(nCol);

        // recompute these 2 based on new 1st editable column
        m_nTextCol = -1;
        m_nTextView = -1;
        int nIndex(0);
        int nViewColumn(0);
        bool isSet(false);
        for (GList* pEntry = g_list_first(m_pColumns); pEntry; pEntry = g_list_next(pEntry))
        {
            GtkTreeViewColumn* pColumn = GTK_TREE_VIEW_COLUMN(pEntry->data);
@@ -14201,10 +14207,27 @@ private:
                if (reinterpret_cast<sal_IntPtr>(pData) == nCol)
                {
                    g_object_set(G_OBJECT(pCellRenderer), "editable", bEditable, "editable-set", true, nullptr);
                    isSet = true;
                }
                if (GTK_IS_CELL_RENDERER_TEXT(pCellRenderer))
                {
                    gboolean is_editable(false);
                    g_object_get(pCellRenderer, "editable", &is_editable, nullptr);
                    if (is_editable && m_nTextCol == -1)
                    {
                        assert(m_nTextView == -1);
                        m_nTextCol = nIndex;
                        m_nTextView = nViewColumn;
                    }
                }
                if (isSet && m_nTextCol != -1) // both tasks done?
                {
                    break;
                }
                ++nIndex;
            }
            g_list_free(pRenderers);
            ++nViewColumn;
        }
    }