信号

当一个放置目的地接受了拖动项,根据被选择的动作,将发出响应的信号。例如,用户可能按住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::Dropstatus()方法来指示要接受的动作。
  • drag_drop:提供一个Gdk::Drop以及坐标。你可以调用drag_get_data(),这将触发源部件的drag_data_get信号,并在之后触发目的地部件的drag_data_received信号。
  • drag_data_received:提供一个Gdk::Drop和一个包含要放置的数据的Gtk::SelectionData对象。你应该调用Gdk::Dropfinish()failed()方法来指示操作是否成功。

17.3.2. 移动

move的过程中,源部件还将会发出以下信号:

  • drag_data_delete:给源删除原始数据的合适时机。