Opublikowano GTK 3.96, eksperymentalne wydanie GTK 4

10 miesięcy później z przeszłości wydanie testowe przedstawione GTK 3.96, nowa eksperymentalna wersja nadchodzącej stabilnej wersji GTK 4. Gałąź GTK 4 jest rozwijana w ramach nowego procesu rozwojowego, który ma na celu zapewnienie twórcom aplikacji stabilnego i wspieranego API przez kilka lat, z którego można korzystać bez obaw konieczności przepisywania aplikacji co pół roku ze względu na zmianę API w kolejnej gałęzi GTK. Do czasu pełnej stabilizacji GTK 4 zaleca się, aby oferowane użytkownikom aplikacje były nadal budowane w oparciu o gałąź GTK 3.24.

Głównym zmiany w GTK 3.96:

  • W API GSK (GTK Scene Kit), który umożliwia renderowanie scen graficznych poprzez OpenGL i Vulkan, popracowano nad błędami, które stały się łatwiejsze do zidentyfikowania dzięki nowemu narzędziu do debugowania gtk4-node-editor, które pozwala na załadowanie i wyświetlenie węzeł renderujący w formacie serializowanym (można zapisać w trybie inspekcji inspektora GTK), a także porównać wyniki renderowania przy użyciu różnych backendów;

    Opublikowano GTK 3.96, eksperymentalne wydanie GTK 4

  • Możliwości transformacji 3D zostały doprowadzone do poziomu, który pozwala na tworzenie efektów animacji takich jak obracająca się kostka;

    Opublikowano GTK 3.96, eksperymentalne wydanie GTK 4

  • Całkowicie przepisany Backend Broadway GDK zaprojektowany do renderowania danych wyjściowych biblioteki GTK w oknie przeglądarki internetowej. Stara implementacja Broadwayu nie pasowała do metod renderowania zaproponowanych w GTK 4 (zamiast wyprowadzania danych do bufora wykorzystuje teraz model oparty na węzłach renderowania, gdzie wynik komponowany jest w postaci drzewa operacji wysokiego poziomu, wydajnie przetwarzane przez procesor graficzny przy użyciu OpenGL i Vulkan).
    Nowa opcja Broadway konwertuje węzły renderujące na węzły DOM ze stylami CSS do renderowania interfejsu w przeglądarce. Każdy nowy stan ekranu jest przetwarzany jako zmiana w drzewie DOM w stosunku do poprzedniego stanu, co zmniejsza rozmiar danych przesyłanych do zdalnego klienta. Transformacje 3D i efekty graficzne są realizowane poprzez właściwość CSS transform;

  • GDK kontynuuje wdrażanie interfejsów API zaprojektowanych z myślą o protokole Wayland i czyści interfejsy API oparte na X11 lub przenosi je do osobnego backendu X11. Odnotowano postęp w pracach nad odejściem od stosowania powierzchni podrzędnych i współrzędnych globalnych. Obsługa GDK_SURFACE_SUBSURFACE została usunięta z GDK;
  • Kontynuowano refaktoryzację kodu związaną z wykonywaniem operacji przeciągnij i upuść, włączając zaproponowane oddzielne obiekty GdkDrag i GdkDrop;
  • Obsługa zdarzeń została uproszczona i jest teraz używana tylko do wprowadzania danych. Pozostałe zdarzenia zastępowane są osobnymi sygnałami, np. zamiast zdarzeń wyjściowych proponowany jest sygnał „GdkSurface::render”, zamiast zdarzeń konfiguracyjnych – „GdkSurface::size-changed”, zamiast zdarzeń mapujących – „GdkSurface: :mapped” zamiast gdk_event_handler_set() - „GdkSurface::event”;
  • Backend GDK dla Wayland dodał obsługę interfejsu portalu umożliwiającego dostęp do ustawień GtkSettings. Aby pracować z metodami wprowadzania, zaproponowano obsługę rozszerzenia protokołu text-input-unstable-v3;
  • Na potrzeby rozwoju widżetów wprowadzono nowy obiekt GtkLayoutManager wraz z implementacją systemu kontroli układu elementów w zależności od układu widocznego obszaru. GtkLayoutManager zastępuje właściwości podrzędne w kontenerach GTK, takich jak GtkBox i GtkGrid. Proponowanych jest kilka gotowych menedżerów układu: GtkBinLayout dla prostych kontenerów z jednym elementem potomnym, GtkBoxLayout dla liniowo wyrównanych elementów potomnych, GtkGridLayout do wyrównywania elementów potomnych do siatki, GtkFixedLayout do dowolnego pozycjonowania elementów potomnych, GtkCustomLayout do tłumaczenia tradycyjnych elementów na podstawie size_allocate obsługi;
  • Do widżetów GtkAssistant, GtkStack i GtkNotebook dodano publicznie dostępne obiekty do wyświetlania elementów podrzędnych na stronie, do których przenoszone są właściwości podrzędne niezwiązane z układem tych widżetów. Ponieważ wszystkie istniejące właściwości podrzędne zostały przekonwertowane na zwykłe właściwości, właściwości układu lub przeniesione do obiektów strony, obsługa właściwości podrzędnych została całkowicie usunięta z GtkContainer;
  • Podstawowa funkcjonalność GtkEntry została przeniesiona do nowego widżetu GtkText, który zawiera również ulepszony interfejs edycyjny GtkEditable. Wszystkie istniejące podklasy wprowadzania danych zostały przerobione na implementacje GtkEditable w oparciu o nowy widżet GtkText;
  • Dodano nowy widget GtkPasswordEntry do formularzy wprowadzania hasła;
  • GtkWidgets dodał możliwość przekształcania elementów potomnych przy użyciu metod transformacji liniowej określonych za pomocą CSS lub argumentu gtk_widget_allocate do GskTransform. Określona funkcja jest już zastosowana w widżecie GtkFixed;
  • Dodano nowe modele generowania list: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel i GtkSingleSelection. W przyszłości planujemy dodać obsługę modeli list do GtkListView;
  • GtkBuilder dodał możliwość ustawiania właściwości obiektu lokalnie (inline), zamiast używać linków według identyfikatora;
  • Dodano polecenie do narzędzia gtk4-builder-tool umożliwiające konwersję plików interfejsu użytkownika z GTK 3 do GTK 4;
  • Zakończono obsługę kluczowych motywów, menu tabelarycznych i pól kombi. Widget GtkInvisible został usunięty.

    Źródło: opennet.ru

Dodaj komentarz