Доступен графический тулкит GTK 4.12

После пяти месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя — GTK 4.12.0. GTK 4 развивается в рамках нового процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.

В конце года планируется сформировать экспериментальную ветку 4.90, в которой будет развиваться функциональность для будущего выпуска GTK5. В ветку GTK5 будут включены изменения нарушающие совместимость на уровне API, например, связанные с переводом в разряд устаревших некоторых виджетов, таких как старый диалог выбора файлов. Также обсуждается возможность прекращения в ветке GTK5 поддержки протокола X11 и оставления возможности работы только с использованием протокола Wayland.

Среди наиболее заметных улучшений в GTK 4.12:

  • Добавлен интерфейс GtkSectionModel для группировки элементов списка в секции. Поддержка разделения на секции добавлена в большинстве виджетов для вывода списков, включая GtkDropDown (выпадающее меню), GtkListView (список элементов) и GtkColumnView (многостолбцовый список).

  • В класс Gtk.FileLauncher добавлено свойство always-ask для показа диалога выбора приложения для открытия файла.

  • Обеспечена автоматическая установка параметров шрифта (gtk-hint-font-metrics) на основе выставленного коэффициента масштабирования. Изменение позволило улучшить отрисовку шрифтов в приложениях, поставляемых в формате flatpak.

  • Для Wayland реализована возможность заморозки (suspend) состояния окна. Решены проблемы при использовании кнопок стилуса в окружениях на базе Wayland. Решены проблемы с Drag&Drop. Добавлена поддержка протокола fractional-scale, позволяющего использовать нецелые значения масштаба. Задействован протокол «viewporter», позволяющий клиенту выполнять действия по масштабированию и обрезанию краёв поверхности на стороне сервера. Для сборки с поддержкой Wayland теперь необходимо наличие пакета wayland-protocols как минимум версии 1.31.

  • Добавлена новая утилита gtk4-rendernode-tool для отрисовки узлов сцены при помощи GskRenderer.

  • В интерфейсе GtkFileChooser по умолчанию включён режим сортировки, в первую очередь показывающий каталоги, а уже потом файлы. Обеспечена работа столбцов с местоположением, датой и временем. Добавлена обработка ссылок WebDav в строке с файловыми путём.

  • В виджетах GtkLabel и GtkLinkButton возвращена поддержка URI «file://».

  • В виджетах GtkListView, GtkColumnView и GtkGridView улучшена обработка смены фокуса ввода и предложены новые свойства »:: tab-behavior» и «GtkListItem: focusable». Добавлен класс GtkColumnViewCell для представления элементов в ячейке. В GtkColumnView добавлена поддержка «фабрик строк» (row factories) для генерации виджета ColumnViewCell для каждого столбца и каждого видимого элемента (в ячейке элементы показываются вместе в форме строки).

  • Значительно расширены средства для людей с ограниченными возможностями. Соответствующие изменения внесены в виджеты GtkButton, GtkPasswordEntry, GtkFontChooserDialog, GtkColorChooserDialog, GtkShortcutsWindow, GtkMenuButton, GtkAboutDialog, GtkFileChooserDialog, GtkStackSidebar, GtkStackSwitcher, GtkMediaControls, GtkColorDialogButton, GtkDropDown, GtkInfoBar, GtkNotebook, GtkPrintUnixDialog, GtkModelButton.

  • В режим инспектирования (GTK inspector) добавлена новая секция «Accessibility» и реализован интерфейс для выявления проблем, которые могут возникнуть у людей с ограниченными возможностями. Расширена информация, показываемая во вкладке a11y. Добавлены дополнительные сведения, специфичные для Wayland.

    CFD0C5CECEC5D4_1691391664.png

  • Улучшена поддержка графического API Vulkan. Добавлена возможность задействования Vulkan для сглаживания градиентов. Реализована поддержка разных форматов изображений и добавлена возможность повтора (redo) загрузки изображения. Добавлен кэш для pipeline-операций и переработано кэширование глифов. Добавлена поддержка нецелых значений при масштабировании.

  • В движке отрисовки на базе OpenGL реализован API GdkGLTextureBuilde для создания текстур. Предоставлена возможность настройки областей обновления текстур.

  • В библиотеке GDK, предоставляющей прослойку между GTK и графической подсистемой, реализована поддержка загрузки и сохранения текстур с прозрачностью и палитрой в оттенках серого. Реализована поддержка нецелых значений масштаба. При использовании Wayland нецелое масштабирование используется при сборке с cairo или OpenGL при указании опции GDK_DEBUG=gl-fractional.

  • В библиотеке GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan, при рендеринге через OpenGL добавлена поддержка текстур с прозрачностью и палитрой в оттенках серого. Улучшен экспериментальный код для рендеринга при помощи API Vulkan. Добавлен параметр GSK_MAX_TEXTURE_SIZE для ограничения размера текстур. Повышена эффективность работы с текстурами.

  • В виджет GtkCenterBox добавлено свойство shrink-center-last для сжатия центрального виджета в последнюю очередь, когда сжатие уже применено к остальным дочерним виджетам. В GtkButton и GtkMenuButton добавлено свойство can-shrink, разрешающее сжатие кнопок до размера, меньше, чем исходный размер содержимого кнопки.

  • В видежете GtkBox добавлена поддержка направляющих в вертикальной ориентации.

  • В движок тем оформления для некоторых виджетов добавлены отдельные классы стилей. Из библиотеки Adwaita перенесена поддержка стиля ».boxed-list». Добавлена возможность отображения второстепенных изображений в оттенках серого.

  • Поведение клавиши backspace в классе GtkTextView унифицировано с классом GtkEntry.
  • В виджеты для работы со списками добавлен API scroll_to, для прокрутки в указанную позицию.

  • В утилите gtk4-node-editor улучшено масштабирование, для текстур обеспечено сохранение коэффициента соотношения сторон, упрощено редактирование узлов.

  • В реализацию механизма Drag-and-Drop добавлен сигнал GdkDragSurface: compute-size для передачи сведений об изменении размера перемещаемой области.

  • Переведены в разряд устаревших функции:
    • gtk_css_provider_load_from_data
    • gdk_wayland_toplevel_unexport_handle
    • gdk_pixbuf_get_from_surface
    • gdk_pixbuf_get_from_texture
    • gtk_image_new_from_pixbuf
    • gtk_image_set_from_pixbuf
    • gtk_picture_new_for_pixbuf
    • gtk_picture_set_pixbuf
    • gtk_widget_translate_coordinates
    • gdk_surface_create_similar_surface



Источник: http://www.opennet.ru/opennews/art.shtml? num=59561

© OpenNet