gtk_drag_source_set()函数指定一套在构件上拖动操作时的目标类型。
void gtk_drag_source_set( GtkWidget *widget, GdkModifierType start_button_mask, const GtkTargetEntry *targets, gint n_targets, GdkDragAction actions ); |
这些参数的作用如下:
widget 指定拖动源构件
start_button_mask 指定能引发拖动操作的鼠标按键的位掩码(bitmask),比如GDK_BUTTON1_MASK
targets 指定一个此拖动支持的目标数据类型的表格
n_targets 指定上面的目标的数量
actions 指定从这个窗口进行拖动时可能的行为的位掩码
targets参数是一个由下面的结构组成的数组:
struct GtkTargetEntry { gchar *target; guint flags; guint info; }; |
这一结构指定一个代表拖动类型的字符串,可选的标记和应用程序指派的整数标识符。
如果一个构件不必再担当拖放操作的源,用gtk_drag_source_unset()函数可以删除一套拖放目标类型。
void gtk_drag_source_unset( GtkWidget *widget ); |
在一个拖放操作中源构件将被发送下面的这些信号。
Table 1. 源构件的信号
drag_begin | void (*drag_begin)(GtkWidget *widget, GdkDragContext *dc, gpointer data) |
drag_motion | gboolean (*drag_motion)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data) |
drag_data_get | void (*drag_data_get)(GtkWidget *widget, GdkDragContext *dc, GtkSelectionData *selection_data, guint info, guint t, gpointer data) |
drag_data_delete | void (*drag_data_delete)(GtkWidget *widget, GdkDragContext *dc, gpointer data) |
drag_drop | gboolean (*drag_drop)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, guint t, gpointer data) |
drag_end | void (*drag_end)(GtkWidget *widget, GdkDragContext *dc, gpointer data) |
gtk_drag_dest_set()指定这个构件可以接收拖动并指定它能接收的拖动的类型。
gtk_drag_dest_unset()指定构件不再能接收拖动了。
void gtk_drag_dest_set( GtkWidget *widget, GtkDestDefaults flags, const GtkTargetEntry *targets, gint n_targets, GdkDragAction actions ); void gtk_drag_dest_unset( GtkWidget *widget ); |
在一个拖放操作中目的构件将被发送下面的这些信号。
Table 2. 目的构件的信号
drag_data_received | void (*drag_data_received)(GtkWidget *widget, GdkDragContext *dc, gint x, gint y, GtkSelectionData *selection_data, guint info, guint t, gpointer data) |