summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-05-06 14:51:29 +0200
committerRobin Gareus <robin@gareus.org>2016-05-06 14:51:29 +0200
commit864f9e497dfa6bf6f7ab349e1b2b123e9bc575ba (patch)
tree94d0e5997000e511343eb91868718997b43e714a
parent24e864d77030dc9d7364a41033cc238657ab19a5 (diff)
DnDTreeview: allow to handle multiple drag-targets
-rw-r--r--libs/gtkmm2ext/dndtreeview.cc2
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/dndtreeview.h13
2 files changed, 9 insertions, 6 deletions
diff --git a/libs/gtkmm2ext/dndtreeview.cc b/libs/gtkmm2ext/dndtreeview.cc
index bc6745dc4f..4686702074 100644
--- a/libs/gtkmm2ext/dndtreeview.cc
+++ b/libs/gtkmm2ext/dndtreeview.cc
@@ -141,5 +141,3 @@ DnDTreeViewBase::on_drag_drop(const Glib::RefPtr<Gdk::DragContext>& context, int
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 29ae084111..0801058d87 100644
--- a/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h
+++ b/libs/gtkmm2ext/gtkmm2ext/dndtreeview.h
@@ -142,11 +142,16 @@ class /*LIBGTKMM2EXT_API*/ DnDTreeView : public DnDTreeViewBase
if (selection_data.get_target() == "GTK_TREE_MODEL_ROW") {
TreeView::on_drag_data_received (context, x, y, selection_data, info, time);
- } else if (selection_data.get_target() == object_type) {
- signal_drop (context, selection_data);
- context->drag_finish (true, false, time);
} else {
- /* some kind of target type added by the app, which will be handled by a signal handler */
+ /* some kind of target type, usually 'object_type' added by the app,
+ * which will be handled by a signal handler */
+ for (std::list<Gtk::TargetEntry>::const_iterator i = draggable.begin(); i != draggable.end (); ++i) {
+ if (selection_data.get_target() == (*i).get_target()) {
+ signal_drop (context, selection_data);
+ context->drag_finish (true, false, time);
+ break;
+ }
+ }
}
}