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 бекенд, предназначен да рендира GTK библиотека в прозорец на уеб браузър. Старата имплементация на Broadway не се вписваше в методите за изобразяване, предложени в GTK 4 (вместо изход към буфер, сега използва модел, базиран на възли за изобразяване, където изходът е съставен под формата на дърво от операции на високо ниво, ефективно обработвани от GPU с помощта на OpenGL и Vulkan).
    Новата опция Broadway преобразува рендиращи възли в DOM възли със CSS стилове за рендиране на интерфейса в браузъра. Всяко ново състояние на екрана се обработва като промяна в DOM дървото спрямо предишното състояние, което намалява размера на данните, предавани към отдалечения клиент. 3D трансформациите и графичните ефекти се изпълняват чрез свойството CSS transform;

  • GDK продължава да внедрява API, проектирани с оглед на протокола Wayland, и да почиства базираните на X11 API или да ги премества в отделен бекенд на X11. Има напредък в работата за отдалечаване от използването на дъщерни повърхности и глобални координати. Поддръжката за GDK_SURFACE_SUBSURFACE е премахната от GDK;
  • Рефакторингът на кода, свързан с извършването на операции Drag-and-Drop, продължи, включително предложените отделни обекти GdkDrag и GdkDrop;
  • Обработката на събития е опростена и сега се използва само за въвеждане. Останалите събития се заменят с отделни сигнали, например вместо изходни събития се предлага сигналът „GdkSurface::render“, вместо конфигурационни събития - „GdkSurface::size-changed“, вместо събития за картографиране - „GdkSurface: :mapped”, вместо gdk_event_handler_set() - „GdkSurface::event”;
  • Бекендът на GDK за Wayland добави поддръжка за портален интерфейс за достъп до настройките на 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 добави възможност за локално задаване на свойства на обект (вградено), вместо да използва връзки по идентификатор;
  • Добавена е команда към gtk4-builder-tool за конвертиране на UI файлове от GTK 3 в GTK 4;
  • Поддръжката за ключови теми, таблични менюта и комбинирани полета е преустановена. Притурката GtkInvisible е премахната.

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

Добавяне на нов коментар