Pas 10 muajsh nga publikimi testues , publikimi i ri eksperimental i versionit të ardhshëm stabil të GTK 4. Dega GTK 4 zhvillohet në kuadër të një procesi të ri zhvillimi, i cili përpiqet t'u sigurojë zhvilluesve të aplikacioneve një API të stabilizuar dhe të mbështetur për disa vite, që mund të përdoret pa frikën se çdo gjashtë muaj do të duhet të rishkruhet aplikacioni për shkak të ndryshimeve në API në një degë të re GTK. Derisa GTK 4 të stabilizohet plotësisht, aplikacionet e ofruara për përdorim nga përdoruesit rekomandohet të vazhdojnë të ndërtohen duke përdorur degën .
Ndryshimet kryesore në GTK 3.96:
- Në API (GTK Scene Kit), i cili siguron vizatimin e skenave grafike përmes OpenGL dhe Vulkan, është punuar mbi gabimet, identifikimi i të cilave është bërë më i lehtë falë mjetit të ri të depurimit gtk4-node-editor, i cili lejon ngarkimin dhe shfaqjen e nyjës së vizatimit në formatin e serializuar (mund të ruhet në modalitetin e inspektimit të GTK), si dhe të krahasohet rezultati i vizatimit duke aplikuar backend të ndryshëm;
- Aftësitë e transformimeve 3D janë zhvilluar në një nivel që lejon krijimin e efekteve të animacionit si kubi që rrotullohet;
- Plotësisht Backend-i GDK Broadway, i destinuar për të vizatuar output-in e bibliotekës GTK në një dritare shfletuesi web. Zbatimi i vjetër i Broadway nuk përputhej me metodat e vizatimit të propozuara në GTK 4 (në vend të output-it në një bufer, tani aplikohet një model i bazuar në nodet e vizatimit (render nodes), ku output-i kompozohet në formën e një peme operacionesh të nivelit të lartë, të cilat përpunohen efikasit në GPU me ndihmën e OpenGL dhe Vulkan).
Versioni 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 pĂ«rpunon si njĂ« ndryshim nĂ« pemĂ«n DOM nĂ« raport me gjendjen e kaluar, duke lejuar qĂ« tĂ« shkurtĂ«sohet madhĂ«sia e tĂ« dhĂ«nave qĂ« transferohen te klienti i largĂ«t. Transformimet 3D dhe efektet grafike realizohen pĂ«rmes pronĂ«s CSS transform; - NĂ« GDK vazhdohet implementimi i API-ve, tĂ« zhvilluara duke pasur parasysh pĂ«rdorimin e protokollit Wayland, dhe realizimi i pastrimit tĂ« API-ve tĂ« lidhura me X11, ose zhvendosja e tyre nĂ« njĂ« backend tĂ« veçantĂ« X11. ĂshtĂ« evidentuar progreso nĂ« punĂ«n pĂ«r tĂ« shmangur pĂ«rdorimin e sipĂ«rfaqeve nĂ«n dhe koordinatave globale. MbĂ«shtetja pĂ«r GDK_SURFACE_SUBSURFACE Ă«shtĂ« hequr nga GDK;
- Duhet të ristrukturohet kodi i lidhur me ekzekutimin e operacioneve Drag-and-Drop, duke përfshirë objektet e veçanta GdkDrag dhe GdkDrop;
- ĂshtĂ« thjeshtuar trajtimi i ngjarjeve, 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Ă« pĂ«rmasave â "GdkSurface::size-changed", nĂ« vend tĂ« ngjarjeve tĂ« mapimit â "GdkSurface::mapped", nĂ« vend tĂ« gdk_event_handler_set() â "GdkSurface::event";
- Në backend-in GDK për Wayland është shtuar mbështetje për ndërfaqen portal për qasje në cilësimet GtkSettings. Për punën me metodat e hyrjes është propozuar mbështetje për zgjatjen e protokollit text-input-unstable-v3;
- Për zhvillimin e widget-eve është prezantuar objekti i ri GtkLayoutManager me implementimin e sistemit të menaxhimit të shportave të elementeve në varësi të madhësisë së zonës së dukshme. GtkLayoutManager e zëvendësoi pronat fëmijë në kontejnerët GTK, si GtkBox dhe GtkGrid. Janë propozuar disa menaxherë të gatshëm për shportën: GtkBinLayout për kontejnerë të thjeshtë me një element fëmijë, GtkBoxLayout për elementë fëmijë të rreshtuar linear, GtkGridLayout për rreshtimin e elementëve fëmijë sipas një rrjeti, GtkFixedLayout për pozicionimin arbitrar të elementëve fëmijë, GtkCustomLayout për transpozimin e elementeve tradicionale bazuar në trajtuesit size_allocate;
- Në widget-et GtkAssistant, GtkStack dhe GtkNotebook janë shtuar objekte publike për përmbajtjen e faqeve të elementëve fëmijë, në të cilat janë transferuar pronat e dhënave të widget-eve që nuk lidhen me organizimin (Layout). Meqenëse të gjitha pronat ekzistuese fëmijë janë transformuar në pronat e zakonshme, pronat e organizimit janë ose transferuar në objektet e faqeve, ose nga GtkContainer është hequr plotësisht mbështetja për pronat fëmijë;
- Funksionaliteti bazik i GtkEntry është transferuar në një widget të ri GtkText, i cili gjithashtu përfshin një ndërfaqe të avancuar redaktimi GtkEditable. Të gjitha nënklasat ekzistuese të hyrjes janë riimplementuar si realizime GtkEditable mbi bazën e widget-it të ri GtkText;
- ĂshtĂ« shtuar njĂ« widget i ri GtkPasswordEntry pĂ«r formularĂ«t e hyrjes sĂ« fjalĂ«kalimeve;
- Në GtkWidgets është shtuar mundësia për të transformuar elementët fëmijë përmes metodave të transformimit linear, të përcaktuara nëpërmjet CSS ose argumentit gtk_widget_allocate në GskTransform. Kjo mundësi tashmë është aplikuar në widgetin GtkFixed;
- Janë shtuar modele të reja për formimin e listave: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel dhe GtkSingleSelection. Në të ardhmen, planifikohet të shtohet mbështetje për modelet e listave në GtkListView;
- Në GtkBuilder është shtuar mundësia e caktimit të pronave të objekteve në vend (inline), në vend të përdorimit të referencave me identifikator;
- Në gtk4-builder-tool është shtuar një komandë për të transformuar skedarët UI nga GTK 3 në GTK 4;
- Ka përfunduar mbështetje për temat kyçe të dizajnit (key theme), menu të tabuluara (tabular menu) dhe blloqe të përziera (combo box). Widgeti GtkInvisible është hequr.
Burimi: opennet.ru
