Пасля чатырох месяцаў распрацоўкі апублікаваны рэліз шматплатформавага тулкіта для стварэння графічнага інтэрфейсу карыстальніка – GTK 4.6.0. GTK 4 развіваецца ў рамках новага працэсу распрацоўкі, які спрабуе падаць распрацоўнікам прыкладанняў стабільны і які падтрымліваецца на працягу некалькіх гадоў API, які можна выкарыстоўваць не асцерагаючыся, што кожныя паўгода прыйдзецца перарабляць прыкладанні з-за змены API у чарговай галінцы GTK.
Сярод найболей прыкметных паляпшэнняў у GTK 4.6:
- Выдалены стары рухавічок адмалёўкі на базе OpenGL, на змену якому прыйшоў новы рухавічок NGL, які пастаўляецца па змаўчанні пачынальна з GTK 4.2 і які забяспечвае больш высокую прадукцыйнасць. NGL перайменаваны ў GL. Перапісаны код загрузкі тэкстур, палепшана падтрымка фарматаў малюнкаў і каляровых прастор.
- Значна перароблены код, звязаны з вылічэннем памераў элементаў і кампаноўкай віджэтаў. Раней уласцівасці GtkWidget::halign і GtkWidget::valign пры размяшчэнні элементаў адштурхваліся ад памеру віджэтаў па змаўчанні, што пры ўказанні толькі аднаго памеру ў рэжыме запаўнення вобласці магло прыводзіць да занятку элементам дадатковай прасторы. У GTK 4.6 рэалізаваная магчымасць адноснага вымярэння які адсутнічае памеру (напрыклад, калі зададзеная шырыня, пры размяшчэнні можа ўлічвацца даступная вышыня), што дазваляе зрабіць фішкі больш тонкімі без занятку лішняй прасторы.
- У віджэце GtkBox рэалізавана магчымасць вылічэння індывідуальнага памеру даччыных элементаў. Калі раней прастора размяркоўвалася пароўну паміж даччынымі віджэтамі на аснове іх памеру па змаўчанні, то ў GTK 4.6 пры выснове рэалізаваны ўлік фактычнага памеру даччыных элементаў.
- У віджэце GtkLabel рэалізавана падтрымка пераносу тэксту на адвольны лік радкоў, што дазваляе ствараць вузкія пазнакі, якія займаюць даступную вертыкальную прастору.
- У клас GtkWindow дададзеная магчымасць падганяння мінімальнага памеру да каэфіцыента суадносін бакоў, што дазваляе адвольна змяняць памер акна, не асцерагаючыся, што яно будзе занадта дробным. Дададзена ўласцівасць «Window.titlebar».
- Дададзена новае папярэджанне, якое інфармуе аб неадпаведнасці памераў у выпадку вяртання віджэт некарэктнага памеру. Gtk-CRITICAL **: 00:48:33.319: gtk_widget_measure: assertion 'for_size >= minimum opposite size' failed: 23 >= 42
- У віджэце GtkTextView дададзена падтрымка табуляцыі, выраўнаванай па правай мяжы або па цэнтры. Дададзена падтрымка пераўтварэння тэксту і ўліку вышыні радка. Палепшана аперацыя пракруткі да пазначанай пазнакі. Палепшана апрацоўка адмены змен. Вырашаны праблемы пры ўстаўцы тэксту з буфера абмену і з выбарам месца для паказу інтэрфейсу ўстаўкі Emoji.
- У віджэце GtkMenuButton прадстаўлена магчымасць вызначэння ўласных даччыных элементаў.
- У GtkBuilder паскорана предкомпиляция шаблонаў.
- Дададзены сігнал activate для актывацыі віджэтаў GtkComboBox і GtkDropDown.
- У віджэт GtkDropDown дададзена ўласцівасць show-arrow для кіравання паказам стрэлкі.
- У GtkPopoverMenu дададзены атрыбут use-markup для выкарыстання Pango-разметкі ў тэксце меню.
- У сістэме стыляў рэалізаваная падтрымка CSS-уласцівасцяў font-variant-caps для адлюстравання дробных загалоўных літар і text-transform для трансфармацыі тэксту.
- Дададзены інтэрфейс GtkSymbolicPaintable для кіравання колерам знакавых піктаграм.
- У інтэрфейс інспектавання дададзена падтрымка адсочвання аперацый Drag-and-Drop, забяспечаны паказ бягучага модуля ўводу, дададзены прагляднік змесціва буфера абмену, рэалізаваны графік для візуалізацыі gtk_widget_measure(), забяспечана магчымасць часопісавання падзей. Ва ўтыліту gtk4-node-editor дададзена падтрымка рэжыму Drag-and-Drop.
- Для Wayland рэалізавана настройка для актывацыі рэжыму высокага кантрасту (high-contrast). Дададзена падтрымка пратаколу wl_seat v7.
- Дададзена налада gtk-hint-font-metrics для набліжэння адмалёўкі тэксту да паводзін GTK3.
- Для сістэм на базе X11 дададзеная падтрымка кіраўнікоў жэстаў на тачпадах (пры выкарыстанні XInput 2.4) і палепшаныя паводзіны перацягвання вокнаў за загаловак.
- У бібліятэцы GDK, якая прадстаўляе праслойку паміж GTK і графічнай падсістэмай, палепшана праверка версій OpenGL і OpenGL ES. Дададзена падтрымка каляровай прасторы HSL. Пры загрузцы тэкстур і апрацоўцы фарматаў выяваў напроста задзейнічаны бібліятэкі libpng, libjpeg і libtiff. Код ініцыялізацыі EGL перанесены на бок фронтэнда. Дададзены новыя API: gdk_texture_new_from_bytes, gdk_texture_new_from_filename, gdk_texture_download_float, gdk_texture_save_to_png_bytes, gdk_texture_save_to_tiff, gdk_texture_save_to_tiff.
- Галінка "master" у Git-рэпазітары пераназваная ў "main".
Крыніца: opennet.ru