Spec-Zone.ru › GTK 3.22

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

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

Функции

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);

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

Стандартное поведение, указанное в flags, аналогично установке обработчиков по умолчанию для сигналов перетаскивания виджета («drag-motion», «drag-drop», ...). Все они предназначены для удобства. При передаче GTK_DEST_DEFAULT_ALL, например, достаточно подключиться к сигналу «drag-data-received» виджета, чтобы получить базовую, но согласованную поддержку перетаскивания.

Детали усложняются, когда вы пытаетесь предварительно просмотреть перетаскиваемые данные, как описано в документации для «drag-motion». Стандартное поведение, описанное в flags, делает некоторые предположения, которые могут конфликтовать с вашими собственными обработчиками сигналов. Например, GTK_DEST_DEFAULT_DROP вызывает вызовы gdk_drag_status() в контексте «drag-motion» и вызовы gtk_drag_finish() в «drag-data-received». Особенно последнее вызывает проблемы, когда собственный обработчик «drag-motion» вызывает gtk_drag_get_data() для проверки перетаскиваемых данных.

Установить действие по умолчанию здесь нельзя, для этого можно использовать обратный вызов «drag-motion». Вот пример, который выбирает действие в зависимости от того, нажата ли клавиша управления:

static void
drag_motion (GtkWidget *widget,
             GdkDragContext *context,
             gint x,
             gint y,
             guint time)
{
  GdkModifierType mask;

  gdk_window_get_pointer (gtk_widget_get_window (widget),
                          NULL, NULL, &mask);
  if (mask & GDK_CONTROL_MASK)
    gdk_drag_status (context, GDK_ACTION_COPY, time);
  else
    gdk_drag_status (context, GDK_ACTION_MOVE, time);
}

[метод]

Параметры

widget

виджет 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);

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

Устанавливает этот виджет как прокси для выгрузки в другое окно.

[метод]

Параметры

widget

виджет GtkWidget

proxy_window

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

protocol

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

use_coordinates

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

gtk_drag_dest_unset ()

void
gtk_drag_dest_unset (GtkWidget *widget);

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

[метод]

Параметры

widget

виджет GtkWidget

gtk_drag_dest_find_target ()

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

Ищет соответствие между поддерживаемыми целевыми объектами context и dest_target_list, возвращая первую соответствующую цель, в противном случае возвращает GDK_NONE. dest_target_list обычно должно быть возвращаемым значением из gtk_drag_dest_get_target_list(), но некоторые виджеты могут иметь разные допустимые цели для разных частей виджета; в этом случае им придется реализовать обработчик drag_motion, который передаст правильный список целей в эту функцию.

[метод]

Параметры

widget

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

context

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

target_list

список выгружаемых целей, или NULL, чтобы использовать gtk_drag_dest_get_target_list (widget ).

[allow-none]

Возвращает

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

[transfer none]

gtk_drag_dest_get_target_list ()

GtkTargetList *
gtk_drag_dest_get_target_list (GtkWidget *widget);

Возвращает список целей, которые этот виджет может принять при перетаскивании.

[метод]

Параметры

widget

виджет GtkWidget

Возвращает

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

[nullable][transfer none]

gtk_drag_dest_set_target_list ()

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

Устанавливает типы целей, которые этот виджет может принять при перетаскивании. Виджет должен быть сначала задан как пункт назначения перетаскивания с помощью gtk_drag_dest_set().

[метод]

Параметры

widget

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

target_list

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

[allow-none]

gtk_drag_dest_add_text_targets ()

void
gtk_drag_dest_add_text_targets (GtkWidget *widget);

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

[метод]

Параметры

widget

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

С: 2.6

gtk_drag_dest_add_image_targets ()

void
gtk_drag_dest_add_image_targets (GtkWidget *widget);

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

[метод]

Параметры

widget

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

С: 2.6

gtk_drag_dest_add_uri_targets ()

void
gtk_drag_dest_add_uri_targets (GtkWidget *widget);

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

[метод]

Параметры

widget

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

С: 2.6

gtk_drag_dest_set_track_motion ()

void
gtk_drag_dest_set_track_motion (GtkWidget *widget,
                                gboolean track_motion);

Сообщает виджету об отправке событий “drag-motion” и “drag-leave” независимо от целей и флага GTK_DEST_DEFAULT_MOTION.

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

[метод]

Параметры

widget

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

track_motion

следует ли принимать все цели

С: 2.10

gtk_drag_dest_get_track_motion ()

gboolean
gtk_drag_dest_get_track_motion (GtkWidget *widget);

Возвращает, настроен ли виджет на всегда отправлять сигналы “drag-motion”.

[метод]

Параметры

widget

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

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

TRUE, если виджет всегда отправляет события “drag-motion”

С: 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_);

