Доступен графический тулкит GTK 4.6
После четырёх месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя — 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».
Источник: http://www.opennet.ru/opennews/art.shtml? num=56454
© OpenNet