GTK 3.96, pang-eksperimentong paglabas ng GTK 4, na-publish

10 buwan pagkatapos ng nakaraan paglabas ng pagsubok ipinakita GTK 3.96, isang bagong eksperimental na release ng paparating na stable release ng GTK 4. Ang GTK 4 branch ay binuo bilang bahagi ng isang bagong proseso ng pag-develop na sumusubok na magbigay sa mga developer ng application ng isang stable at suportadong API sa loob ng ilang taon na magagamit nang walang takot ng kinakailangang muling isulat ang application tuwing anim na buwan dahil sa pagbabago ng API sa susunod na sangay ng GTK. Hanggang sa ganap na ma-stabilize ang GTK 4, inirerekomenda na ang mga application na inaalok sa mga user ay patuloy na itayo gamit ang branch GTK 3.24.

Ang pangunahing pagbabago sa GTK 3.96:

  • Sa API GSK (GTK Scene Kit), na nagbibigay ng pag-render ng mga graphic na eksena sa pamamagitan ng OpenGL at Vulkan, nagawa ang mga error, na naging mas madaling matukoy salamat sa bagong tool sa pag-debug na gtk4-node-editor, na nagbibigay-daan sa iyong i-load at ipakita ang pag-render ng node sa isang serialized na format (maaaring i-save sa inspection mode GTK inspector), at ihambing din ang mga resulta ng pag-render kapag gumagamit ng iba't ibang mga backend;

    GTK 3.96, pang-eksperimentong paglabas ng GTK 4, na-publish

  • Ang mga kakayahan sa pagbabagong 3D ay dinala sa isang antas na nagbibigay-daan sa iyong lumikha ng mga epekto ng animation gaya ng umiikot na kubo;

    GTK 3.96, pang-eksperimentong paglabas ng GTK 4, na-publish

  • Ganap na muling isinulat Broadway GDK backend na idinisenyo upang i-render ang GTK library output sa isang web browser window. Ang lumang pagpapatupad ng Broadway ay hindi umaangkop sa mga pamamaraan ng pag-render na iminungkahi sa GTK 4 (sa halip na output sa isang buffer, gumagamit na ito ngayon ng isang modelo batay sa mga render node, kung saan ang output ay binubuo sa anyo ng isang puno ng mga high-level na operasyon, mahusay na naproseso ng GPU gamit ang OpenGL at Vulkan).
    Ang bagong opsyon sa Broadway ay nagko-convert ng mga render node sa mga DOM node na may mga estilo ng CSS para sa pag-render ng interface sa browser. Ang bawat bagong estado ng screen ay pinoproseso bilang isang pagbabago sa puno ng DOM na nauugnay sa nakaraang estado, na nagpapababa sa laki ng data na ipinadala sa malayong kliyente. Ang mga 3D transformation at graphic effect ay ipinapatupad sa pamamagitan ng CSS transform property;

  • Patuloy na ipinapatupad ng GDK ang mga API na idinisenyo nang nasa isip ang Wayland protocol, at nililinis ang mga X11-based na API o inilipat ang mga ito sa isang hiwalay na X11 backend. Mayroong pag-unlad sa gawain upang lumayo sa paggamit ng mga ibabaw ng bata at mga pandaigdigang coordinate. Ang suporta para sa GDK_SURFACE_SUBSURFACE ay inalis sa GDK;
  • Nagpatuloy ang refactoring ng code na nauugnay sa pagsasagawa ng mga operasyong Drag-and-Drop, kasama ang iminungkahing magkahiwalay na GdkDrag at GdkDrop na mga bagay;
  • Ang pangangasiwa ng kaganapan ay pinasimple at ngayon ay ginagamit lamang para sa input. Ang natitirang mga kaganapan ay pinapalitan ng hiwalay na mga signal, halimbawa, sa halip na mga kaganapan sa output, ang signal na "GdkSurface::render" ay iminungkahi, sa halip na mga kaganapan sa pagsasaayos - "GdkSurface::size-changed", sa halip na mga kaganapan sa pagmamapa - "GdkSurface: :mapped”, sa halip na gdk_event_handler_set() - "GdkSurface::event";
  • Ang backend ng GDK para sa Wayland ay nagdagdag ng suporta para sa isang interface ng portal para sa pag-access sa mga setting ng GtkSettings. Upang gumana sa mga pamamaraan ng pag-input, ang suporta para sa extension ng text-input-unstable-v3 na protocol ay iminungkahi;
  • Para sa pagbuo ng mga widget, isang bagong bagay na GtkLayoutManager ang ipinakilala sa pagpapatupad ng isang sistema para sa pagkontrol sa layout ng mga elemento depende sa layout ng nakikitang lugar. Pinapalitan ng GtkLayoutManager ang mga child property sa mga GTK container gaya ng GtkBox at GtkGrid. Ilang ready-made na layout manager ang iminungkahi: GtkBinLayout para sa mga simpleng container na may isang child element, GtkBoxLayout para sa linearly aligned child elements, GtkGridLayout para sa aligning child elements sa isang grid, GtkFixedLayout para sa arbitrary na pagpoposisyon ng child elements, GtkCustomLayout batay sa translating_sizelocate na mga elemento mga humahawak;
  • Ang mga bagay na naa-access ng publiko para sa pagpapakita ng pahina ng mga elemento ng bata ay idinagdag sa mga widget ng GtkAssistant, GtkStack at GtkNotebook, kung saan inililipat ang mga hindi nauugnay sa Layout na pag-aari ng mga widget na ito. Dahil ang lahat ng umiiral na child property ay na-convert sa mga regular na property, layout property, o inilipat sa page object, ang suporta para sa child property ay ganap na inalis sa GtkContainer;
  • Ang pangunahing pagpapagana ng GtkEntry ay inilipat sa isang bagong widget ng GtkText, na kinabibilangan din ng pinahusay na interface sa pag-edit ng GtkEditable. Ang lahat ng umiiral na data input subclass ay ginawang muli bilang GtkEditable na mga pagpapatupad batay sa bagong GtkText widget;
  • Nagdagdag ng bagong widget ng GtkPasswordEntry para sa mga form ng pagpasok ng password;
  • Ang GtkWidgets ay nagdagdag ng kakayahang mag-transform ng mga child element gamit ang linear transformation na mga pamamaraan na tinukoy sa pamamagitan ng CSS o ang gtk_widget_allocate na argumento sa GskTransform. Ang tinukoy na tampok ay nailapat na sa GtkFixed widget;
  • Ang mga bagong modelo ng henerasyon ng listahan ay naidagdag: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel at GtkSingleSelection. Sa hinaharap, plano naming magdagdag ng suporta para sa mga modelo ng listahan sa GtkListView;
  • Ang GtkBuilder ay nagdagdag ng kakayahang magtakda ng mga katangian ng object nang lokal (inline), sa halip na gumamit ng mga link sa pamamagitan ng identifier;
  • Idinagdag ang command sa gtk4-builder-tool upang i-convert ang mga UI file mula sa GTK 3 patungo sa GTK 4;
  • Ang suporta para sa mga pangunahing tema, tabular na menu, at combo box ay hindi na ipinagpatuloy. Ang widget na GtkInvisible ay tinanggal.

    Pinagmulan: opennet.ru

Magdagdag ng komento