Spec-Zone.ru › GTK 4.0

GtkDropTargetAsync

GtkDropTargetAsync — Контроллер событий для получения падений DND

Функции

GtkDropTargetAsync * gtk_drop_target_async_new ()
void gtk_drop_target_async_set_formats ()
GdkContentFormats * gtk_drop_target_async_get_formats ()
void gtk_drop_target_async_set_actions ()
GdkDragAction gtk_drop_target_async_get_actions ()
void gtk_drop_target_async_reject_drop ()

Свойства

GdkDragAction actions Чтение / Запись
GdkContentFormats * formats Чтение / Запись

Сигналы

gboolean accept Выполнить последним
GdkDragAction drag-enter Выполнить последним
void drag-leave Выполнить последним
GdkDragAction drag-motion Выполнить последним
gboolean drop Выполнить последним

Типы и значения

GtkDropTargetAsync

Иерархия объектов

    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.

форматы

поддерживаемые форматы данных или NULL для любого формата.

[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

См. также

GtkDropTarget

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API