След четири месеца разработка е публикувана версия на многоплатформен инструментариум за създаване на графичен потребителски интерфейс — 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_bytes и gdk_display_create_gl_context.
- Ветката „master“ в Git-репозитория е преименувана на „main“.
Източник: opennet.ru



