Обявен е GTK 3.96, експериментално издание на GTK 4

След 10 месеца от момента на предишния на тестовото издание представен GTK 3.96, новият експериментален релиз на предстоящата стабилна версия GTK 4. Клонът GTK 4 се развива в рамките на нов процес на разработка, който цели да предостави на разработчиците приложения стабилен и поддържан за няколко години API, който може да се използва без рискове, че на всеки шест месеца ще трябва да преработват приложението поради промени в API в поредния клон на GTK. До пълната стабилизация на GTK 4, приложенията, предлагани на потребителите, се препоръчва да се събират с използване на клона GTK 3.24.

Основни промени в GTK 3.96:

  • В API GSK (GTK Scene Kit), осигуряващ рендиране на графични сцени чрез OpenGL и Vulkan, проведена е работа по отстраняване на грешки, които сега могат да бъдат открити по-лесно благодарение на новия отладъчен инструмент gtk4-node-editor, позволяващ зареждане и визуализиране на възел за рендиране в сериализиран формат (може да бъде запазен в режим на инспекция с GTK инспектора), както и да сравнявате резултата от рендирането при прилагане на различни бекенди;

    Обявен е GTK 3.96, експериментално издание на GTK 4
  • Възможностите за 3D трансформации са доведени до ниво, позволяващо създаване на анимационни ефекти като въртящ се куб;

    Обявен е GTK 3.96, експериментално издание на GTK 4
  • Напълно преработен GDK бекенда Broadway, предназначен за рендиране на изхода от библиотеката GTK в прозореца на уеб браузър. Старата реализация на Broadway не отговаряше на предложените в GTK 4 методи за рендиране (вместо извеждане в буфер сега се прилага модел, основан на възли за рендиране, при който изходът се композира под формата на дърво с високо ниво операции, ефективно обработвани от GPU с OpenGL и Vulkan).
    Новата версия на Broadway преобразува възлите за рендиране в DOM възли със CSS стилове за извеждане на интерфейса в браузъра. С всяко ново състояние на екрана се обработва промяна на DOM дървото спрямо предходното състояние, което позволява да се намали размерът на данните, предавани на отдалечения клиент. 3D трансформациите и графичните ефекти се реализират чрез CSS свойството transform;
  • В GDK продължава интеграцията на API, разработени с оглед на използването на протокола Wayland, и прочистването на API, свързани с X11, или тяхното преместване в отделен бекенд X11. Отбелязва се напредък в работата по напускане на прилагането на дъщерни повърхности и глобални координати. От GDK е премахната поддръжката на GDK_SURFACE_SUBSURFACE;
  • Продължава рефакторинг на кода, свързан с извършването на операции Drag-and-Drop, включително са предложени отделни обекти GdkDrag и GdkDrop;
  • Упрощена е обработката на събитията, които сега се използват само за въвеждане. Останалите събития са заменени с отделни сигнали, например, вместо събития за извеждане е предложен сигнал „GdkSurface::render“, вместо събития за настройка — „GdkSurface::size-changed“, вместо събития за съвпадение — „GdkSurface::mapped“, вместо gdk_event_handler_set() — „GdkSurface::event“;
  • В GDK-бекенда за Wayland е добавена поддръжка на portal-интерфейса за достъп до настройките на GtkSettings. За работа с методите за въвеждане е предложена поддръжка на разширението на протокола text-input-unstable-v3;
  • За разработка на виджети е представен нов обект GtkLayoutManager с реализация на система за управление на разположението на елементите в зависимост от размера на видимата област. GtkLayoutManager замества дъщерните свойства в контейнерите GTK, като GtkBox и GtkGrid. Предложени са няколко готови мениджъра за разположение: GtkBinLayout за прости контейнери с един дъщерен елемент, GtkBoxLayout за линейно подредени дъщерни елементи, GtkGridLayout за подравняване на дъщерни елементи по решетка, GtkFixedLayout за произволно позициониране на дъщерни елементи, GtkCustomLayout за транслация на традиционни елементи на базата на обработчици size_allocate;
  • В виджетите GtkAssistant, GtkStack и GtkNotebook са добавени публично достъпни обекти за странично извеждане на дъщерни елементи, на които са трансферирани несвързани с разположението (Layout) дъщерни свойства на данните виджети. Тъй като всички съществуващи дъщерни свойства са преобразувани в обикновени свойства, свойствата на разположението или са преместени в странични обекти, от GtkContainer е напълно премахната поддръжката на дъщерни свойства;
  • Основната функционалност на GtkEntry е пренесена в новия виджет GtkText, който също включва разширен интерфейс за редактиране GtkEditable. Всички съществуващи подкласове за въвеждане на данни са преустроени във формата на реализации на GtkEditable на базата на новия виджет GtkText;
  • Добавен е новият виджет GtkPasswordEntry за формуляри за въвеждане на пароли;
  • В GtkWidgets е добавена възможността за преобразуване на дъщерни елементи чрез методи за линейна трансформация, задавани чрез CSS или аргумент gtk_widget_allocate в GskTransform. Показаната възможност вече е приложена в виджета GtkFixed;
  • Добавени нови модели за съставяне на списъци: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel и GtkSingleSelection. В бъдеще се планира добавяне на поддръжка на модели списъци в GtkListView;
  • В GtkBuilder е добавена възможността за задаване на свойства на обектите на място (inline), вместо да се използват идентификатори;
  • В gtk4-builder-tool е добавена команда за преобразуване на UI файлове от GTK 3 в GTK 4;
  • Поддръжката на ключови теми за оформление (key theme), табулаторни менюта (tabular menu) и комбинирани блокове (combo box) е прекратена. Виджетът GtkInvisible е премахнат.

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

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