После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя – GTK 4.10.0. GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.
Среди наиболее заметных улучшений в GTK 4.10:
- В виджете GtkFileChooserWidget с реализацией диалога, открываемого для выбора файлов в приложениях, реализован режим представления содержимого каталогов в форме сети значков. По умолчанию продолжает использоваться классическое представление в виде списка файлов, а для перехода в режим значков в правой части панели появилась отдельная кнопка.
значков: - Добавлены новые классы GtkColorDialog, GtkFontDialog, GtkFileDialog и GtkAlertDialog с реализацией диалогов для выбора цветов, шрифтов и файлов, вывода предупреждений. Новые варианты отличаются переходом на более целостный и сбалансированный API, работающий в асинхронном режиме (GIO async).
- Добавлен новый бэкенд CPDB (Common Printing Dialog Backend), предоставляющий типовые обработчики для использования в диалогах вывода на печать. Поддержка ранее используемого бэкенда вывода на печать lpr прекращена.
- В библиотеке GDK, предоставляющей прослойку между GTK и графической подсистемой, предложена структура GdkTextureDownloader, которая задействована для загрузки текстур в классе GdkTexture и может применяться для преобразования различных форматов. Улучшено масштабирование текстур с использованием OpenGL.
- В библиотеке GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, реализована поддержка узлов с масками и настраиваемой фильтрации масштабируемых текстур.
- Реализована поддержка новых версий расширений протоколов Wayland. Налажен вывод стартовых уведомлений при использовании протокола “xdg-activation“. Решены проблемы с размером курсора на экранах с высокой плотностью пикселей.
- Класс GtkMountOperation адаптирован для работы в окружениях без X11.
- В бэкенде Broadway, позволяющем отрисовывать вывод библиотеки GTK в окне web-браузера, добавлена поддержка модальных окон.
- В классе GtkFileLauncher предложен новый асинхронный API для замены gtk_show_uri.
- В диалогах GtkColorDialog, GtkFontDialog, GtkFileDialog, GtkAlertDialog по возможности и наличии задействованы порталы Freedesktop (xdg-desktop-portal), применяемые для организации доступа к ресурсам пользовательского окружения из изолированных приложений.
- В утилите gtk-builder-tool улучшена обработка шаблонов.
- В виджете GtkSearchEntry добавлена поддержка текста-заполнения, показываемого, когда поле не заполнено и отсутствует фокус ввода.
- Добавлен класс GtkUriLauncher, который пришёл на смену функции gtk_show_uri, применяемой для определения приложения, запускаемого для отображения заданного URI, или вывода ошибки при отсутствии обработчика.
- В классе GtkStringSorter добавлена поддержка разных методов “collation”, позволяющих выполнять сопоставление и сортировку с учётом смысла символов (например, при наличии знака ударения).
- Переведена в разряд устаревших большая порция API и виджетов, которые решено не поддерживать в будущей ветке GTK5 и которые заменены на аналоги, работающие в асинхронном режиме:
- GtkDialog (следует использовать GtkWindow)
- GtkTreeView
- GtkIconView (следует использовать GtkListView и GtkColumnView)
- GtkComboBox (следует использовать GtkDropDown).
- GtkAppChooser (следует использовать GtkDropDown).
- GtkMessageDialog (следует использовать GtkAlertDialog).
- GtkColorChooser (следует использовать GtkColorDialog и GtkColorDialogButton).
- GtkFontChooser (следует использовать GtkFontDialog и GtkFontDialogButton).
- GtkFileChooser (следует использовать GtkFileDialog).
- GtkInfoBar
- GtkEntryCompletion
- GtkStyleContext
- GtkVolumeButton
- GtkStatusbar
- GtkAssistant
- GtkLockButton
- gtk_widget_show/hide
- gtk_show_uri
- gtk_render_ и gtk_snapshot_render_
- gtk_gesture_set_sequence_state
- Переведён в разряд публичных интерфейс GtkAccessible, что позволяет подключать сторонние обработчики элементов интерфейса для людей с ограниченными возможностями. Добавлен интерфейс GtkAccessibleRange.
- На платформе macOS обеспечена поддержка перетаскивания элементов мышью (DND, Drag-and-Drop).
- Улучшена интеграция с системными настройками на платформе Windows.
- Унифицирован формат отладочного вывода.
- До 1 ГБ поднят лимит памяти для загрузчика изображений в формате JPEG.
Release.
Ссылка here.