GTK 3.96, versiunea experimentală a GTK 4, publicată

10 luni dupa din trecut lansarea testului prezentat GTK 3.96, o nouă lansare experimentală a viitoarei lansări stabile a GTK 4. Ramura GTK 4 este dezvoltată ca parte a unui nou proces de dezvoltare care încearcă să ofere dezvoltatorilor de aplicații un API stabil și acceptat timp de câțiva ani, care poate fi folosit fără teamă. de a trebui să rescrie aplicația la fiecare șase luni din cauza schimbării API-ului în următoarea ramură GTK. Până la stabilizarea completă a GTK 4, se recomandă ca aplicațiile oferite utilizatorilor să fie construite în continuare folosind ramura GTK 3.24.

Principalul modificări în GTK 3.96:

  • În API GSK (GTK Scene Kit), care oferă redarea scenelor grafice prin OpenGL și Vulkan, s-a lucrat la erori, care au devenit mai ușor de identificat datorită noului instrument de depanare gtk4-node-editor, care vă permite să încărcați și să afișați nodul de randare într-un format serializat (poate fi salvat în modul de inspecție GTK inspector) și, de asemenea, compara rezultatele randării atunci când se utilizează diferite backend-uri;

    GTK 3.96, versiunea experimentală a GTK 4, publicată

  • Capacitățile de transformare 3D au fost aduse la un nivel care vă permite să creați efecte de animație, cum ar fi un cub rotativ;

    GTK 3.96, versiunea experimentală a GTK 4, publicată

  • complet rescrisă Backend-ul Broadway GDK conceput pentru a reda ieșirea bibliotecii GTK într-o fereastră de browser web. Vechea implementare Broadway nu se încadra în metodele de randare propuse în GTK 4 (în loc de ieșire într-un buffer, acum folosește un model bazat pe noduri de randare, unde rezultatul este compus sub forma unui arbore de operații de nivel înalt, procesate eficient de GPU folosind OpenGL și Vulkan).
    Noua opțiune Broadway convertește nodurile de randare în noduri DOM cu stiluri CSS pentru redarea interfeței în browser. Fiecare stare nouă a ecranului este procesată ca o modificare a arborelui DOM față de starea anterioară, ceea ce reduce dimensiunea datelor transmise către clientul de la distanță. Transformările 3D și efectele grafice sunt implementate prin proprietatea de transformare CSS;

  • GDK continuă să implementeze API-uri concepute având în vedere protocolul Wayland și să curețe API-urile bazate pe X11 sau să le mute într-un backend X11 separat. Există progrese în activitatea de îndepărtare de la utilizarea suprafețelor copiilor și a coordonatelor globale. Suportul pentru GDK_SURFACE_SUBSURFACE a fost eliminat din GDK;
  • Refactorizarea codului asociat cu efectuarea operațiunilor Drag-and-Drop a continuat, inclusiv obiectele separate GdkDrag și GdkDrop propuse;
  • Gestionarea evenimentelor a fost simplificată și acum este folosită doar pentru introducere. Evenimentele rămase sunt înlocuite cu semnale separate, de exemplu, în loc de evenimente de ieșire, este propus semnalul „GdkSurface::render”, în loc de evenimente de configurare - „GdkSurface::size-changed”, în loc de maparea evenimentelor - „GdkSurface: :mapped”, în loc de gdk_event_handler_set() - „GdkSurface::event”;
  • Backend-ul GDK pentru Wayland a adăugat suport pentru o interfață portal pentru accesarea setărilor GtkSettings. Pentru a lucra cu metode de intrare, a fost propus suport pentru extensia de protocol text-input-unstable-v3;
  • Pentru dezvoltarea widget-urilor este introdus un nou obiect GtkLayoutManager cu implementarea unui sistem de control al aspectului elementelor în funcție de aspectul zonei vizibile. GtkLayoutManager înlocuiește proprietățile copil din containerele GTK, cum ar fi GtkBox și GtkGrid. Sunt propuși mai mulți manageri de aspect gata făcut: GtkBinLayout pentru containere simple cu un element copil, GtkBoxLayout pentru elemente copil aliniate liniar, GtkGridLayout pentru alinierea elementelor copil la o grilă, GtkFixedLayout pentru poziționarea arbitrară a elementelor copil, GtkCustomLayout pentru elemente tradiționale de translating_allocate manipulatori;
  • Obiecte accesibile public pentru afișarea în pagină a elementelor copil au fost adăugate la widget-urile GtkAssistant, GtkStack și GtkNotebook, la care sunt transferate proprietățile secundare care nu sunt legate de aspect ale acestor widget-uri. Deoarece toate proprietățile copil existente au fost convertite în proprietăți obișnuite, proprietăți de aspect sau mutate în obiecte de pagină, suportul pentru proprietățile copil a fost complet eliminat din GtkContainer;
  • Funcționalitatea de bază GtkEntry a fost mutată într-un nou widget GtkText, care include și o interfață de editare GtkEditable îmbunătățită. Toate subclasele de date existente au fost refăcute ca implementări GtkEditable bazate pe noul widget GtkText;
  • S-a adăugat un nou widget GtkPasswordEntry pentru formularele de introducere a parolei;
  • GtkWidgets a adăugat capacitatea de a transforma elemente copil folosind metode de transformare liniară specificate prin CSS sau argumentul gtk_widget_allocate la GskTransform. Caracteristica specificată este deja aplicată în widget-ul GtkFixed;
  • Au fost adăugate noi modele de generație de liste: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel și GtkSingleSelection. În viitor, plănuim să adăugăm suport pentru modelele de listă la GtkListView;
  • GtkBuilder a adăugat capacitatea de a seta proprietățile obiectului local (inline), în loc să folosească link-uri prin identificator;
  • S-a adăugat o comandă la gtk4-builder-tool pentru a converti fișierele UI din GTK 3 în GTK 4;
  • Suportul pentru teme cheie, meniuri tabulare și casete combinate a fost întrerupt. Widgetul GtkInvisible a fost eliminat.

    Sursa: opennet.ru

Adauga un comentariu