Spec-Zone.ru › GTK 4.0

GtkDragSource

GtkDragSource — Контроллер событий для инициации операций перетаскивания

Функции

GtkDragSource * gtk_drag_source_new ()
void gtk_drag_source_set_content ()
GdkContentProvider * gtk_drag_source_get_content ()
void gtk_drag_source_set_actions ()
GdkDragAction gtk_drag_source_get_actions ()
void gtk_drag_source_set_icon ()
void gtk_drag_source_drag_cancel ()
GdkDrag * gtk_drag_source_get_drag ()
gboolean gtk_drag_check_threshold ()

Свойства

GdkDragAction actions Чтение / Запись
GdkContentProvider * content Чтение / Запись

Сигналы

void drag-begin Выполнять последним
gboolean drag-cancel Выполнять последним
void drag-end Выполнять последним
GdkContentProvider* prepare Выполнять последним

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

GtkDragSource

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

    GObject
    ╰── GtkEventController
        ╰── GtkGesture
            ╰── GtkGestureSingle
                ╰── GtkDragSource

Файлы заголовков

#include <gtk/gtk.h>

Описание

GtkDragSource — вспомогательный объект, используемый для инициирования операций перетаскивания. Он может быть настроен с необходимыми компонентами для операции перетаскивания заранее. Это включает в себя источник передаваемых данных в виде GdkContentProvider, желаемое действие и иконку, используемую во время операции перетаскивания. После настройки источник перетаскивания должен быть добавлен в виджет в качестве контроллера событий с помощью gtk_widget_add_controller().

Настройка поставщика контента и иконки заранее имеет смысл только тогда, когда данные не изменяются. Чаще всего вы захотите настроить их непосредственно перед необходимостью. Для этого у GtkDragSource есть сигналы “prepare” и “drag-begin”.

Сигнал ::prepare генерируется перед началом перетаскивания и может быть использован для установки поставщика контента и действий, с которыми должно начаться перетаскивание.

Сигнал ::drag-begin генерируется после создания объекта GdkDrag и может быть использован для настройки иконки перетаскивания.

static void
my_widget_init (MyWidget *self)
{
  GtkDragSource *drag_source = gtk_drag_source_new ();

  g_signal_connect (drag_source, "prepare", G_CALLBACK (on_drag_prepare), self);
  g_signal_connect (drag_source, "drag-begin", G_CALLBACK (on_drag_begin), self);

  gtk_widget_add_controller (GTK_WIDGET (self), GTK_EVENT_CONTROLLER (drag_source));
}

Во время операции перетаскивания GtkDragSource генерирует сигналы, которые можно использовать для получения обновлений о состоянии операции, но обычно нет необходимости подключаться к каким-либо сигналам, кроме одного случая: когда поддерживаемые действия включают GDK_ACTION_MOVE, вам нужно прослушивать сигнал “drag-end” и удалять данные после их передачи.

Функции

gtk_drag_source_new ()

GtkDragSource *
gtk_drag_source_new (void);

Создаёт новый объект GtkDragSource.

Возвращает

новый объект GtkDragSource

gtk_drag_source_set_content ()

void
gtk_drag_source_set_content (GtkDragSource *source,
                             GdkContentProvider *content);

Устанавливает поставщик содержимого для объекта GtkDragSource.

При запросе данных в ходе операции перетаскивания данные будут получены от поставщика содержимого.

Эта функция может быть вызвана до начала перетаскивания или в обработчике сигнала “prepare”.

Можно рассмотреть установку поставщика содержимого обратно в значение NULL в обработчике сигнала “drag-end”.

Параметры

source

объект GtkDragSource

content

объект GdkContentProvider или NULL.

[nullable]

gtk_drag_source_get_content ()

GdkContentProvider *
gtk_drag_source_get_content (GtkDragSource *source);

Возвращает текущего поставщика содержимого объекта GtkDragSource.

Параметры

source

объект GtkDragSource

Возвращает

объект GdkContentProvider объекта source .

[nullable][transfer none]

gtk_drag_source_set_actions ()

void
gtk_drag_source_set_actions (GtkDragSource *source,
                             GdkDragAction actions);

Устанавливает действия для объекта GtkDragSource.

Во время операции перетаскивания действия предлагаются потенциальным целевым объектам. Если actions включают GDK_ACTION_MOVE, необходимо прослушивать сигнал “drag-end” и обрабатывать delete_data как TRUE.

Эта функция может быть вызвана до начала перетаскивания или в обработчике сигнала “prepare”.

Параметры

source

объект GtkDragSource

actions

предлагаемые действия

gtk_drag_source_get_actions ()

GdkDragAction
gtk_drag_source_get_actions (GtkDragSource *source);

Получает действия, установленные для объекта GtkDragSource.

Параметры

source

объект GtkDragSource

Возвращает

установленные действия для source

gtk_drag_source_set_icon ()

void
gtk_drag_source_set_icon (GtkDragSource *source,
                          GdkPaintable *paintable,
                          int hot_x,
                          int hot_y);

