Доступен графический тулкит 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 реализована возможность относительного измерения недостающего размера (например, если задана ширина, при размещении может учитываться доступная высота), что позволяет сделать виджеты более тонкими без занятия лишнего пространства. 0_1641280708.png 0_1641280739.png
  • В виджете 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 для управления показом стрелки. 0_1641284280.png

  • В 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