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