GTK+ 2.0 Tutorial |
||
---|---|---|
Drag-and-drop (DND) |
Функция gtk_drag_source_set() определяет ряд целевых типов операции перетаскивания на виджете.
void gtk_drag_source_set( GtkWidget *widget,
GdkModifierType start_button_mask,
const GtkTargetEntry *targets,
gint n_targets,
GdkDragAction actions );
|
Параметры показывают следующее:
start_button_mask - определяет bitmask кнопок которые могут начать перетаскивание (например GDK_BUTTON1_MASK)
targets - определяет таблицу целевых данных типов поддерживающих перетаскивание
actions - определяет bitmask возможных действий перетаскивания из этого окна
Параметр targets - массив следующей структуры:
struct GtkTargetEntry {
gchar *target;
guint flags;
guint info;
};
|
Поля определяют строку представляющую тип перетаскивания, дополнительные флаги и приложение заданного целочисленного идентификатора.
Если виджет больше не обязан действовать как источник для операций перетаскивания, функция gtk_drag_source_unset() может использоваться, чтобы удалить ряд типов адресата перетаскивания.
void gtk_drag_source_unset( GtkWidget *widget );
|
Исходному виджету посылают следующие сигналы в течение операции перетаскивания.
Таблица 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 );
|
Виджету назначения посылают следующие сигналы в течение операции перетаскивания.
Таблица 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) |
Properties |
GLib |