финален експериментален се издание на фреймворка , в което са реализирани всички възможности, планирани за GTK 4. Клонът GTK 4 се развива в рамките на нов процес на разработка, който се опитва да предостави на разработчиците на приложения стабилен и поддържан API, който може да се използва, без да се притесняват, че на всеки шест месеца ще трябва да преработват приложенията си поради промяна на API в следващия клон на GTK. Пускането на GTK 4 е планирано за края на годината.
От най в може да се отбележи:
- Метод за разположение на елементи на базата на ограничения (), при който местоположението и размерът на дъщерните елементи се определят на базата на разстоянието до границите и размера на други елементи.
- Модул за графично рендиране, основан на графичния API Vulkan, в който са реализирани шейдъри за много ресурсоемки CSS елементи, използвани в GTK контролите.
- Интеграция (GTK Scene Kit) с възможности за рендиране на графични сцени чрез OpenGL и Vulkan.
- Организацията на рендирането е преразгледана — вместо изход в буфер сега се прилага модел, основан на възли за рендиране (render nodes), при който изходът се композира под формата на дърво от високоефективни операции, обработвани ефективно от GPU чрез OpenGL и Vulkan.
- за гъвкава обработка на промяната на входния фокус.
- Модернизиран модел на доставка на събития, който позволява да се избегне субпрозорец при маршрутизацията на входни събития. Необходимостта от внедряването на нов модел е свързана с по-активното използване на анимационни ефекти, чиято рендериране трябва да се извършва без смяна на разположението на видимите елементи и, съответно, без субпрозорец.
- 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, представляващ обекти, които могат да бъдат рисувани навсякъде с произволен размер, без необходимост от подреждане на слоеве.
- Преработен е бекендът Broadway, позволяващ рендериране на изхода на библиотеката GTK в браузър.
- Преработен е API-то, свързано с извършването на операции Drag-and-Drop, включително са предложени отделни обекти GdkDrag и GdkDrop.
Подобрения в сравнение с предишната тестова версия:
- Старото имплементиране на Accessibility API за хора с увреждания е премахнато, вместо него е предложена нова версия, базирана на спецификацията и уиджета 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.
Източник: opennet.ru
