summaryrefslogtreecommitdiff
path: root/libs/gtkmm2ext/gtkmm2ext/dndvbox.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/gtkmm2ext/gtkmm2ext/dndvbox.h')
-rw-r--r--libs/gtkmm2ext/gtkmm2ext/dndvbox.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/libs/gtkmm2ext/gtkmm2ext/dndvbox.h b/libs/gtkmm2ext/gtkmm2ext/dndvbox.h
index 12e63c1c7f..a5e98daf43 100644
--- a/libs/gtkmm2ext/gtkmm2ext/dndvbox.h
+++ b/libs/gtkmm2ext/gtkmm2ext/dndvbox.h
@@ -44,6 +44,8 @@ public:
/** @return True if the child can be selected in the list ( if you don't want it to copy/paste/drag then turn this off ) */
virtual bool is_selectable () const = 0;
+
+ virtual bool drag_data_get (Glib::RefPtr<Gdk::DragContext> const, Gtk::SelectionData &) { return false; }
};
/** A VBox whose contents can be dragged and dropped */
@@ -345,9 +347,11 @@ private:
return false;
}
- void drag_data_get (Glib::RefPtr<Gdk::DragContext> const &, Gtk::SelectionData & selection_data, guint, guint, T* child)
+ void drag_data_get (Glib::RefPtr<Gdk::DragContext> const &context, Gtk::SelectionData & selection_data, guint, guint, T* child)
{
- selection_data.set (selection_data.get_target(), 8, (const guchar *) &child, sizeof (&child));
+ if (!child->drag_data_get(context, selection_data)) {
+ selection_data.set (selection_data.get_target(), 8, (const guchar *) &child, sizeof (&child));
+ }
}
void drag_data_received (