diff options
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/app/salvtables.cxx | 15 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkinst.cxx | 25 |
2 files changed, 10 insertions, 30 deletions
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index c2f4312aa371..1805559ee3ad 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -1260,17 +1260,14 @@ public: m_xTreeView->SelectEntryPos(pos); } - virtual OUString get_selected() const override + virtual std::vector<int> get_selected_rows() const override { - return m_xTreeView->GetSelectedEntry(); - } - - virtual std::vector<OUString> get_selected_rows() const override - { - std::vector<OUString> aRows; + std::vector<int> aRows; - for (sal_Int32 i = 0; i < m_xTreeView->GetSelectedEntryCount(); ++i) - aRows.push_back(m_xTreeView->GetSelectedEntry(i)); + sal_Int32 nCount = m_xTreeView->GetSelectedEntryCount(); + aRows.reserve(nCount); + for (sal_Int32 i = 0; i < nCount; ++i) + aRows.push_back(m_xTreeView->GetSelectedEntryPos(i)); return aRows; } diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index e961a9c6f041..62ba6f6590f6 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -1944,6 +1944,7 @@ private: hide(); m_aFunc(GtkToVcl(ret)); + m_aFunc = nullptr; m_xDialogController.reset(); } public: @@ -3103,34 +3104,16 @@ public: enable_notify_events(); } - virtual OUString get_selected() const override + virtual std::vector<int> get_selected_rows() const override { - assert(gtk_tree_selection_get_mode(gtk_tree_view_get_selection(m_pTreeView)) == GTK_SELECTION_SINGLE); - - OUString sRet; - GtkTreeIter iter; - GtkTreeModel* pModel; - if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(m_pTreeView), &pModel, &iter)) - { - gchar *pStr = nullptr; - gtk_tree_model_get(pModel, &iter, 0, &pStr, -1); - sRet = OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8); - g_free(pStr); - } - return sRet; - } - - virtual std::vector<OUString> get_selected_rows() const override - { - std::vector<OUString> aRows; + std::vector<int> aRows; GtkTreeModel* pModel; GList* pList = gtk_tree_selection_get_selected_rows(gtk_tree_view_get_selection(m_pTreeView), &pModel); for (GList* pItem = g_list_first(pList); pItem; pItem = g_list_next(pItem)) { GtkTreePath* path = static_cast<GtkTreePath*>(pItem->data); - int nRow = gtk_tree_path_get_indices(path)[0]; - aRows.push_back(get(nRow)); + aRows.push_back(gtk_tree_path_get_indices(path)[0]); } g_list_free_full(pList, reinterpret_cast<GDestroyNotify>(gtk_tree_path_free)); |