GTK 3.96, rilis eksperimental GTK 4, diterbitkan

10 bulan setelahnya dari masa lalu rilis tes disajikan GTK 3.96, rilis eksperimental baru dari rilis stabil GTK 4 yang akan datang. Cabang GTK 4 sedang dikembangkan sebagai bagian dari proses pengembangan baru yang berupaya menyediakan API yang stabil dan didukung kepada pengembang aplikasi selama beberapa tahun yang dapat digunakan tanpa rasa takut harus menulis ulang aplikasi setiap enam bulan karena perubahan API di cabang GTK berikutnya. Hingga GTK 4 sepenuhnya stabil, disarankan agar aplikasi yang ditawarkan kepada pengguna terus dibangun menggunakan cabang tersebut GTK 3.24.

Utama perubahan di GTK 3.96:

  • Di API GSK (GTK Scene Kit), yang menyediakan rendering adegan grafis melalui OpenGL dan Vulkan, perbaikan kesalahan telah dilakukan, yang menjadi lebih mudah diidentifikasi berkat alat debugging baru gtk4-node-editor, yang memungkinkan Anda memuat dan menampilkan node rendering dalam format serial (dapat disimpan dalam mode inspeksi inspektur GTK), dan juga membandingkan hasil rendering saat menggunakan backend yang berbeda;

    GTK 3.96, rilis eksperimental GTK 4, diterbitkan

  • Kemampuan transformasi 3D telah ditingkatkan ke tingkat yang memungkinkan Anda membuat efek animasi seperti kubus yang berputar;

    GTK 3.96, rilis eksperimental GTK 4, diterbitkan

  • Sepenuhnya ditulis ulang Backend Broadway GDK dirancang untuk merender keluaran perpustakaan GTK di jendela browser web. Implementasi Broadway yang lama tidak sesuai dengan metode rendering yang diusulkan di GTK 4 (alih-alih mengeluarkan output ke buffer, sekarang menggunakan model berdasarkan node render, di mana output disusun dalam bentuk pohon operasi tingkat tinggi, efisien diproses oleh GPU menggunakan OpenGL dan Vulkan).
    Opsi Broadway baru mengubah node render menjadi node DOM dengan gaya CSS untuk merender antarmuka di browser. Setiap status layar baru diproses sebagai perubahan pada pohon DOM dibandingkan status sebelumnya, yang mengurangi ukuran data yang dikirimkan ke klien jarak jauh. Transformasi 3D dan efek grafis diimplementasikan melalui properti transformasi CSS;

  • GDK terus mengimplementasikan API yang dirancang dengan mempertimbangkan protokol Wayland, dan membersihkan API berbasis X11 atau memindahkannya ke backend X11 terpisah. Ada kemajuan dalam upaya untuk beralih dari penggunaan permukaan anak-anak dan koordinat global. Dukungan untuk GDK_SURFACE_SUBSURFACE telah dihapus dari GDK;
  • Pemfaktoran ulang kode yang terkait dengan pelaksanaan operasi Seret dan Lepas terus berlanjut, termasuk usulan objek GdkDrag dan GdkDrop terpisah;
  • Penanganan event telah disederhanakan dan sekarang hanya digunakan untuk input. Peristiwa yang tersisa diganti dengan sinyal terpisah, misalnya, alih-alih peristiwa keluaran, sinyal "GdkSurface::render" diusulkan, alih-alih peristiwa konfigurasi - "GdkSurface::size-changed", alih-alih peristiwa pemetaan - "GdkSurface: :dipetakan”, alih-alih gdk_event_handler_set() - "GdkSurface::event";
  • Backend GDK untuk Wayland telah menambahkan dukungan untuk antarmuka portal untuk mengakses pengaturan GtkSettings. Untuk bekerja dengan metode input, dukungan untuk ekstensi protokol text-input-unstable-v3 telah diusulkan;
  • Untuk pengembangan widget, objek GtkLayoutManager baru diperkenalkan dengan implementasi sistem untuk mengontrol tata letak elemen bergantung pada tata letak area yang terlihat. GtkLayoutManager menggantikan properti anak di kontainer GTK seperti GtkBox dan GtkGrid. Beberapa pengelola tata letak siap pakai diusulkan: GtkBinLayout untuk wadah sederhana dengan satu elemen turunan, GtkBoxLayout untuk elemen turunan yang disejajarkan secara linier, GtkGridLayout untuk menyelaraskan elemen turunan ke dalam kisi, GtkFixedLayout untuk pemosisian elemen turunan yang sewenang-wenang, GtkCustomLayout untuk menerjemahkan elemen tradisional berdasarkan size_allocation penangan;
  • Objek yang dapat diakses publik untuk tampilan halaman elemen turunan telah ditambahkan ke widget GtkAssistant, GtkStack, dan GtkNotebook, ke mana properti turunan widget ini yang tidak terkait dengan Tata Letak akan ditransfer. Karena semua properti anak yang ada telah diubah menjadi properti biasa, properti tata letak, atau dipindahkan ke objek halaman, dukungan untuk properti anak telah dihapus seluruhnya dari GtkContainer;
  • Fungsionalitas inti GtkEntry telah dipindahkan ke widget GtkText baru, yang juga mencakup antarmuka pengeditan GtkEditable yang ditingkatkan. Semua subkelas masukan data yang ada telah dibuat ulang sebagai implementasi GtkEditable berdasarkan widget GtkText baru;
  • Menambahkan widget GtkPasswordEntry baru untuk formulir entri kata sandi;
  • GtkWidgets telah menambahkan kemampuan untuk mengubah elemen turunan menggunakan metode transformasi linier yang ditentukan melalui CSS atau argumen gtk_widget_allocation ke GskTransform. Fitur yang ditentukan sudah diterapkan di widget GtkFixed;
  • Model pembuatan daftar baru telah ditambahkan: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel, dan GtkSingleSelection. Di masa depan kami berencana menambahkan dukungan untuk model daftar ke GtkListView;
  • GtkBuilder telah menambahkan kemampuan untuk mengatur properti objek secara lokal (inline), daripada menggunakan tautan berdasarkan pengidentifikasi;
  • Menambahkan perintah ke gtk4-builder-tool untuk mengonversi file UI dari GTK 3 ke GTK 4;
  • Dukungan untuk tema utama, menu tabel, dan kotak kombo telah dihentikan. Widget GtkInvisible telah dihapus.

    Sumber: opennet.ru

Tambah komentar