Получает данные, связанные с перетаскиванием. Когда данные получены или получение завершается ошибкой, GTK+ отправит сигнал “drag-data-received”. Ошибка получения показана полем length параметра сигнала selection_data, которое является отрицательным. Однако, когда gtk_drag_get_data() вызывается неявно, потому что был установлен GTK_DEST_DEFAULT_DROP, виджет не будет получать уведомлений об ошибочных сбросах.

[метод]

Параметры

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

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

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

если перетаскивание происходит в рамках одного приложения, указатель на виджет-источник. В противном случае, NULL.

[nullable][transfer none]

gtk_drag_highlight ()

void
gtk_drag_highlight (GtkWidget *widget);

Подсвечивает виджет как целевой объект перетаскивания, на который в данный момент наведён курсор. Чтобы снять подсветку, вызовите gtk_drag_unhighlight(). GTK+ автоматически вызывает эту функцию, если установлено GTK_DEST_DEFAULT_HIGHLIGHT.

[метод]

Параметры

widget

виджет, который нужно подсветить

gtk_drag_unhighlight ()

void
gtk_drag_unhighlight (GtkWidget *widget);

Удаляет подсветку, установленную функцией gtk_drag_highlight(), с виджета.

[метод]

Параметры

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() вместо этого.

Эта функция эквивалентна gtk_drag_begin_with_coordinates() с параметрами -1, -1 в качестве координат.

[метод]

Параметры

widget

виджет-источник

targets

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

actions

Маска разрешённых действий перетаскивания для этого перетаскивания

button

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

event

Событие, которое вызвало начало перетаскивания, или NULL, если таковое получить невозможно.

[nullable]

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

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

[transfer none]

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);

Инициализирует перетаскивание на стороне источника. Эта функция нужна только когда приложение инициирует перетаскивание самостоятельно, она не требуется при использовании gtk_drag_source_set().

Параметр event используется для получения временной метки, которая будет использоваться внутри для захвата курсора. Если event равен NULL, то будет использоваться GDK_CURRENT_TIME. Однако, во всех случаях рекомендуется передавать реальное событие, так как это позволяет получить информацию о перетаскивании.

Как правило, есть три случая, когда вам нужно инициировать перетаскивание вручную, вызвав эту функцию:

  1. Во время обработчика сигнала “button-press-event”, если вы хотите начать перетаскивание сразу после нажатия пользователем кнопки мыши. Передайте event, который у вас есть в обработчике “button-press-event”.

  2. Во время обработчика сигнала “motion-notify-event”, если вы хотите начать перетаскивание, когда курсор мыши перемещается на определённое расстояние после нажатия кнопки. Передайте event, который у вас есть в обработчике “motion-notify-event”.

  3. Во время обработчика таймера, если вы хотите начать перетаскивание после удержания кнопки мыши в течение некоторого времени. Попытайтесь сохранить последнее событие, полученное от мыши, используя gdk_event_copy(), и передайте его в эту функцию (не забудьте освободить событие с помощью gdk_event_free(), когда вы закончите). Если вы не можете передать реальное событие, передайте NULL вместо него.

[метод]

Параметры

widget

виджет-источник

targets

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

actions

Маска разрешённых действий перетаскивания для этого перетаскивания

button

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

event

Событие, которое вызвало начало перетаскивания, или NULL, если таковое получить невозможно.

[nullable]

x

Начальная координата x для начала перетаскивания в пространстве координат widget. Если передано -1, координаты берутся из event или текущего положения курсора.

y

Начальная координата y для начала перетаскивания в пространстве координат widget. Если передано -1, координаты берутся из event или текущего положения курсора.

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

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

[transfer none]

С: 3.10

gtk_drag_cancel ()

void
gtk_drag_cancel (GdkDragContext *context);

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

Чтобы иметь возможность отменить операцию перетаскивания таким образом, вам необходимо сохранить указатель на контекст перетаскивания, либо из явного вызова gtk_drag_begin_with_coordinates(), либо подключившись к сигналу “drag-begin”.

Если context не ссылается на текущую операцию перетаскивания, эта функция ничего не делает.

Если перетаскивание отменено таким образом, аргумент result сигнала “drag-failed” устанавливается в GTK_DRAG_RESULT_ERROR .

[метод]

Параметры

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

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);

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

[метод]

Параметры

widget

элемент GtkWidget

start_x

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

start_y

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

current_x

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

current_y

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

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

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

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

элемент 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

элемент GtkWidget

pixbuf

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

элемент GtkWidget

stock_id

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

gtk_drag_source_set_icon_name ()

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

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

[метод]

Параметры

widget

элемент 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

элемент GtkWidget

icon

Структура GIcon

С: 3.2

gtk_drag_source_unset ()

void
gtk_drag_source_unset (GtkWidget *widget);

Отменяет действия, выполненные с помощью gtk_drag_source_set().

[метод]

Параметры

widget

элемент GtkWidget

gtk_drag_source_set_target_list ()

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

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

[метод]

Параметры

widget

элемент 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.22/gtk3-Drag-and-Drop.html

Spec-Zone.ru

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