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

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

Среди наиболее заметных улучшений в GTK 4.8:

  • В виджете GtkTextView сокращено число ситуаций, приводящих к повторным перерисовкам, и реализована функция GetCharacterExtents для определения области с глифом, определяющим символ в тексте (функция востребована средствах для людей с ограниченными возможностями).
  • В классе GtkViewport, применяемом для организации прокрутки в виджетах, включён по умолчанию режим “scroll-to-focus”, при котором содержимое автоматически прокручивается для поддержания на виду элемента, на который установлен фокус ввода.
  • В виджете GtkSearchEntry, выводящем область для ввода поискового запроса, предоставлена возможность настройки задержки между последним нажатием клавиши и отправкой сигнала об изменении содержимого (GtkSearchEntry::search-changed
  • В виджет GtkCheckButton добавлена возможность назначения своего дочернего виджета с кнопкой.
  • В виджет GtkPicture добавлено свойство “content-fit” для адаптации содержимого под размер заданной области.
  • В виджете GtkColumnView проведена оптимизация производительности прокрутки.
  • В виджете GtkTreeStore разрешено извлечение древовидных данных из файлов в формате ui.
  • В класс GtkInscription добавлен новый виджет для отображения списков. Добавлено демонстрационное приложение с примером использования GtkInscription.
  • В виджете GtkTreePopover добавлена поддержка прокрутки.
  • В виджете GtkLabel добавлена поддержка вкладок и предоставлена возможность активации меток через нажатие на привязанные к метке символы на клавиатуре.
  • В виджете GtkListView реализована поддержка свойств “::n-items” и
    “::item-type”.
  • Изменён стиль интерфейса выбора цветов (GtkColorChooser).
  • В интерфейсе выбора шрифтов (GtkFontChooser) улучшена поддержка возможностей формата OpenType.
  • В CSS-движке оптимизирована перегруппировка элементов, связанных с одним родителем, и разрешено использование нецелых значений при определении размера интервала между букв.
  • Данные Emoji обновлены до набора CLDR 40 (Unicode 14). Добавлена поддержка новых локалей.
  • В системе ввода предоставлена поддержка обработчиков параметров размерности (GDK_SCROLL_UNIT_WHEEL, GDK_SCROLL_UNIT_SURFACE) прокрутки.
  • В теме оформления обновлены пиктограммы и повышена разборчивость выделяемых текстовых меток.
  • В библиотеке GDK, предоставляющей прослойку между GTK и графической подсистемой, оптимизировано преобразование пиксельных форматов. На системах с драйверами NVIDIA задействовано EGL-расширение EGL_KHR_swap_buffers_with_damage.
  • В библиотеке GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, реализована поддержка обработки больших видимых областей (viewport-ов). Предложены библиотеки для отрисовки глифов с использованием текстур.
  • Для Wayland реализована поддержка протокола “xdg-activation“, который позволяет передать фокус между разными поверхностями первого уровня (например, при помощи xdg-activation одно приложение может переключить фокус на другое).
  • Для платформы macOS добавлена поддержка полноэкранного режима и воспроизведения видео с использованием OpenGL. Улучшено определение мониторов, работа в многомониторных конфигурациях, размещение окон и выбор размера для диалога работы с файлами. Для отрисовки задействованы CALayer и IOSurface. Обеспечен запуск приложений в фоновом режиме.
  • На платформе Windows улучшено размещение окон на экранах HiDPI, улучшена поддержка тачпадов, добавлен интерфейс определения цвета и добавлена поддержка событий колеса мыши с высоким разрешением.
  • В утилиту gtk4-builder-tool добавлена команда screenshot для создания скриншота, которая задействована при генерации скриншотов для документации.
  • Обеспечена установки утилиты gtk4-node-editor.
  • Расширены возможности отладчика. Реализован показ дополнительных данных приложений и разрешён просмотр свойств PangoAttrList при инспектировании. Разрешено инспектирование инспекторов. Добавлена поддержка режима “GTK_DEBUG=invert-text-dir”. Вместо переменной окружения GTK_USE_PORTAL предложен режим “GDK_DEBUG=portals”. Повышена отзывчивость интерфейса инспектирования.
  • В бэкенд ffmpeg добавлена поддержка звука.
  • Ограничение памяти в загрузчике изображений JPEG увеличено до 300 МБ.
Release. Ссылка here.