Публикувана 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 методи за рендериране (вместо изход в буфер, сега се използва модел, основан на рендериращи възли (render nodes), при който изходът е организиран под формата на дърво от високо ниво операции, ефективно обработвани от 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