ウィジットは以下のGtk::Widgetクラスのメソッドを使って、ソースとデスティネーションに自分の情報を伝えます:
void drag_source_set(const ArrayHandle_TargetEntry& targets, GdkModifierType start_button_mask, GdkDragAction actions);
targetsはGtk::TargetEntry型が要素のコンテナ(例えば、std::list<Gtk::TargetEntry>やstd::vector<Gtk::TargetEntry>など)。
start_button_maskはOR演算で組み合わされた値で、どのキーまたはマウスボタンが押されればドラッグが始まるのかを設定します。
actionsはOR演算で組み合わされた値で、このソースにおいてどのドラッグ・アンド・ドロップ操作が可能であるかを設定します。例えば、コピー、移動、リンクなどの操作です。ユーザーは追加キーによってアクションを選ぶことができます。Shiftキーでコピーを移動に変更し、違ったカーソルを見せるようにすることなどです。
void drag_dest_set(const ArrayHandle_TargetEntry& targets, GtkDestDefaults flags, GdkDragAction actions);
flagsはOR演算で組み合わされた値で、このウィジットがどのようにドラッグ・アンド・ドロップされたアイテムを受け入れるかを指定します。
actionsはドラッグ・アンド・ドロップのデスティネーション先が受け入れることできるアクションを指定します。 先の記述を参照してください。