ProHoster > Blog > ειδήσεις στο διαδίκτυο > Η κυκλοφορία του GTK 3.99.0 σηματοδότησε την ολοκλήρωση της λειτουργικότητας που είχε προγραμματιστεί για το GTK 4
Η κυκλοφορία του GTK 3.99.0 σηματοδότησε την ολοκλήρωση της λειτουργικότητας που είχε προγραμματιστεί για το GTK 4
Που δημοσιεύθηκε финальный экспериментальный выпуск фреймворка GTK 3.99.0, в котором реализованы все возможности, запланированные для GTK 4. Ветка GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK. Релиз GTK 4 планируют выпустить до конца года.
Метод раскладки элементов на основе ограничений (constraint layout), при котором расположение и размер дочерних элементов определяется, отталкиваясь от расстояния до границ и размера других элементов.
Модуль отрисовки на базе графического API Vulkan, в котором реализованы шейдеры для многих ресурсоёмких элементов CSS, применяемых в виджетах GTK.
ολοκλήρωση Η GSK (GTK Scene Kit) c возможностями отрисовки графических сцен через OpenGL и Vulkan.
Пересмотрена организация отрисовки — вместо вывода в буфер теперь применяется модель на основе узлов отрисовки (render nodes), при которой вывод компонуется в форме дерева высокоуровневых операций, эффективно обрабатываемых GPU при помощи OpenGL и Vulkan.
Модернизированная модель доставки событий, которая позволяет обойтись без subwindow при маршрутизации событий ввода. Необходимость реализации новой модели связана с более активным использованием анимационных эффектов, отрисовка которых должна производиться без смены раскладки видимых элементов и, соответственно, без subwindow.
Переработан API GDK с оглядкой на использование протокола Wayland и связанных с ним концепций. Завязанные на X11 и Wayland возможности перемещены в отдельные бэкенды.
Проведена большая чистка API, в том числе удалены классы GtkMenu, GtkMenuBar и GtkToolbar, вместо которых предложен GMenu и варианты на основе всплывающих меню (popover).
В GtkTextView и другие виджеты ввода встроен стек для отката изменений (undo).
Добавлен новый класс GtkNative для виджетов, имеющих собственную поверхность отображения и способных работать отдельно на первом уровне, без привязки к родительским виджетам.
Добавлены новые виджеты, включая GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, а также виджет для показа Emoji.
Для разработки виджетов представлен новый объект GtkLayoutManager с реализацией системы управления раскладкой элементов в зависимости от размера видимой области. GtkLayoutManager пришёл на смену дочерним свойствам в контейнерах GTK, таким как GtkBox и GtkGrid.
Упрощена обработка событий, которые теперь используются только для ввода. Остальные события заменены на отдельные сигналы, например, вместо событий вывода предложен сигнал «GdkSurface::render», вместо событий настройки — «GdkSurface::size-changed».
Добавлен новый уровень абстракции GdkPaintable, представляющий объекты, которые можно нарисовать где угодно с любым размером, без необходимости выполнения сортировки layout-слоёв.
Переписан бэкенд Broadway, позволяющий отрисовывать вывод библиотеки GTK в окне web-браузера.
Переработан API, связанный с выполнением операций Drag-and-Drop, в том числе предложены раздельные объекты GdkDrag и GdkDrop.
Улучшения по сравнению с прошлым тестовым выпуском:
Удалена старая реализация Аccessibility API для людей с ограниченными возможностями, вместо которой предложен новый вариант на базе спецификации ARIA и виджета GtkAccessible.
Добавлена поддержка редактируемых меток (GtkEditableLabel).
Предложены новые модели списков для отображения закладок (GtkBookmarkList), строк (GtkStringList) и блоков выбора (GtkBitset).
В виджете GtkTreeView реализована возможность редактирования ячеек.
В GtkGridView и GtkListView улучшена реализация прокрутки, добавлена поддержка автопрокрутки и автораскрытия.
В GtkWidget значительно ускорена обработка различных действий.
В GtkFilterListModel и GtkSortListModel добавлена поддержка инкрементальной прокрутки и фильтрации.
В Inspector добавлена поддержка инспектирования моделей списков и возможность прямой навигации между объектами.
В GDK обеспечено сохранение истории прокрутки, проведена чистка API GdkDevice, прекращено разделение устройств на master и slave.
Добавлен новый GDK-бэкенд для macOS.
Для Windows предложен новый GDK-бэкенд отрисовки на базе ΓΩΝΙΑ, στρώματα для трансляции вызовов OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan.