Доступен графический тулкит GTK 4.24

После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя — GTK 4.24. GTK 4 развивается в рамках процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.

Среди заметных улучшений в 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