GTK 3.96, eksperimentalno izdanje GTK 4, objavljeno

10 meseci posle prošlosti test izdanje predstavljen GTK 3.96, novo eksperimentalno izdanje nadolazećeg stabilnog izdanja GTK 4. GTK 4 grana se razvija kao dio novog razvojnog procesa koji nastoji programerima aplikacija pružiti stabilan i podržan API za nekoliko godina koji se može koristiti bez straha da morate ponovo pisati aplikaciju svakih šest mjeseci zbog promjene API-ja u sljedećoj GTK grani. Dok se GTK 4 u potpunosti ne stabilizira, preporučuje se da se aplikacije koje se nude korisnicima i dalje grade koristeći granu GTK 3.24.

Glavni promjena u GTK 3.96:

  • U API-ju GSK (GTK Scene Kit), koji omogućava renderovanje grafičkih scena putem OpenGL-a i Vulkana, radilo se na greškama, koje je postalo lakše identifikovati zahvaljujući novom alatu za otklanjanje grešaka gtk4-node-editor, koji vam omogućava da učitate i prikažete rendering čvor u serijalizovanom formatu (može se sačuvati u inspekcijskom režimu GTK inspektora), a takođe uporediti rezultate renderovanja kada se koriste različiti backendovi;

    GTK 3.96, eksperimentalno izdanje GTK 4, objavljeno

  • Mogućnosti 3D transformacije su dovedene na nivo koji vam omogućava da kreirate efekte animacije kao što je rotirajuća kocka;

    GTK 3.96, eksperimentalno izdanje GTK 4, objavljeno

  • Potpuno prepisano Broadway GDK backend dizajniran da prikaže izlaz GTK biblioteke u prozoru web pretraživača. Stara Broadway implementacija nije se uklapala u metode renderiranja predložene u GTK 4 (umjesto izlaza u bafer, sada koristi model baziran na čvorovima renderiranja, gdje je izlaz sastavljen u obliku stabla operacija visokog nivoa, efikasno obrađuje GPU koristeći OpenGL i Vulkan).
    Nova Broadway opcija konvertuje render čvorove u DOM čvorove sa CSS stilovima za renderovanje interfejsa u pretraživaču. Svako novo stanje ekrana se obrađuje kao promjena u DOM stablu u odnosu na prethodno stanje, što smanjuje veličinu podataka koji se prenose udaljenom klijentu. 3D transformacije i grafički efekti implementirani su preko svojstva CSS transformacije;

  • GDK nastavlja da implementira API-je dizajnirane imajući na umu Wayland protokol i čisti API-je zasnovane na X11 ili ih premješta u zaseban X11 backend. Postoji napredak u radu na udaljavanju od upotrebe podređenih površina i globalnih koordinata. Podrška za GDK_SURFACE_SUBSURFACE je uklonjena iz GDK;
  • Refaktoriranje koda povezanog sa izvođenjem Drag-and-Drop operacija je nastavljeno, uključujući predložene odvojene GdkDrag i GdkDrop objekte;
  • Rukovanje događajima je pojednostavljeno i sada se koristi samo za unos. Preostali događaji se zamjenjuju zasebnim signalima, na primjer, umjesto izlaznih događaja, predlaže se signal "GdkSurface::render", umjesto konfiguracijskih događaja - "GdkSurface::size-changed", umjesto mapiranja događaja - "GdkSurface: :mapped”, umjesto gdk_event_handler_set() - "GdkSurface::event";
  • GDK backend za Wayland je dodao podršku za interfejs portala za pristup postavkama GtkSettings. Za rad sa metodama unosa, predložena je podrška za proširenje protokola text-input-unstable-v3;
  • Za razvoj widgeta uveden je novi objekat GtkLayoutManager sa implementacijom sistema za kontrolu rasporeda elemenata u zavisnosti od rasporeda vidljive oblasti. GtkLayoutManager zamjenjuje podređena svojstva u GTK kontejnerima kao što su GtkBox i GtkGrid. Predloženo je nekoliko gotovih menadžera rasporeda: GtkBinLayout za jednostavne kontejnere sa jednim podređenim elementom, GtkBoxLayout za linearno poravnate podređene elemente, GtkGridLayout za poravnavanje podređenih elemenata sa mrežom, GtkFixedLayout za proizvoljno pozicioniranje podređenih elemenata, GtkCustom na bazi tradicionalnih elemenata zasnovanih na veličini rukovaoci;
  • Javno dostupni objekti za prikaz stranica podređenih elemenata dodani su u GtkAssistant, GtkStack i GtkNotebook widgete, na koje se prenose podređena svojstva ovih vidžeta koja nisu vezana za Layout. Pošto su sva postojeća podređena svojstva konvertovana u redovna svojstva, svojstva izgleda ili premještena u objekte stranice, podrška za podređena svojstva je u potpunosti uklonjena iz GtkContainer-a;
  • Osnovna GtkEntry funkcionalnost je premještena u novi GtkText widget, koji također uključuje poboljšani GtkEditable interfejs za uređivanje. Sve postojeće podklase za unos podataka su prepravljene kao GtkEditable implementacije zasnovane na novom GtkText widgetu;
  • Dodan novi widget GtkPasswordEntry za obrasce za unos lozinke;
  • GtkWidgets je dodao mogućnost transformacije podređenih elemenata koristeći metode linearne transformacije specificirane preko CSS-a ili argumenta gtk_widget_allocate u GskTransform. Navedena karakteristika je već primenjena u widgetu GtkFixed;
  • Dodani su modeli nove generacije liste: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel i GtkSingleSelection. U budućnosti planiramo da dodamo podršku za modele liste u GtkListView;
  • GtkBuilder je dodao mogućnost postavljanja svojstava objekta lokalno (inline), umjesto korištenja veza prema identifikatoru;
  • Dodata komanda gtk4-builder-alatu za pretvaranje UI fajlova iz GTK 3 u GTK 4;
  • Podrška za ključne teme, tabelarne menije i kombinovane okvire je ukinuta. GtkInvisible widget je uklonjen.

    izvor: opennet.ru

Dodajte komentar