GtkDropTargetAsync
GtkDropTargetAsync — Контроллер событий для получения падений DND
Функции
Свойства
| GdkDragAction | actions | Чтение / Запись |
| GdkContentFormats * | formats | Чтение / Запись |
Сигналы
| gboolean | accept | Выполнить последним |
| GdkDragAction | drag-enter | Выполнить последним |
| void | drag-leave | Выполнить последним |
| GdkDragAction | drag-motion | Выполнить последним |
| gboolean | drop | Выполнить последним |
Типы и значения
Иерархия объектов
GObject
╰── GtkEventController
╰── GtkDropTargetAsync
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkDropTargetAsync — вспомогательный объект, который можно использовать для приема операций перетаскивания и падения. Это более полное, но также более сложное решение для обработки операций падения по сравнению с GtkDropTarget, и вы должны использовать его только в том случае, если GtkDropTarget не предоставляет всех необходимых функций.
Для использования GtkDropTargetAsync для приема падений на виджете, вы создаете объект GtkDropTargetAsync, настраиваете поддерживаемые форматы данных и действия, подключаетесь к его сигналам, а затем прикрепляете его к виджету с помощью gtk_widget_add_controller().
Во время операции перетаскивания первым сигналом, который отправляет GtkDropTargetAsync, является «accept», который предназначен для определения, является ли целевой объект возможной точкой падения для текущего падения. Обработчик по умолчанию для сигнала ::accept принимает падение, если находит совместимый формат данных и действие, которое поддерживается обеими сторонами.
Если это так, и виджет становится целью, вы получите сигнал «drag-enter», за которым следуют сигналы «drag-motion» по мере перемещения указателя, необязательно сигнал «drop» при падении и, наконец, сигнал «drag-leave» при уходе указателя с виджета.
Обработчик сигналов ::drag-enter и ::drag-motion возвращают GdkDragAction для обновления состояния текущей операции. Обработчик ::drop должен решить, принимать ли падение в конечном итоге, а если да, то инициировать передачу данных и завершить операцию, вызвав gdk_drop_finish().
Между сигналами ::drag-enter и ::drag-leave виджет является текущей целью падения и получит состояние GTK_STATE_FLAG_DROP_ACTIVE, которое темы могут использовать для стилизации виджета как цели падения.
Функции
gtk_drop_target_async_new ()
GtkDropTargetAsync * gtk_drop_target_async_new (GdkContentFormats *formats,GdkDragAction actions);
Создаёт новый объект GtkDropTargetAsync.
Параметры
форматы | поддерживаемые форматы данных. | [nullable][transfer full] |
действия | поддерживаемые действия |
Возвращаемое значение
новый объект GtkDropTargetAsync.
gtk_drop_target_async_set_formats ()
void gtk_drop_target_async_set_formats (GtkDropTargetAsync *self,GdkContentFormats *formats);
Устанавливает форматы данных, которые будет принимать данный целевой объект.
Параметры
self | объект GtkDropTargetAsync. | |
форматы | поддерживаемые форматы данных или | [nullable] |
gtk_drop_target_async_get_formats ()
GdkContentFormats *
gtk_drop_target_async_get_formats (GtkDropTargetAsync *self); Получает форматы данных, которые принимает данный целевой объект.
Если результат NULL, все форматы предполагаются поддерживаемыми.
Параметры
self | объект GtkDropTargetAsync. |
Возвращаемое значение
поддерживаемые форматы данных.
[nullable]
gtk_drop_target_async_set_actions ()
void gtk_drop_target_async_set_actions (GtkDropTargetAsync *self,GdkDragAction actions);
Устанавливает действия, которые поддерживает этот целевой объект.
Параметры
self | объект GtkDropTargetAsync. | |
действия | поддерживаемые действия |
gtk_drop_target_async_get_actions ()
GdkDragAction
gtk_drop_target_async_get_actions (GtkDropTargetAsync *self); Получает действия, которые поддерживает этот целевой объект.
Параметры
self | объект GtkDropTargetAsync. |
Возвращаемое значение
действия, которые поддерживает этот целевой объект.
gtk_drop_target_async_reject_drop ()
void gtk_drop_target_async_reject_drop (GtkDropTargetAsync *self,GdkDrop *drop);
Устанавливает drop как не принятое в данном месте перетаскивания.
Эта функция должна использоваться при отложенном принятии или отклонении перетаскивания до получения данных.
Параметры
self | объект GtkDropTargetAsync. | |
drop | объект GdkDrop текущей операции перетаскивания. |
Типы и значения
GtkDropTargetAsync
typedef struct _GtkDropTargetAsync GtkDropTargetAsync;
Подробности свойств
Свойство “actions”
“actions” GdkDragAction
Поддерживаемые GdkDragActions действия.
Владелец: GtkDropTargetAsync
Флаги: Чтение / Запись
Свойство “formats”
“formats” GdkContentFormats *
Форматы данных GdkContentFormats, определяющие поддерживаемые форматы.
Владелец: GtkDropTargetAsync
Флаги: Чтение / Запись
Подробности сигналов
Сигнал “accept”
gboolean user_function (GtkDropTargetAsync *self, GdkDrop *drop, gpointer user_data)
Сигнал ::accept генерируется в точке приема, когда операция переноса данных (drop) вот-вот начнется.
Если перенос не принят, будет возвращено FALSE, и целевой объект переноса проигнорирует операцию. Если возвращено TRUE, перенос принят временно, но может быть отклонен позже с помощью вызова gtk_drop_target_async_reject() или в конечном итоге возвращением значения FALSE из “drop”.
Обработчик по умолчанию для этого сигнала определяет, принимать ли перенос, основываясь на форматах, предоставленных drop.
Если для принятия или отклонения переноса требуется дополнительная обработка, например, проверка данных, эта функция должна вернуть TRUE и продолжить, как если бы drop был принят; если перенос необходимо отклонить, следует вызвать gtk_drop_target_async_reject_drop().
Параметры
self | объект GtkDropTargetAsync | |
drop | объект GdkDrop | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если drop принят
Флаги: Run Last
Сигнал “drag-enter”
GdkDragAction user_function (GtkDropTargetAsync *self, GdkDrop *drop, double x, double y, gpointer user_data)
Сигнал ::drag-enter генерируется в точке приема, когда указатель мыши входит в виджет. Он может использоваться для настройки пользовательского выделения.
Параметры
self | объект GtkDropTargetAsync | |
drop | объект GdkDrop | |
x | координата x текущего положения указателя | |
y | координата y текущего положения указателя | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
Предпочтительное действие для данной операции переноса.
Флаги: Run Last
Сигнал “drag-leave”
void user_function (GtkDropTargetAsync *self, GdkDrop *drop, gpointer user_data)
Сигнал ::drag-leave генерируется в точке приема, когда указатель мыши покидает виджет. Его основная цель — отменить действия, выполненные в “drag-enter”.
Параметры
self | объект GtkDropTargetAsync | |
drop | объект GdkDrop | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
Сигнал “drag-motion”
GdkDragAction user_function (GtkDropTargetAsync *self, GdkDrop *drop, double x, double y, gpointer user_data)
Сигнал ::drag-motion генерируется, пока указатель находится над целевым объектом переноса.
Параметры
self | объект GtkDropTargetAsync | |
drop | объект GdkDrop | |
x | координата x текущего положения указателя | |
y | координата y текущего положения указателя | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
Предпочтительное действие для данной операции переноса.
Флаги: Run Last
Сигнал “drop”
gboolean user_function (GtkDropTargetAsync *self, GdkDrop *drop, double x, double y, gpointer user_data)
Сигнал ::drop генерируется в точке приема, когда пользователь опускает данные на виджет. Обработчик сигнала должен определить, находится ли позиция указателя в зоне приема. Если нет, он возвращает FALSE, и дальнейшая обработка не требуется.
В противном случае обработчик возвращает TRUE. В этом случае обработчик примет перенос. Обработчик должен убедиться, что вызывается gdk_drop_finish(), чтобы сообщить источнику о завершении переноса. Вызов gdk_drop_finish() должен выполняться только после получения всех данных.
Для получения данных используйте одну из функций чтения, предоставляемых объектом GdkDrop, например, gdk_drop_read_async() или gdk_drop_read_value_async().
Параметры
self | объект GtkDropTargetAsync | |
drop | объект GdkDrop | |
x | координата x текущего положения указателя | |
y | координата y текущего положения указателя | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
принимается ли перенос в данной позиции указателя
Флаги: Run Last
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkDropTargetAsync.html