Spec-Zone.ru › GTK 3.20

Перетаскивание

Перетаскивание — Функции для управления обработкой перетаскивания

Функции

void gtk_drag_dest_set ()
void gtk_drag_dest_set_proxy ()
void gtk_drag_dest_unset ()
GdkAtom gtk_drag_dest_find_target ()
GtkTargetList * gtk_drag_dest_get_target_list ()
void gtk_drag_dest_set_target_list ()
void gtk_drag_dest_add_text_targets ()
void gtk_drag_dest_add_image_targets ()
void gtk_drag_dest_add_uri_targets ()
void gtk_drag_dest_set_track_motion ()
gboolean gtk_drag_dest_get_track_motion ()
void gtk_drag_finish ()
void gtk_drag_get_data ()
GtkWidget * gtk_drag_get_source_widget ()
void gtk_drag_highlight ()
void gtk_drag_unhighlight ()
GdkDragContext * gtk_drag_begin ()
GdkDragContext * gtk_drag_begin_with_coordinates ()
void gtk_drag_cancel ()
void gtk_drag_set_icon_widget ()
void gtk_drag_set_icon_pixbuf ()
void gtk_drag_set_icon_stock ()
void gtk_drag_set_icon_surface ()
void gtk_drag_set_icon_name ()
void gtk_drag_set_icon_gicon ()
void gtk_drag_set_icon_default ()
gboolean gtk_drag_check_threshold ()
void gtk_drag_source_set ()
void gtk_drag_source_set_icon_pixbuf ()
void gtk_drag_source_set_icon_stock ()
void gtk_drag_source_set_icon_name ()
void gtk_drag_source_set_icon_gicon ()
void gtk_drag_source_unset ()
void gtk_drag_source_set_target_list ()
GtkTargetList * gtk_drag_source_get_target_list ()
void gtk_drag_source_add_text_targets ()
void gtk_drag_source_add_image_targets ()
void gtk_drag_source_add_uri_targets ()

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

перечисление GtkDestDefaults
перечисление GtkTargetFlags
перечисление GtkDragResult

Файлы

#include <gtk/gtk.h>

Описание

GTK+ предоставляет богатый набор функций для межпроцессного взаимодействия с помощью метафоры перетаскивания.

Помимо функций, перечисленных здесь, приложениям может потребоваться использовать некоторые средства, предоставляемые для Выборок. Кроме того, API перетаскивания использует сигналы в классе GtkWidget.

Функции

gtk_drag_dest_set ()

void
gtk_drag_dest_set (GtkWidget *widget,
                   GtkDestDefaults flags,
                   const GtkTargetEntry *targets,
                   gint n_targets,
                   GdkDragAction actions);

[метод]

Параметры

widget

a GtkWidget

flags

какие типы стандартного поведения перетаскивания использовать

targets

указатель на массив GtkTargetEntrys, указывающий типы падения, которые будет принимать эта widget, или NULL. Позже вы можете получить список с помощью gtk_drag_dest_get_target_list() и gtk_drag_dest_find_target().

[allow-none][array length=n_targets]

n_targets

количество элементов в targets

actions

маска битов возможных действий для падения на эту widget.

gtk_drag_dest_set_proxy ()

void
gtk_drag_dest_set_proxy (GtkWidget *widget,
                         GdkWindow *proxy_window,
                         GdkDragProtocol protocol,
                         gboolean use_coordinates);

[метод]

Параметры

widget

a GtkWidget

proxy_window

окно, которому пересылать события перетаскивания

protocol

протокол перетаскивания, который принимает proxy_window (Вы можете использовать gdk_drag_get_protocol() для определения этого)

use_coordinates

Если TRUE, отправлять те же координаты в пункт назначения, так как это вложенное подокно.

gtk_drag_dest_unset ()

