После четырех лет разработки в конце концов анонсирован выпуск новой ветки GTK 4.0, который разрабатывается как часть нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и совместимый API на несколько лет, который можно использовать, не опасаясь переделывать приложения каждые шесть месяцев из-за изменений API в следующем GTK. ветка.
Филиал ГТК 4 был объявлен стабильным и будет использоваться в следующем выпуске GNOME 4.0. В то же время было объявлено, что поддержка ветки GTK 2 была прекращена, через несколько дней, на которые планируется выпустить последний выпуск, в то время как поддержка ветки GTK 3 будет продолжена в обозримом будущем.
Основные новые возможности GTK 4.0
Из изменений, которые выделяются в этой новой ветке, мы можем обнаружить, что был реализован ограниченный метод проектирования, в котором расположение и размер дочерних элементов определяются в зависимости от расстояния до краев и размера других элементов.
Кроме того добавлен модуль рендеринга на основе графического API Vulkan, который реализует шейдеры для многих ресурсоемких элементов CSS, используемых в виджетах GTK и GSK интегрирован (Набор сцен GTK) с возможностью рендеринга графики сцены через OpenGL и Vulkan.
Изменена организация представительства: вместо отправки в буфер, теперь используется модель, основанная на узлах рендеринга, в котором вывод организован в виде дерева операций высокого уровня, эффективно обрабатывается графическим процессором с использованием OpenGL и Vulkan.
Мы также видим, что в GTK 4.0 предлагается модернизированная модель доставки событий, что позволяет обходить подокно при маршрутизации входных событий. Необходимость реализации новой модели связана с более активным использованием эффектов анимации, которые необходимо визуализировать без изменения компоновки видимых элементов и, следовательно, без подокна.
GDK API переформулирован для использования преимуществ протокола Wayland и связанные концепции. Функции, связанные с X11 и Wayland, были перемещены в отдельные серверные части, и была проведена большая очистка API, включая удаление классов GtkMenu, GtkMenuBar и GtkToolbar, вместо которых предлагаются параметры GMenu и popover.
В то время как для разработки виджетов представлен новый объект GtkLayoutManager с реализацией системы управления для расположения элементов на основе размера видимой области, и что GtkLayoutManager заменил дочерние свойства в контейнерах GTK, таких как GtkBox и GtkGrid.
Из других изменений, которые выделяются:
- Новый класс GtkNative был добавлен для виджетов, которые имеют собственную поверхность отображения и могут работать отдельно на первом уровне, без привязки к основным виджетам.
- Были добавлены новые виджеты, включая GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, а также виджет для отображения Emoji.
- Был добавлен новый слой абстракции GdkPaintable, который отображает объекты, которые можно рисовать где угодно и любого размера, без необходимости сортировать слои дизайна.
- Бэкэнд Broadway переписан, чтобы можно было отображать вывод библиотеки GTK в окне веб-браузера.
- API, связанный с операциями перетаскивания, был переработан, включая предложенные отдельные объекты GdkDrag и GdkDrop.
- Предыдущая реализация Accessibility API для людей с ограниченными возможностями была удалена, и была предложена новая версия, основанная на спецификации ARIA и виджете GtkAccessible.
- Добавлена поддержка редактируемых этикеток.
- Виджет GtkTreeView реализует возможность редактирования ячеек.
- Добавлена поддержка инкрементной прокрутки и фильтрации в GtkFilterListModel и GtkSortListModel.
- Добавлен новый бэкэнд GDK для macOS.
GtkTextView и другие виджеты ввода имеют встроенный стек отмены. - Для Windows предлагается новый бэкэнд рендеринга GDK на основе ANGLE, промежуточный уровень для перевода вызовов из OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan.