GtkEventControllerScroll
GtkEventControllerScroll — Контроллер событий для прокрутки
Функции
Свойства
| GtkEventControllerScrollFlags | flags | Чтение / Запись |
Сигналы
| void | decelerate | Выполнять первым |
| gboolean | scroll | Выполнять последним |
| void | scroll-begin | Выполнять первым |
| void | scroll-end | Выполнять первым |
Типы и значения
| GtkEventControllerScroll | |
| перечисление | GtkEventControllerScrollFlags |
Иерархия объектов
GObject
╰── GtkEventController
╰── GtkEventControllerScroll
Включаемые файлы
#include <gtk/gtk.h>
Описание
GtkEventControllerScroll — это контроллер событий, предназначенный для обработки событий прокрутки с помощью мыши и сенсорных панелей. Он способен обрабатывать как дискретные, так и непрерывные события прокрутки, абстрагируя их оба в сигнале “scroll” (дельта в дискретном случае — это кратные 1).
В случае непрерывных событий прокрутки GtkEventControllerScroll включает все события “scroll” между двумя сигналами “scroll-begin” и “scroll-end”.
Поведение контроллера событий можно изменить с помощью флагов, заданных при создании, или изменить позже с помощью gtk_event_controller_scroll_set_flags() (например, потому что условия прокрутки виджета изменились).
Контроллер можно настроить на отправку движения для событий прокрутки по вертикали и/или горизонтали с помощью GTK_EVENT_CONTROLLER_SCROLL_VERTICAL, GTK_EVENT_CONTROLLER_SCROLL_HORIZONTAL и GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES. Если какая-либо ось отключена, соответствующая дельта “scroll” будет равна 0. События вертикальной прокрутки будут преобразованы в горизонтальное движение для устройств, не способных к горизонтальной прокрутке.
Контроллер событий также можно заставить отправлять дискретные события на всех устройствах с помощью GTK_EVENT_CONTROLLER_SCROLL_DISCRETE. Это можно использовать для реализации дискретных действий, запускаемых событиями прокрутки (например, переключение между элементами раскрывающегося списка).
Флаг GTK_EVENT_CONTROLLER_SCROLL_KINETIC включает отправку сигнала “decelerate”, отправляемого в конце прокрутки с двумя аргументами скорости X/Y, соответствующими принятому движению.
Функции
gtk_event_controller_scroll_new ()
GtkEventController *
gtk_event_controller_scroll_new (GtkEventControllerScrollFlags flags); Создаёт новый контроллер событий, который будет обрабатывать события прокрутки.
Параметры
flags | флаги поведения |
Возвращает
новый GtkEventControllerScroll
gtk_event_controller_scroll_set_flags ()
void gtk_event_controller_scroll_set_flags (GtkEventControllerScroll *scroll,GtkEventControllerScrollFlags flags);
Устанавливает флаги, определяющие поведение контроллера прокрутки.
Параметры
scroll | ||
flags | флаги поведения |
gtk_event_controller_scroll_get_flags ()
GtkEventControllerScrollFlags
gtk_event_controller_scroll_get_flags (GtkEventControllerScroll *scroll); Получает флаги, определяющие поведение контроллера прокрутки.
Параметры
scroll |
Возвращает
флаги контроллера.
Типы и значения
GtkEventControllerScroll
typedef struct _GtkEventControllerScroll GtkEventControllerScroll;
перечисление GtkEventControllerScrollFlags
Описывает поведение GtkEventControllerScroll.
Элементы
GTK_EVENT_CONTROLLER_SCROLL_NONE | Не отправлять события прокрутки. | |
GTK_EVENT_CONTROLLER_SCROLL_VERTICAL | Отправлять события прокрутки с вертикальными дельтами. | |
GTK_EVENT_CONTROLLER_SCROLL_HORIZONTAL | Отправлять события прокрутки с горизонтальными дельтами. | |
GTK_EVENT_CONTROLLER_SCROLL_DISCRETE | Отправлять только дельты, кратные 1. | |
GTK_EVENT_CONTROLLER_SCROLL_KINETIC | Отправлять сигнал “decelerate” после завершения непрерывной прокрутки. | |
GTK_EVENT_CONTROLLER_SCROLL_BOTH_AXES | Отправлять события прокрутки по обеим осям. |
Подробное описание свойств
Свойство “flags”
“flags” GtkEventControllerScrollFlags
Флаги, влияющие на поведение контроллера событий
Владелец: GtkEventControllerScroll
Флаги: Чтение / Запись
Подробное описание сигналов
Сигнал “decelerate”
void user_function (GtkEventControllerScroll *controller, double vel_x, double vel_y, gpointer user_data)
Вызвается после завершения прокрутки, если установлен флаг GTK_EVENT_CONTROLLER_SCROLL_KINETIC. vel_x и vel_y отражают начальную скорость, заданную событиями прокрутки. vel_x и vel_y выражены в пикселях/мс.
Параметры
controller | Объект, получивший сигнал | |
vel_x | Скорость по оси X | |
vel_y | Скорость по оси Y | |
user_data | Данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “scroll”
gboolean user_function (GtkEventControllerScroll *controller, double dx, double dy, gpointer user_data)
Сигнализирует о необходимости прокрутки на величину, указанную в dx и dy .
Параметры
controller | Объект, получивший сигнал | |
dx | Смещение по оси X | |
dy | Смещение по оси Y | |
user_data | Данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE , если событие прокрутки обработано, FALSE в противном случае.
Флаги: Выполняется последним
Сигнал “scroll-begin”
void user_function (GtkEventControllerScroll *controller, gpointer user_data)
Сигнализирует о начале новой операции прокрутки. Будет вызываться только на устройствах, способных к этому.
Параметры
controller | Объект, получивший сигнал | |
user_data | Данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполняется первым
Сигнал “scroll-end”
void user_function (GtkEventControllerScroll *controller, gpointer user_data)
Сигнализирует о завершении операции прокрутки. Будет вызываться только на устройствах, способных к этому.
Параметры
controller | Объект, получивший сигнал | |
user_data | Данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполняется первым
См. также
© 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/GtkEventControllerScroll.html