void
gtk_drag_dest_unset (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget

gtk_drag_dest_find_target ()

GdkAtom
gtk_drag_dest_find_target (GtkWidget *widget,
                           GdkDragContext *context,
                           GtkTargetList *target_list);

[метод]

Параметры

widget

widget пункта назначения перетаскивания

context

контекст перетаскивания

target_list

список допустимых целевых типов, или NULL для использования gtk_drag_dest_get_target_list (widget).

[allow-none]

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

.

[transfer none]

gtk_drag_dest_get_target_list ()

GtkTargetList *
gtk_drag_dest_get_target_list (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget

gtk_drag_dest_set_target_list ()

void
gtk_drag_dest_set_target_list (GtkWidget *widget,
                               GtkTargetList *target_list);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

target_list

список допустимых целевых типов, или NULL для отсутствия.

[allow-none]

gtk_drag_dest_add_text_targets ()

void
gtk_drag_dest_add_text_targets (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

С: 2.6

gtk_drag_dest_add_image_targets ()

void
gtk_drag_dest_add_image_targets (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

С: 2.6

gtk_drag_dest_add_uri_targets ()

void
gtk_drag_dest_add_uri_targets (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

С: 2.6

gtk_drag_dest_set_track_motion ()

void
gtk_drag_dest_set_track_motion (GtkWidget *widget,
                                gboolean track_motion);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

track_motion

принять все типы

С: 2.10

gtk_drag_dest_get_track_motion ()

gboolean
gtk_drag_dest_get_track_motion (GtkWidget *widget);

[метод]

Параметры

widget

a GtkWidget, являющийся пунктом назначения перетаскивания

С: 2.10

gtk_drag_finish ()

void
gtk_drag_finish (GdkDragContext *context,
                 gboolean success,
                 gboolean del,
                 guint32 time_);

[метод]

Параметры

context

контекст перетаскивания.

success

флаг, указывающий, был ли результат перетаскивания успешным.

del

флаг, указывающий, нужно ли удалить исходные данные в источнике. (Должно быть TRUE для перемещения)

time_

временная метка из сигнала “drag-drop”.

gtk_drag_get_data ()

void
gtk_drag_get_data (GtkWidget *widget,
                   GdkDragContext *context,
                   GdkAtom target,
                   guint32 time_);

[метод]

Параметры

widget

виджет, который получит сигнал “drag-data-received”.

context

контекст перетаскивания

target

целевой формат данных для извлечения.

time_

временная метка для извлечения данных. Обычно это время, полученное в сигнале “drag-motion” или “drag-drop”.

gtk_drag_get_source_widget ()

GtkWidget *
gtk_drag_get_source_widget (GdkDragContext *context);

[метод]

Параметры

context

контекст перетаскивания (сторона назначения)

Возвращает

.

[передача не требуется]

gtk_drag_highlight ()

void
gtk_drag_highlight (GtkWidget *widget);

[метод]

Параметры

widget

виджет для выделения.

gtk_drag_unhighlight ()

void
gtk_drag_unhighlight (GtkWidget *widget);

[метод]

Параметры

widget

виджет, для которого нужно снять выделение.

gtk_drag_begin ()

GdkDragContext *
gtk_drag_begin (GtkWidget *widget,
                GtkTargetList *targets,
                GdkDragAction actions,
                gint button,
                GdkEvent *event);

gtk_drag_begin устарел с версии 3.10 и не должен использоваться в новом коде.

Используйте gtk_drag_begin_with_coordinates() вместо этого.

[метод]

Параметры

widget

исходный виджет.

targets

форматы данных, в которых источник может предоставить данные.

actions

Маска бит, определяющая разрешённые действия перетаскивания.

button

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

event

событие, которое вызвало начало перетаскивания.

Возвращает

.

[передача не требуется]

gtk_drag_begin_with_coordinates ()

GdkDragContext *
gtk_drag_begin_with_coordinates (GtkWidget *widget,
                                 GtkTargetList *targets,
                                 GdkDragAction actions,
                                 gint button,
                                 GdkEvent *event,
                                 gint x,
                                 gint y);

[метод]

Возвращает

.

[передача не требуется]

С версии: 3.10

gtk_drag_cancel ()

void
gtk_drag_cancel (GdkDragContext *context);

[метод]

Параметры

context

GdkDragContext, например, возвращаемый gtk_drag_begin_with_coordinates()

С версии: 3.16

gtk_drag_set_icon_widget ()

void
gtk_drag_set_icon_widget (GdkDragContext *context,
                          GtkWidget *widget,
                          gint hot_x,
                          gint hot_y);

Изменяет значок виджета на указанный виджет. GTK+ не уничтожит значок, поэтому, если вы не хотите, чтобы он сохранялся, подключитесь к сигналу «drag-end» и уничтожьте его самостоятельно.

[метод]

Параметры

context

контекст перетаскивания (должно вызываться для стороны источника перетаскивания)

widget

главное окно, которое использовать в качестве значка.

hot_x

смещение по оси X внутри widget от точки привязки.

hot_y

смещение по оси Y внутри widget от точки привязки.

gtk_drag_set_icon_pixbuf ()

void
gtk_drag_set_icon_pixbuf (GdkDragContext *context,
                          GdkPixbuf *pixbuf,
                          gint hot_x,
                          gint hot_y);

Устанавливает pixbuf в качестве значка для данного перетаскивания.

[метод]

Параметры

context

контекст перетаскивания (должно вызываться для стороны источника перетаскивания)

pixbuf

 GdkPixbuf для использования в качестве значка перетаскивания.

hot_x

смещение по оси X внутри widget от точки привязки.

hot_y

смещение по оси Y внутри widget от точки привязки.

gtk_drag_set_icon_stock ()

void
gtk_drag_set_icon_stock (GdkDragContext *context,
                         const gchar *stock_id,
                         gint hot_x,
                         gint hot_y);

gtk_drag_set_icon_stock устарел начиная с версии 3.10 и не должен использоваться в новых кодах.

Используйте gtk_drag_set_icon_name() вместо него.

Устанавливает значок для данного перетаскивания по идентификатору стандартного значка.

[метод]

Параметры

context

контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания)

stock_id

идентификатор стандартного значка для использования в перетаскивании.

hot_x

смещение по оси X в значке для горячей точки.

hot_y

смещение по оси Y в значке для горячей точки.

gtk_drag_set_icon_surface ()

void
gtk_drag_set_icon_surface (GdkDragContext *context,
                           cairo_surface_t *surface);

Устанавливает surface в качестве значка для данного перетаскивания. GTK+ сохраняет ссылки на аргументы и освободит их, когда они больше не нужны.

Для позиционирования поверхности относительно указателя мыши используйте cairo_surface_set_device_offset() для surface. Указатель мыши будет расположен в координатах (0,0) поверхности.

[метод]

Параметры

context

контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания)

surface

поверхность для использования в качестве значка

gtk_drag_set_icon_name ()

void
gtk_drag_set_icon_name (GdkDragContext *context,
                        const gchar *icon_name,
                        gint hot_x,
                        gint hot_y);

Устанавливает значок для данного перетаскивания по имени значка из темы. См. документацию по GtkIconTheme для получения дополнительной информации. Обратите внимание, что размер значка зависит от темы значков (значок загружается в символическом размере GTK_ICON_SIZE_DND), поэтому hot_x и hot_y необходимо использовать с осторожностью.

[метод]

Параметры

context

контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания)

icon_name

имя используемого значка

hot_x

смещение по оси X горячей точки внутри значка

hot_y

смещение по оси Y горячей точки внутри значка

С версии: 2.8

gtk_drag_set_icon_gicon ()

void
gtk_drag_set_icon_gicon (GdkDragContext *context,
                         GIcon *icon,
                         gint hot_x,
                         gint hot_y);

Устанавливает значок для данного перетаскивания из заданного icon. См. документацию по gtk_drag_set_icon_name() для получения дополнительной информации об использовании значков при перетаскивании.

[метод]

Параметры

context

контекст перетаскивания (Это необходимо вызвать с контекстом для исходной стороны перетаскивания)

icon

a GIcon

hot_x

смещение по оси X горячей точки внутри значка

hot_y

смещение по оси Y горячей точки внутри значка

С версии: 3.2

gtk_drag_set_icon_default ()

void
gtk_drag_set_icon_default (GdkDragContext *context);

Устанавливает значок для данного перетаскивания на значок по умолчанию.

[метод]

Параметры

context

контекст перетаскивания. (Это необходимо вызвать с контекстом для исходной стороны перетаскивания)

gtk_drag_check_threshold ()

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

[метод]

Параметры

widget

a GtkWidget

start_x

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

start_y

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

current_x

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

current_y

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

gtk_drag_source_set ()

void
gtk_drag_source_set (GtkWidget *widget,
                     GdkModifierType start_button_mask,
                     const GtkTargetEntry *targets,
                     gint n_targets,
                     GdkDragAction actions);

Настраивает виджет таким образом, что GTK+ инициирует операцию перетаскивания, когда пользователь нажимает и перетаскивает его. Виджет должен иметь окно.

[метод]

Параметры

widget

a GtkWidget

start_button_mask

маска битов кнопок, которые могут начать перетаскивание

targets

таблица поддерживаемых целей перетаскивания, может быть NULL.

[allow-none][array length=n_targets]

n_targets

количество элементов в targets

actions

маска битов возможных действий для перетаскивания с этого виджета

gtk_drag_source_set_icon_pixbuf ()

void
gtk_drag_source_set_icon_pixbuf (GtkWidget *widget,
                                 GdkPixbuf *pixbuf);

Устанавливает значок, который будет использоваться для перетаскивания с определенного виджета из GdkPixbuf. GTK+ сохраняет ссылку на pixbuf и освободит её, когда она больше не нужна.

[метод]

Параметры

widget

a GtkWidget

pixbuf

the GdkPixbuf для значка перетаскивания

gtk_drag_source_set_icon_stock ()

void
gtk_drag_source_set_icon_stock (GtkWidget *widget,
                                const gchar *stock_id);

gtk_drag_source_set_icon_stock устарело начиная с версии 3.10 и не должно использоваться в новом коде.

Используйте gtk_drag_source_set_icon_name() вместо этого.

Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде значка системы.

[метод]

Параметры

widget

a GtkWidget

stock_id

идентификатор значка системы для использования

gtk_drag_source_set_icon_name ()

void
gtk_drag_source_set_icon_name (GtkWidget *widget,
                               const gchar *icon_name);

Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде значка темы. Смотрите документацию для GtkIconTheme для получения дополнительной информации.

[метод]

Параметры

widget

a GtkWidget

icon_name

имя значка для использования

С версии: 2.8

gtk_drag_source_set_icon_gicon ()

void
gtk_drag_source_set_icon_gicon (GtkWidget *widget,
                                GIcon *icon);

Устанавливает значок, который будет использоваться для перетаскивания из определённого источника, в виде icon. Смотрите документацию для GtkIconTheme для получения дополнительной информации.

[метод]

Параметры

widget

a GtkWidget

icon

A GIcon

С версии: 3.2

gtk_drag_source_unset ()

void
gtk_drag_source_unset (GtkWidget *widget);

Отменяет действие gtk_drag_source_set().

[метод]

Параметры

widget

a GtkWidget

gtk_drag_source_set_target_list ()

void
gtk_drag_source_set_target_list (GtkWidget *widget,
                                 GtkTargetList *target_list);

Изменяет типы целевых объектов, предлагаемые этим виджетом для перетаскивания. Виджет сначала должен быть настроен как источник перетаскивания с помощью gtk_drag_source_set().

[метод]

Параметры

widget

a GtkWidget являющийся источником перетаскивания

target_list

список целевых объектов для перетаскивания, или NULL для отсутствия.

[allow-none]

С версии: 2.4

gtk_drag_source_get_target_list ()

GtkTargetList *
gtk_drag_source_get_target_list (GtkWidget *widget);

Получает список целевых объектов, которые может предоставить этот виджет для перетаскивания.

[метод]

Параметры

widget

a GtkWidget

Возвращает

GtkTargetList , или NULL если нет.

[nullable][transfer none]

С версии: 2.4

gtk_drag_source_add_text_targets ()

void
gtk_drag_source_add_text_targets (GtkWidget *widget);

Добавляет целевые объекты текстовых данных, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_text_targets() и gtk_drag_source_set_target_list().

[метод]

Параметры

widget

a GtkWidget являющийся источником перетаскивания

С версии: 2.6

gtk_drag_source_add_image_targets ()

void
gtk_drag_source_add_image_targets (GtkWidget *widget);

Добавляет целевые объекты изображений для записи, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_image_targets() и gtk_drag_source_set_target_list().

[метод]

Параметры

widget

a GtkWidget являющийся источником перетаскивания

С версии: 2.6

gtk_drag_source_add_uri_targets ()

void
gtk_drag_source_add_uri_targets (GtkWidget *widget);

Добавляет целевые объекты URI, поддерживаемые GtkSelectionData, в список целевых объектов источника перетаскивания. Целевые объекты добавляются с info = 0. Если вам нужно другое значение, используйте gtk_target_list_add_uri_targets() и gtk_drag_source_set_target_list().

[метод]

Параметры

widget

a GtkWidget являющийся источником перетаскивания

С версии: 2.6

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

Перечисление GtkDestDefaults

Перечисление GtkDestDefaults определяет различные типы действий, которые будут выполняться от имени пользователя для пункта назначения перетаскивания.

Элементы

GTK_DEST_DEFAULT_MOTION

Если задано для виджета, GTK+, во время перетаскивания над этим виджетом проверит, соответствует ли перетаскивание списку возможных целей и действий. GTK+ затем вызовет gdk_drag_status(), как соответствующим образом.

GTK_DEST_DEFAULT_HIGHLIGHT

Если задано для виджета, GTK+ отобразит выделение на этом виджете, пока перетаскивание происходит над этим виджетом и формат перетаскивания и действие виджета приемлемы.

GTK_DEST_DEFAULT_DROP

Если задано для виджета, при падении GTK+ проверит, соответствует ли перетаскивание списку возможных целей и действий этого виджета. Если да, GTK+ вызовет gtk_drag_get_data() от имени виджета. Независимо от успеха падения, GTK+ вызовет gtk_drag_finish(). Если действие было перемещением, и перетаскивание прошло успешно, то TRUE будет передано для параметра delete в gtk_drag_finish().

GTK_DEST_DEFAULT_ALL

Если задано, указывает, что должны быть выполнены все действия по умолчанию.

Перечисление GtkTargetFlags

Перечисление GtkTargetFlags используется для указания ограничений на GtkTargetEntry.

Элементы

GTK_TARGET_SAME_APP

Если установлено, цель будет выбрана только для перетаскивания в пределах одного приложения.

GTK_TARGET_SAME_WIDGET

Если установлено, цель будет выбрана только для перетаскивания в пределах одного виджета.

GTK_TARGET_OTHER_APP

Если установлено, цель не будет выбрана для перетаскивания в пределах одного приложения.

GTK_TARGET_OTHER_WIDGET

Если установлено, цель не будет выбрана для перетаскивания внутри одного виджета.

Перечисление GtkDragResult

Указывает причину, по которой операция перетаскивания не удалась. Значение можно получить, подключившись к сигналу “drag-failed”.

Элементы

GTK_DRAG_RESULT_SUCCESS

Операция перетаскивания прошла успешно.

GTK_DRAG_RESULT_NO_TARGET

Нет подходящей цели перетаскивания.

GTK_DRAG_RESULT_USER_CANCELLED

Пользователь отменил операцию перетаскивания.

GTK_DRAG_RESULT_TIMEOUT_EXPIRED

Операция перетаскивания истекла.

GTK_DRAG_RESULT_GRAB_BROKEN

Захват указателя или клавиатуры, используемый для операции перетаскивания, был прерван.

GTK_DRAG_RESULT_ERROR

Операция перетаскивания завершилась неудачей из-за неопределённой ошибки.

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/gtk3-Drag-and-Drop.html

Spec-Zone.ru

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