summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/gtkmm2ext/dndtreeview.cc1
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/dndtreeview.h9
2 files changed, 9 insertions, 1 deletions
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<Gdk::DragContext>& 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<DataType>& l, Gtk::TreeView** source) {
+
+ if (drag_data.source == 0) {
+ return;
+ }
+
Glib::RefPtr<Gtk::TreeModel> model = drag_data.source->get_model();
DataType v;
Gtk::TreeSelection::ListHandle_Path selection = drag_data.source->get_selection()->get_selected_rows ();