Выпуск GTK 3.99.0 ΠΎΠ·Π½Π°ΠΌΠ΅Π½ΠΎΠ²Π°Π» Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ для GTK 4

ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ выпуск Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° GTK 3.99.0, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ всС возмоТности, Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ для GTK 4. Π’Π΅Ρ‚ΠΊΠ° GTK 4 развиваСтся Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π½ΠΎΠ²ΠΎΠ³ΠΎ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π»Π΅Ρ‚ API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ опасаясь, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ ΠΏΠΎΠ»Π³ΠΎΠ΄Π° придётся ΠΏΠ΅Ρ€Π΅Π΄Π΅Π»Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния ΠΈΠ·-Π·Π° измСнСния API Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠ΅ GTK. Π Π΅Π»ΠΈΠ· GTK 4 ΠΏΠ»Π°Π½ΠΈΡ€ΡƒΡŽΡ‚ Π²Ρ‹ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Π³ΠΎΠ΄Π°.

Из Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ сущСствСнных ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² GTK 4 ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ:

  • ΠœΠ΅Ρ‚ΠΎΠ΄ раскладки элСмСнтов Π½Π° основС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (constraint layout), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располоТСниС ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… элСмСнтов опрСдСляСтся, ΠΎΡ‚Ρ‚Π°Π»ΠΊΠΈΠ²Π°ΡΡΡŒ ΠΎΡ‚ расстояния Π΄ΠΎ Π³Ρ€Π°Π½ΠΈΡ† ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… элСмСнтов.
  • ΠœΠΎΠ΄ΡƒΠ»ΡŒ отрисовки Π½Π° Π±Π°Π·Π΅ графичСского API Vulkan, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡˆΠ΅ΠΉΠ΄Π΅Ρ€Ρ‹ для ΠΌΠ½ΠΎΠ³ΠΈΡ… рСсурсоёмких элСмСнтов CSS, примСняСмых Π² Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°Ρ… GTK.
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ GSK (GTK Scene Kit) c возмоТностями отрисовки графичСских сцСн Ρ‡Π΅Ρ€Π΅Π· OpenGL ΠΈ Vulkan.
  • ΠŸΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Π½Π° организация отрисовки — вмСсто Π²Ρ‹Π²ΠΎΠ΄Π° Π² Π±ΡƒΡ„Π΅Ρ€ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ примСняСтся модСль Π½Π° основС ΡƒΠ·Π»ΠΎΠ² отрисовки (render nodes), ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹Π²ΠΎΠ΄ компонуСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ Π΄Π΅Ρ€Π΅Π²Π° высокоуровнСвых ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, эффСктивно ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… GPU ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ OpenGL ΠΈ Vulkan.
  • БрСдства для Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ измСнСния фокуса Π²Π²ΠΎΠ΄Π°.
  • ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ модСль доставки событий, которая позволяСт ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· subwindow ΠΏΡ€ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ событий Π²Π²ΠΎΠ΄Π°. ΠΠ΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ связана с Π±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ использованиСм Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… эффСктов, отрисовка ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π±Π΅Π· смСны раскладки Π²ΠΈΠ΄ΠΈΠΌΡ‹Ρ… элСмСнтов ΠΈ, соотвСтствСнно, Π±Π΅Π· subwindow.
  • ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ API GDK с оглядкой Π½Π° использованиС ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Wayland ΠΈ связанных с Π½ΠΈΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ. ЗавязанныС Π½Π° X11 ΠΈ Wayland возмоТности ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ бэкСнды.
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° большая чистка API, Π² Ρ‚ΠΎΠΌ числС ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ классы GtkMenu, GtkMenuBar ΠΈ GtkToolbar, вмСсто ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ GMenu ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π½Π° основС Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… мСню (popover).
  • Π’ GtkTextView ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹ Π²Π²ΠΎΠ΄Π° встроСн стСк для ΠΎΡ‚ΠΊΠ°Ρ‚Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ (undo).
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ класс GtkNative для Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ², ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ отобраТСния ΠΈ способных Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, Π±Π΅Π· привязки ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π°ΠΌ.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Ρ‹, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ для ΠΏΠΎΠΊΠ°Π·Π° Emoji.
  • Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠ² прСдставлСн Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ GtkLayoutManager с Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ систСмы управлСния раскладкой элСмСнтов Π² зависимости ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²ΠΈΠ΄ΠΈΠΌΠΎΠΉ области. GtkLayoutManager ΠΏΡ€ΠΈΡˆΡ‘Π» Π½Π° смСну Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠΌ свойствам Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… GTK, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ GtkBox ΠΈ GtkGrid.
  • Π£ΠΏΡ€ΠΎΡ‰Π΅Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° событий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π²ΠΎΠ΄Π°. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ события Π·Π°ΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ сигналы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, вмСсто событий Π²Ρ‹Π²ΠΎΠ΄Π° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ сигнал «GdkSurface::render», вмСсто событий настройки — «GdkSurface::size-changed».
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ абстракции GdkPaintable, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ€ΠΈΡΠΎΠ²Π°Ρ‚ΡŒ Π³Π΄Π΅ ΡƒΠ³ΠΎΠ΄Π½ΠΎ с Π»ΡŽΠ±Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Π±Π΅Π· нСобходимости выполнСния сортировки layout-слоёв.
  • ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Π½ бэкСнд Broadway, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ GTK Π² ΠΎΠΊΠ½Π΅ web-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°.
  • ΠŸΠ΅Ρ€Π΅Ρ€Π°Π±ΠΎΡ‚Π°Π½ API, связанный с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Drag-and-Drop, Π² Ρ‚ΠΎΠΌ числС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ GdkDrag ΠΈ GdkDrop.

Π£Π»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΌ тСстовым выпуском:

  • Π£Π΄Π°Π»Π΅Π½Π° старая рСализация Аccessibility API для людСй с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΌΠΈ возмоТностями, вмСсто ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π° Π±Π°Π·Π΅ спСцификации ARIA ΠΈ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π° GtkAccessible.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠΊ (GtkEditableLabel).
  • ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½ΠΎΠ²Ρ‹Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ списков для отобраТСния Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ (GtkBookmarkList), строк (GtkStringList) ΠΈ Π±Π»ΠΎΠΊΠΎΠ² Π²Ρ‹Π±ΠΎΡ€Π° (GtkBitset).
  • Π’ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚Π΅ GtkTreeView Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ рСдактирования ячССк.
  • Π’ GtkGridView ΠΈ GtkListView ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½Π° рСализация ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π²Ρ‚ΠΎΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΈ автораскрытия.
  • Π’ GtkWidget Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускорСна ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… дСйствий.
  • Π’ GtkFilterListModel ΠΈ GtkSortListModel Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ.
  • Π’ Inspector Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° инспСктирования ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ списков ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ прямой Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.
  • Π’ GDK обСспСчСно сохранСниС истории ΠΏΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΊΠΈ, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° чистка API GdkDevice, ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ устройств Π½Π° master ΠΈ slave.
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ GDK-бэкСнд для macOS.
  • Для Windows ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ Π½ΠΎΠ²Ρ‹ΠΉ GDK-бэкСнд отрисовки Π½Π° Π±Π°Π·Π΅ ANGLE, прослойки для трансляции Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² OpenGL ES Π² OpenGL, Direct3D 9/11, Desktop GL ΠΈ Vulkan.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru