Pas 10 muajsh që nga versioni testues , versioni i ri eksperimental i lëshimit të ardhshëm stabil të GTK 4. Dega GTK 4 po zhvillohet në kuadër të një procesi të ri zhvillimi, i cili përpiqet të ofrojë zhvilluesve të aplikacioneve një API të stabilizuar dhe të mbështetur për disa vjet, i cili mund të përdoret pa pasur frikë se çdo gjashtë muaj do të duhet të rishkruhet aplikacioni për shkak të ndryshimit të API në një degë tjetër të GTK. Deri në stabilizimin e plotë të GTK 4, aplikacionet e ofruara për përdoruesit rekomandohet të vazhdojnë të mbledhin me degën .
Main në GTK 3.96:
- Në API (GTK Scene Kit), që siguron vizatimin e skenave grafike përmes OpenGL dhe Vulkan, është punuar në të metat, duke e bërë më të lehtë identifikimin e tyre falë instrumentit të ri debug gtk4-node-editor, i cili lejon ngarkimin dhe shfaqjen e nodit të vizatimit në formatin e serializuar (mund të ruhet në modin e inspektimit GTK inspector), si dhe të krahasohet rezultati i vizatimit me përdorimin e backend-eve të ndryshme;
- Aftësitë për transformime 3D janë arritur në një nivel që mundëson krijimin e efekteve të tilla animuese si kubi që rrotullohet;
- Plotësisht Backend-i GDK Broadway, i destinuar për vizatimin e output-it të bibliotekës GTK në një dritare të shfletuesit web. Implementimi i vjetër Broadway nuk përputhej me metodat e propozuara në GTK 4 për vizatim (në vend të output-it në buffer tani aplikohet një model i bazuar në nodet e vizatimit, ku output-i komponohet në formën e një tree të operacioneve të nivelit të lartë, të përpunuara në mënyrë efikase nga GPU me OpenGL dhe Vulkan).
NjĂ« variant i ri i Broadway konverton nodet e vizatimit nĂ« nodet DOM me stile CSS pĂ«r output-in e ndĂ«rfaqes nĂ« shfletues. Ădo gjendje e re e ekranit trajtohet si njĂ« ndryshim nĂ« pemĂ«n DOM nĂ« krahasim me gjendjen e kaluar, duke lejuar tĂ« reduktohet madhĂ«sia e tĂ« dhĂ«nave qĂ« transmetohen te klienti i largĂ«t. Transformimet 3D dhe efektet grafike realizohen pĂ«rmes pronĂ«s CSS transform; - NĂ« GDK vazhdoi implementimi i API-ve, tĂ« zhvilluara me referencĂ« pĂ«r pĂ«rdorimin e protokollit Wayland, dhe pastrimi i API-ve, tĂ« lidhura me X11, ose zhvendosja e tyre nĂ« njĂ« backend tĂ« veçantĂ« X11. Ka pĂ«rparim nĂ« realizimin e punĂ«s pĂ«r t'u larguar nga pĂ«rdorimi i sipĂ«rfaqeve tĂ« nĂ«ndheshme dhe koordinatave globale. MbĂ«shtetje pĂ«r GDK_SURFACE_SUBSURFACE Ă«shtĂ« eliminuar nga GDK;
- Vazhdon refaktorizimi i kodit lidhur me realizimin e operacioneve Drag-and-Drop, duke përfshirë propozimin e objekteve të ndara GdkDrag dhe GdkDrop;
- PĂ«rpunimi i ngjarjeve Ă«shtĂ« thjeshtuar, tĂ« cilat tani pĂ«rdoren vetĂ«m pĂ«r hyrje. Ngjarjet e tjera janĂ« zĂ«vendĂ«suar me sinjale tĂ« veçanta, pĂ«r shembull, nĂ« vend tĂ« ngjarjeve tĂ« daljes Ă«shtĂ« propozuar sinjali «GdkSurface::render», nĂ« vend tĂ« ngjarjeve tĂ« konfigurimit â «GdkSurface::size-changed», nĂ« vend tĂ« ngjarjeve tĂ« mapimit â «GdkSurface::mapped», nĂ« vend tĂ« gdk_event_handler_set() â «GdkSurface::event»;
- Në backend-in e GDK për Wayland është shtuar mbështetje për ndërfaqen portal për qasje në cilësimet e GtkSettings. Për të punuar me metodat e hyrjes është propozuar mbështetje për zgjerimin e protokollit text-input-unstable-v3;
- Për zhvillimin e widget-eve është paraqitur objekti i ri GtkLayoutManager me realizimin e një sistemi menaxhimi të vendosjes së elementeve në varësi të shtrirjes së zonës së dukshme. GtkLayoutManager ka zëvendësuar pronat e nëndheshme në enët GTK, si GtkBox dhe GtkGrid. Janë propozuar disa menaxherë të gatshëm të vendosjes: GtkBinLayout për enë të thjeshta me një element nëndheshmë, GtkBoxLayout për elemente nëndheshmë të radhitur linear, GtkGridLayout për vendosjen e elementeve nëndheshmë në një rrjet, GtkFixedLayout për pozicionimin e rastësishëm të elementeve nëndheshmë, GtkCustomLayout për translacionin e elementeve tradicionale mbi bazën e menaxhuesve size_allocate;
- Në widget-et GtkAssistant, GtkStack dhe GtkNotebook janë shtuar objekte publikisht të aksesueshme për shfaqjen e faqeve të elementeve nëndheshmë, në të cilat janë shndërruar pronat e dhënave të këtyre widget-eve që nuk janë të lidhura me vendosjen (Layout). Duke qenë se të gjitha pronat e nëndheshme ekzistuese janë transformuar në pronat e zakonshme, pronat e vendosjes janë ose zhvendosur në objekte të faqeve, ashtu nga GtkContainer është eliminuar plotësisht mbështetja për pronat nëndheshmë;
- Funksionaliteti bazë i GtkEntry është zhvendosur në widget-in e ri GtkText, i cili gjithashtu përfshin një ndërfaqe të zgjeruar editimi GtkEditable. Të gjitha podklasat ekzistuese të hyrjes së të dhënave janë rishikuar në formën e realizimeve GtkEditable mbi bazën e widget-it të ri GtkText;
- Shtoja një widget të ri GtkPasswordEntry për format e futjes së fjalëkalimeve;
- Në GtkWidgets është shtuar mundësia për të transformuar elementët fëmijë përmes metodave të transformimit linear, të caktuar përmes CSS ose argumentit gtk_widget_allocate në GskTransform. Kjo mundësi tashmë është aplikuar në widget-in GtkFixed;
- Shtohen modele të reja të formimit të listave: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel dhe GtkSingleSelection. Në të ardhmen do të shtohet mbështetje për modelet e listave në GtkListView;
- Në GtkBuilder është shtuar mundësia për të caktuar pronat e objekteve në vend (inline), në vend të përdorimit të referencave për identifikimin;
- Në gtk4-builder-tool është shtuar një komandë për të konvertuar skedarët UI nga GTK 3 në GTK 4;
- Mbështetja për temat kryesore të dizajnit (key theme), menutë me skeda (tabular menu) dhe blloqet e kombinuara (combo box) është ndërprerë. Widget-i GtkInvisible është larguar.
Burimi: opennet.ru
