Widgets can be identified as sources or destinations using these Gtk::Widget methods:

void drag_source_set(const std::vector<Gtk::TargetEntry>& targets,
      Gdk::ModifierType start_button_mask, Gdk::DragAction actions);
  • targets is a vector of Gtk::TargetEntry elements.
  • start_button_mask is an ORed combination of values, which specify which modifier key or mouse button must be pressed to start the drag.
  • actions is an ORed combination of values, which specified which Drag and Drop operations will be possible from this source - for instance, copy, move, or link. The user can choose between the actions by using modifier keys, such as Shift to change from copy to move, and this will be shown by a different cursor.
void drag_dest_set(const std::vector<Gtk::TargetEntry>& targets,
    Gtk::DestDefaults flags, Gdk::DragAction actions);
  • flags is an ORed combination of values which indicates how the widget will respond visually to Drag and Drop items.
  • actions indicates the Drag and Drop actions which this destination can receive - see the description above.