Доступен графический тулкит 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.
Улучшена поддержка графического 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