Signals
| Chapter 18. Drag and Drop |

## Signals

When a drop destination has accepted a dragged item, certain signals will be emitted, depending on what action has been selected. For instance, the user might have held down the Shift key to specify a `move` rather than a `copy`. Remember that the user can only select the actions which you have specified in your calls to `drag_dest_set()` and `drag_source_set()`.

### Copy

The source widget will emit these signals, in this order:

- `drag_begin`: Provides DragContext.

- `drag_data_get`: Provides `info` about the dragged data format, and a `Gtk::SelectionData` structure, in which you should put the requested data.

- `drag_end`: Provides DragContext.

The destination widget will emit these signals, in this order:

- `drag_motion`: Provides DragContext and coordinates. You can call the `drag_status()` method of the DragContext to indicate which action will be accepted.

- `drag_drop`: Provides DragContext and coordinates. You can call `drag_get_data()`, which triggers the `drag_data_get` signal in the source widget, and then the `drag_data_received` signal in the destination widget.

- `drag_data_received`: Provides `info` about the dragged data format, and a `Gtk::SelectionData` structure which contains the dropped data. You should call the `drag_finish()` method of the `DragContext` to indicate whether the operation was successful.

### Move

During a `move`, the source widget will also emit this signal:

- `drag_data_delete`: Gives the source the opportunity to delete the original data if that's appropriate.

Methods |  | DragContext