Излизането на GTK 3.99.0 отбеляза готовността на функционалността, планирана за GTK 4

Публикувано финален експериментален се издание на фреймворка GTK 3.99.0, в което са реализирани всички възможности, планирани за GTK 4. Клонът GTK 4 се развива в рамките на нов процес на разработка, който се опитва да предостави на разработчиците на приложения стабилен и поддържан API, който може да се използва, без да се притесняват, че на всеки шест месеца ще трябва да преработват приложенията си поради промяна на API в следващия клон на GTK. Пускането на GTK 4 е планирано за края на годината.

От най значителните промените в GTK 4 може да се отбележи:

  • Метод за разположение на елементи на базата на ограничения (constraint layout), при който местоположението и размерът на дъщерните елементи се определят на базата на разстоянието до границите и размера на други елементи.
  • Модул за графично рендиране, основан на графичния API Vulkan, в който са реализирани шейдъри за много ресурсоемки CSS елементи, използвани в GTK контролите.
  • Интеграция GSK (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 за хора с увреждания е премахнато, вместо него е предложена нова версия, базирана на спецификацията ARIA и уиджета GtkAccessible.
  • Добавена е поддръжка на редактирани етикети (GtkEditableLabel).
  • Предложени са нови модели списъци за показване на отметки (GtkBookmarkList), редове (GtkStringList) и блокове за избор (GtkBitset).
  • В уиджета GtkTreeView е реализирана възможността за редактиране на клетки.
  • В GtkGridView и GtkListView е подобрена реализацията на скролинг, добавена е поддръжка за автоматично скролиране и саморазкритие.
  • В GtkWidget значително е ускорена обработката на различни действия.
  • В GtkFilterListModel и GtkSortListModel е добавена поддръжка за инкрементално скролиране и филтриране.
  • В Inspector е добавена поддръжка за инспектиране на модели списъци и възможността за директна навигация между обекти.
  • В GDK е осигурено запазване на историята на скролинга, извършено е почистване на API GdkDevice, спряно е разделянето на устройства на master и slave.
  • Добавен е нов GDK бекенд за macOS.
  • За Windows е предложен нов GDK бекенд за рендериране, базиран на ANGLE, прослойки за превод на извикванията на OpenGL ES в OpenGL, Direct3D 9/11, Desktop GL и Vulkan.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster