После четырёх месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя - GTK 4.6.0. GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.
Среди наиболее заметных улучшений в GTK 4.6:
Среди наиболее заметных улучшений в 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".
Доступен графический тулкит GTK 4.6
www.opennet.ru