diff options
author | Robin Gareus <robin@gareus.org> | 2016-05-06 14:51:29 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-05-06 14:51:29 +0200 |
commit | 864f9e497dfa6bf6f7ab349e1b2b123e9bc575ba (patch) | |
tree | 94d0e5997000e511343eb91868718997b43e714a | |
parent | 24e864d77030dc9d7364a41033cc238657ab19a5 (diff) |
DnDTreeview: allow to handle multiple drag-targets
-rw-r--r-- | libs/gtkmm2ext/dndtreeview.cc | 2 | ||||
-rw-r--r-- | libs/gtkmm2ext/gtkmm2ext/dndtreeview.h | 13 |
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; + } + } } } |