summaryrefslogtreecommitdiff
path: root/vcl/unx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-06-20 20:59:00 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-06-21 09:55:35 +0200
commit46cd78756f784ce81f8051e211d542f53112d5a3 (patch)
tree860710e4e057f137a243a0e2277a8d453330a7da /vcl/unx
parent2f04460c83f064c9fa41c8deaef9647228e0a4ad (diff)
Resolves: tdf#126005 make bookmark treeview sortable
and use iterators into the tree Change-Id: I38eb24d71cc089bf61baa221324a983c1eb782c9 Reviewed-on: https://gerrit.libreoffice.org/74470 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx')
-rw-r--r--vcl/unx/gtk3/gtk3gtkinst.cxx21
1 files changed, 21 insertions, 0 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index bc8f69c9d05d..06f49b7aefc1 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -7704,6 +7704,27 @@ public:
enable_notify_events();
}
+ virtual void remove_selection() override
+ {
+ disable_notify_events();
+
+ std::vector<GtkTreeIter> aIters;
+ 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);
+ aIters.emplace_back();
+ gtk_tree_model_get_iter(pModel, &aIters.back(), path);
+ }
+ g_list_free_full(pList, reinterpret_cast<GDestroyNotify>(gtk_tree_path_free));
+
+ for (auto& iter : aIters)
+ gtk_tree_store_remove(m_pTreeStore, &iter);
+
+ enable_notify_events();
+ }
+
virtual void select(const weld::TreeIter& rIter) override
{
assert(gtk_tree_view_get_model(m_pTreeView) && "don't select when frozen");