信号
当一个放置目的地接受了拖动项,根据被选择的动作,将发出响应的信号。例如,用户可能按住Shift键指定进行move而不是copy。请注意,用户只能选择你在调用drag_dest_set()和drag_source_set()时所指定的动作。
17.3.1. 复制
源部件将按以下顺序发出这些信号:
- drag_begin:提供一个Gdk::Drag。
- drag_data_get:提供一个Gdk::Drag和一个Gtk::SelectionData对象,你应该在其中放入所请求的数据。
- drag_end:提供一个Gdk::Drag。
目的地部件将按以下顺序发出这些信号:
- drag_motion:提供一个Gdk::Drop以及坐标。你可以调用Gdk::Drop的status()方法来指示要接受的动作。
- drag_drop:提供一个Gdk::Drop以及坐标。你可以调用drag_get_data(),这将触发源部件的drag_data_get信号,并在之后触发目的地部件的drag_data_received信号。
- drag_data_received:提供一个Gdk::Drop和一个包含要放置的数据的Gtk::SelectionData对象。你应该调用Gdk::Drop的finish()或failed()方法来指示操作是否成功。