Опубліковано GTK 3.96, експериментальний випуск GTK 4

Через 10 місяців з моменту минулого тестового випуску представлений GTK 3.96, новий експериментальний випуск майбутнього стабільного релізу GTK 4. Гілка GTK 4 розвивається в рамках нового процесу розробки, який намагається надати розробникам додатків стабільний і підтримуваний протягом декількох років API, який можна використовувати не побоюючись, що кожні півроку доведеться переробляти додаток через зміну API у черговій гілці GTK. До повної стабілізації GTK 4 програми, пропоновані для користувачів, рекомендується продовжити збирати з використанням гілки GTK 3.24.

Основні зміни у GTK 3.96:

  • В API GSK (GTK Scene Kit), що забезпечує малювання графічних сцен через OpenGL і Vulkan, проведена робота над помилками, виявляти які стало простіше завдяки новому інструменту налагодження gtk4-node-editor, що дозволяє завантажити і відобразити вузол рендерингу в серіалізованому форматі (може бути збережений в режимі ін.) GTK inspector), а також порівняти результат малювання при застосуванні різних бекендів;

    Опубліковано GTK 3.96, експериментальний випуск GTK 4

  • Можливості 3D-трансформації доведені до рівня, що дозволяє створювати такі анімаційні ефекти, як куб, що обертається;

    Опубліковано GTK 3.96, експериментальний випуск GTK 4

  • повністю переписаний GDK-бекенд Broadway, призначений для відтворення виведення бібліотеки GTK у вікні web-браузера. Стара реалізація Broadway не укладалася в запропоновані в GTK 4 методи відтворення (замість виведення в буфер тепер застосовується модель на основі вузлів відмальовки (render nodes), при якій висновок компонується у формі дерева високорівневих операцій, що ефективно обробляються GPU за допомогою OpenGL та Vulkan).
    Новий варіант Broadway перетворює вузли відтворення на DOM-вузли зі стилями CSS для виведення інтерфейсу в браузері. Кожен новий стан екрану обробляється як зміна DOM-дерева щодо минулого стану, що дозволяє скоротити розмір даних, що передаються віддаленому клієнту. 3D-перетворення та графічні ефекти реалізуються через CSS-властивість transform;

  • У GDK продовжено впровадження API, розроблених з огляду на використання протоколу Wayland, та проведення чищення API, зав'язаних на X11, або їхнє переміщення в окремий бекенд X11. Відзначається прогрес виконання роботи з уникнення застосування дочірніх поверхонь і глобальних координат. З GDK видалено підтримку GDK_SURFACE_SUBSURFACE;
  • Продовжено рефакторинг коду, пов'язаного з виконанням операцій Drag-and-Drop, у тому числі запропоновано роздільні об'єкти GdkDrag та GdkDrop;
  • Спрощено обробку подій, які тепер використовуються тільки для введення. Інші події замінені на окремі сигнали, наприклад, замість подій виводу запропонований сигнал "GdkSurface::render", замість подій налаштування - "GdkSurface::size-changed", замість подій зіставлення - "GdkSurface::mapped", замість gdk_event_handler_set() - "GdkSurface::event";
  • У GDK-бекенд для Wayland додана підтримка portal-інтерфейсу для доступу до налаштувань GtkSettings. Для роботи з методами введення запропоновано підтримку розширення протоколу text-input-unstable-v3;
  • Для розробки віджетів представлений новий об'єкт GtkLayoutManager з реалізацією системи керування розкладкою елементів залежно від обміну видимої області. GtkLayoutManager прийшов на зміну дочірнім властивостям у контейнерах GTK, таких як GtkBox та GtkGrid. Запропоновано декілька готових менеджерів розкладки: GtkBinLayout для простих контейнерів з одним дочірнім елементом, GtkBoxLayout для лінійно вирівняних дочірніх елементів, GtkGridLayout для вирівнювання дочірніх елементів по сітці, GtkFixedLayout для довільного позиціонування дочірніх елементів te;
  • У віджети GtkAssistant, GtkStack і GtkNotebook додані публічно доступні об'єкти для сторінкового виведення дочірніх елементів, на які переведені дочірні властивості даних віджетів, не пов'язані з розкладкою (Layout). Так як всі існуючі дочірні властивості перетворені на звичайні властивості, властивості розкладки або переміщені в сторінкові об'єкти, GtkContainer повністю видалена підтримка дочірніх властивостей;
  • Базова функціональність GtkEntry переміщена в новий віджет GtkText, що також включає розширений інтерфейс редагування GtkEditable. Всі існуючі підкласи введення даних перероблені у формі реалізацій GtkEditable на базі нового віджету GtkText;
  • Додано новий віджет GtkPasswordEntry для форм введення паролів;
  • GtkWidgets додає можливість перетворення дочірніх елементів за допомогою методів лінійної трансформації, що задаються через CSS або аргумент gtk_widget_allocate в GskTransform. Зазначена можливість вже застосована у віджеті GtkFixed;
  • Додані нові моделі формування списків: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel та GtkSingleSelection. Надалі планується додати підтримку моделей списків у GtkListView;
  • У GtkBuilder додано можливість завдання властивостей об'єктів за місцем (inline), замість використання посилань по ідентифікатору;
  • gtk4-builder-tool додана команда для перетворення UI-файлів з GTK 3 в GTK 4;
  • Припинено підтримку ключових тем оформлення (key theme), вкладкових меню (tabular menu) та комбінованих блоків (combo box). Віддалений віджет GtkInvisible.

    Джерело: opennet.ru

Додати коментар або відгук