Среди заметных улучшений в GTK 4.24:
- Добавлена возможность привязки (snapping) содержимого к границам физических пикселей устройства, что значительно улучшило качество отрисовки при использовании дробного масштабирования на экранах с высокой плотностью пикселей (HiDPI). Для включения выравнивания размещения логических пикселей по границам физических пикселей преложена функция gtk_snapshot_set_snap().

По умолчанию новый режим не включён из-за появлении дрожания при медленной анимации и прокрутке, обусловленного отрисовкой в привязке к целым пикселями. Из областей применения снапинга отмечается скрытие видимых швов между спрайтами в некоторых играх на экранах с дробным масштабированием, более чёткое отображение изображений из-за попадания пиксель-в-пиксель и задействование методов аппаратного ускорения графики, требующих строгого выравнивания контента по пикселям.
- Продолжено развитие встроенного движка отрисовки и разбора изображений в формате SVG, а также класса Gtk.Svg, позволяющего обойтись без внешних зависимостей при отрисовке векторных пиктограмм и ресурсов. В новой версии добавлен класс GtkSvgWidget, позволяющий отрисовывать изображения в формате SVG с интерактивными элементами, такими как ‹a› и ‹view›, непосредственно в приложении. Добавлена функция gtk_svg_set_stylesheet() для применения стилей к SVG-элементам.
Для оторисовки всех пиктограмм в GTK применён класс
GtkSvg. В виджете GtkSpinner задействованы анимированные SVG-изображения. Добавлены новые возможности, такие как фильтры feTurbulence, свойства текста dominant-baseline, baseline-shift, text-decoration, медиа-запросы в CSS и 3D-трансформации. - В GSK (GTK Scene Kit) добавлена поддержка отрисовки форматов изображений с 10-битным представлением цветовых каналов. Переработан механизм выделения памяти под кэш. Для исключения отрисовки за пределами видимой области задействованы маски отсечения (clip mask).
- В виджетах GtkSpinner, GtkStack и GtkRevealer обеспечен учёт системных настроек для сокращения анимированных эффектов.
- В бэкенде для работы в Wayland-окружениях реализована поддержка Wayland-протокола Text Input 3.2, стандартизирующего взаимодействие между композитным сервером и приложениями при передаче вводимого текста, обработке событий об изменении фокуса ввода и учёте специфики полей ввода (язык, выделение текста, тип контента).
- Реализована возможность сохранения и восстановления сеансов, используя Wayland-протокол xdg-session-management, который предоставляет возможности для восстановления состояния и позиции окон прерванного сеанса, например, после аварийного завершения композитного сервера или приложения. В финальном релизе GTK 4.24 данная функциональность отключена и запланирована для активации в GTK 4.26.
- В бэкенде для платформы Android реализована поддержка Android SDK 36 (Android 16). Для синхронизации кадров с вертикальной разверткой (vsync) задействован API Choreographer.
- Добавлены функции gdk_display_get_prefer_vulkan() и gdk_display_set_prefer_vulkan() для управления включением в графическом бэкенде отрисовки интерфейса через API Vulkan.
- Добавлена функция gtk_editable_set_input_interceptor() для перехвата ввода. Функция gtk_event_controller_key_forward() переведена в число устаревших.
- Для класса GtkShortcutTrigger предложены функции
gtk_alternative_trigger_newv,
gtk_shortcut_trigger_create_with_aliases и
gtk_shortcut_trigger_create_for_menu для обработки клавиатурных комбинаций с учётом продублированных клавиш (например, с цифрового блока клавиатуры). - В виджете GtkEntry реализовано открытие меню
при долгом касании на сенсорном экране. - Переработан механизм поиска по мере ввода (type-to-search), который переведён с модели опроса приложением («pull») на модель передачи событий («push»).
- Добавлен класс GtkEnumList для вывода выпадающих списков.
- Исправлены проблемы с выделением памяти в GtkList, GtkGrid и GtkColumnView.
- Добавлена поддержка CSS-свойства font-width для указания промежуточной ширины шрифта в процентах.
- Повышены требования к выпуску библиотеки Pango (необходим как минимум выпуск 1.58).
Источник: http://www.opennet.ru/opennews/art.shtml?num=66259