Устанавливает элемент отрисовки для использования в качестве значка во время операции перетаскивания.

Координаты точки привязки определяют точку на значке, которая выравнивается с точкой привязки курсора.

Если paintable равно NULL, используется значок по умолчанию.

Эта функция может быть вызвана до начала перетаскивания, или в обработчике сигналов “prepare” или “drag-begin”.

Параметры

source

объект GtkDragSource

paintable

элемент отрисовки GdkPaintable для использования в качестве значка, или NULL.

[nullable]

hot_x

координата X точки привязки на значке

hot_y

координата Y точки привязки на значке

gtk_drag_source_drag_cancel ()

void
gtk_drag_source_drag_cancel (GtkDragSource *source);

Отменяет текущую операцию перетаскивания.

Параметры

source

объект GtkDragSource

gtk_drag_source_get_drag ()

GdkDrag *
gtk_drag_source_get_drag (GtkDragSource *source);

Возвращает базовый объект GdkDrag для текущей операции перетаскивания.

Параметры

source

объект GtkDragSource

Возвращает

объект GdkDrag текущей операции перетаскивания, или NULL.

[nullable][transfer none]

gtk_drag_check_threshold ()

gboolean
gtk_drag_check_threshold (GtkWidget *widget,
                          int start_x,
                          int start_y,
                          int current_x,
                          int current_y);

Проверяет, прошла ли операция перетаскивания порог GTK, начавшаяся в точке (start_x , start_y ) и завершившаяся в точке (current_x , current_y ), и, следовательно, должна ли начаться операция перетаскивания и перекладывания.

[method]

Параметры

widget

объект GtkWidget

start_x

координата X начала перетаскивания

start_y

координата Y начала перетаскивания

current_x

текущая координата X

current_y

текущая координата Y

Возвращает

TRUE , если порог перетаскивания пройден.

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

GtkDragSource

typedef struct _GtkDragSource GtkDragSource;

Подробности свойств

Свойство “actions”

  “actions”                  GdkDragAction

Действия, поддерживаемые операциями перетаскивания из источника.

Обратите внимание, что вам необходимо обработать сигнал “drag-end”, если действия включают GDK_ACTION_MOVE.

Владелец: GtkDragSource

Флаги: Чтение / Запись

Значение по умолчанию: GDK_ACTION_COPY

Свойство “content”

  “content”                  GdkContentProvider *

Данные, предлагаемые операциями перетаскивания из этого источника в виде GdkContentProvider.

Владелец: GtkDragSource

Флаги: Чтение / Запись

Подробности сигналов

Сигнал “drag-begin”

void
user_function (GtkDragSource *source,
               GdkDrag       *drag,
               gpointer       user_data)

Сигнал ::drag-begin испускается в источнике перетаскивания при начале перетаскивания. Он может быть использован для, например, установки пользовательского значка перетаскивания с помощью gtk_drag_source_set_icon().

Параметры

source

объект GtkDragSource

drag

объект GdkDrag

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Выполнять последним

Сигнал “drag-cancel”

gboolean
user_function (GtkDragSource      *source,
               GdkDrag            *drag,
               GdkDragCancelReason reason,
               gpointer            user_data)

Сигнал ::drag-cancel испускается в источнике перетаскивания, когда перетаскивание завершилось неудачно. Обработчик сигнала может обработать неудачную операцию перетаскивания в зависимости от типа ошибки. Он должен вернуть TRUE если ошибка обработана, и анимация по умолчанию «операция перетаскивания завершилась неудачно» не должна отображаться.

Параметры

source

объект GtkDragSource

drag

объект GdkDrag

reason

информация о причинах неудачи перетаскивания

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE если неудачная операция перетаскивания уже обработана

Флаги: Выполнять последним

Сигнал “drag-end”

void
user_function (GtkDragSource *source,
               GdkDrag       *drag,
               gboolean       delete_data,
               gpointer       user_data)

Сигнал ::drag-end испускается в источнике перетаскивания по завершении перетаскивания. Типичная причина подключения к этому сигналу — отмена действий, выполненных в “prepare” или “drag-begin”.

Параметры

source

объект GtkDragSource

drag

объект GdkDrag

delete_data

TRUE если перетаскивание выполняло GDK_ACTION_MOVE, и данные должны быть удалены

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Выполнять последним

Сигнал “prepare”

GdkContentProvider*
user_function (GtkDragSource *source,
               double         x,
               double         y,
               gpointer       user_data)

Сигнал ::prepare испускается, когда операция перетаскивания собирается инициировать. Он возвращает * GdkContentProvider для использования при перетаскивании, которое собирается начать. Обработчик по умолчанию для этого сигнала возвращает значение свойства “content”, поэтому если вы настроили это свойство заранее, вам не нужно подключаться к этому сигналу.

Параметры

source

объект GtkDragSource

x

координата X точки начала перетаскивания

y

координата Y точки начала перетаскивания

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

объект GdkContentProvider, или NULL.

[transfer full][nullable]

Флаги: Выполнять последним

© 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/GtkDragSource.html

Spec-Zone.ru

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