diff --git a/libs/gtkmm2ext/dndtreeview.cc b/libs/gtkmm2ext/dndtreeview.cc index 0695dd3281..179423f203 100644 --- a/libs/gtkmm2ext/dndtreeview.cc +++ b/libs/gtkmm2ext/dndtreeview.cc @@ -69,6 +69,7 @@ bool DnDTreeViewBase::on_drag_drop(const Glib::RefPtr& context, int x, int y, guint time) { suggested_action = Gdk::DragAction (0); + drag_data.source = 0; return TreeView::on_drag_drop (context, x, y, time); } diff --git a/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h b/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h index 6295377672..b5f18fa890 100644 --- a/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h +++ b/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h @@ -70,6 +70,8 @@ class DnDTreeViewBase : public Gtk::TreeView std::string object_type; struct DragData { + DragData () : source (0) {} + Gtk::TreeView* source; int data_column; std::string object_type; @@ -134,11 +136,16 @@ class DnDTreeView : public DnDTreeViewBase } /** - * this can be called by the Treeview itself or by some other + * This can be called by the Treeview itself or by some other * object that wants to get the list of dragged items. */ void get_object_drag_data (std::list& l, Gtk::TreeView** source) { + + if (drag_data.source == 0) { + return; + } + Glib::RefPtr model = drag_data.source->get_model(); DataType v; Gtk::TreeSelection::ListHandle_Path selection = drag_data.source->get_selection()->get_selected_rows ();