head 1.1; access; symbols; locks; strict; comment @# @; 1.1 date 2026.05.17.15.49.05; author wiz; state Exp; branches; next ; commitid 6KH3T0XLNLuwpbGG; desc @@ 1.1 log @gtk4: update to 4.22.4. Overview of Changes in 4.22.4, 29-04-2026 ========================================= * Bugs fixed: - !9833 Misc backports (Benjamin Otte, Alessandro Astone, Sergio Costas Rodriguez) - !9866 popoverbin: Point to the center of the widget when popping up (Matthias Clasen, Hari Rana) Overview of Changes in 4.22.3, 18-04-2026 ========================================= * Bugs fixed: - #7833 Input panel misplaced when typing with an input method in a GTKPopover widget (cdbg) - #8146 Snapshot with too small an angle shift freezes (Matthias Clasen) - !9748 Update Polish translation - !9753 gtk-demo: Make --autoquit work again (Benjamin Otte) - !9755 gtk-demo: Make --autoquit work again (Benjamin Otte) - !9763 Backport !9761 (cssprovider: Fix gtk-application-prefer-dark-theme setting) (Florian "sp1rit"​) - !9770 Update Russian translation - !9781 gdksettings-wayland: Apply reduced-motion setting (Alice) - !9797 Update German translation - !9811 Revert "testutils: Warn if setting up language didn't work" (Lukáš Tyrychtr, Matthias Clasen, cdbg) - !9820 Update Norwegian Bokmål translation - !9824 transform: Better float comparisons (Matthias Clasen) - !9826 print dialog: Fix GTask lifecycle management (Matthias Clasen) Overview of Changes in 4.22.2, 31-03-2026 ========================================= * Bugs fixed: - #8117 Docs for the new SVG parser? (Matthias Clasen) - #8119 Wrong colors used for fallback symbolic icons containing classes (Matthias Clasen) - #8125 svg: Animating hrefs does not work (Matthias Clasen) - !9590 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Benjamin Otte) - !9656 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Benjamin Otte) - !9659 Various Vulkan fixes (Benjamin Otte) - !9660 Various Vulkan fixes (Benjamin Otte) - !9665 tests: fix libtestutils build under Windows. (Christoph Reiter) - !9667 Update Serbian translation - !9673 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin Otte) - !9678 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin Otte) - !9679 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte) - !9681 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte) - !9682 Update Galician translation - !9701 Update Turkish translation - !9704 Update Catalan translation - !9711 Load less icons as symbolics (Matthias Clasen) - !9719 Fix traditional symbolic fallback (Matthias Clasen) - !9736 svg: Fix invalidation (Matthias Clasen, Sergio Costas Rodriguez) - !9739 Assorted backports (Alessandro Astone, Jonas Ådahl, Matthias Clasen, Sergey Bugaev) Overview of Changes in 4.22.1, 13-03-2026 ========================================= * Bugs fixed: - #8081 po/README.translators should be updated or removed (Matthias Clasen) - #8082 How Paintable should be translated in these strings? (Matthias Clasen) - #8084 SVG image rendered as grey shape (Matthias Clasen) - #8087 Drop Shadows Make Transparent Textures Significantly Darker (Benjamin Otte) - #8092 Shaper: changing state name doesn't mark file as "changed" (Matthias Clasen) - !9587 Stable backports (luming zh, Victoria, Urtsi Santsi) - !9595 Backport the svg fallback changes (Matthias Clasen) - !9606 testsuite: Limit size of clip test to 4096x4096 (Benjamin Otte) - !9607 widget: Filter is applied before opacity (Benjamin Otte) - !9608 testsuite: Limit size of clip test to 4096x4096 (Benjamin Otte) - !9610 More svg fallback (Matthias Clasen) - !9618 icon editor: Consider state names for unsaved (Matthias Clasen) - !9627 application8: Don't use space in meson generated filename (Zoltán Böszörményi) - !9642 vulkan: Fix invalid read by requerying variable (Benjamin Otte) Overview of Changes in 4.22.0, 06-03-2026 ========================================= * Bugs fixed: - #8037 Regression: DropTarget's ::leave signal is no longer emitted when a drop is finished (Matthias Clasen) - #8079 Issues in the dnd demo in gtk4-demo (Matthias Clasen) - #8080 Gtk program writes a "foo.png" file to current folder (Marco Trevisan (Treviño)) - !9428 demos: Avoid main() from returning due to GApplication.quit (Florian "sp1rit"​) - !9455 win32: Drop the global inhibition counter (g.willems) - !9547 Make WAYLAND_SOCKET handling more reliabe (Jonas Ådahl) - !9553 svg: Allow unsetting values (Matthias Clasen) - !9554 Update Japanese translation - !9555 Update Korean translation - !9556 Update Georgian translation - !9558 accessiblehypertext: Fix doc formatting (Jamie Gravendeel) - !9559 Update Georgian translation - !9560 toplevel-wayland: Free a11y properties on finalize (Maximiliano Sandoval) - !9561 Update Hungarian translation - !9563 svg: drop some api (Matthias Clasen) - !9564 svg: Make the gpa:states condition more flexible (Matthias Clasen) - !9565 svg: Add state names (Matthias Clasen) - !9567 Update Portuguese translation (Hugo Carvalho) - !9568 drop target: Emit the leave signal again (Matthias Clasen) - !9570 Drop accidental files (Matthias Clasen) - !9571 testsuite: Skip gestures if running with no seat (Alessandro Astone) - !9572 droptarget: Fix unconditional leave on cross out (Niklas Wimmer) - !9574 Update Bulgarian translation (Alexander Shopov) - !9575 gtkcheckbutton: Don't use raw label for a11y purposes (Lukáš Tyrychtr) - !9576 icons: Update from devkit (Jakub Steiner) - !9577 wayland: Reset pending offset in Vulkan path (Matthias Clasen) * Translation updates: - Bulgarian (Alexander Shopov) - Georgian (Ekaterine Papava) - Hungarian (Balázs Úr) - Japanese (Makoto Sakaguchi) - Korean (Changwoo Ryu) - Portuguese (Hugo Carvalho) Overview of Changes in 4.21.6, 27-02-2026 ========================================= * GtkTryExpression is a new type of expression that allows for fallback * GtkSvg: - Setting states will have immediate effect when paused - Various optimizations and crash fixes * Media: - The gstreamer backend will use gapless looping with gstreamer 1.28 * Printing: - Avoid applying the n-copies setting twice * Debugging: - The inspector can show GSK profiling information with GSK_DEBUG=profile - gtk4-rendernode-tool has gained a new filter command for node manipulation * Bugs fixed: - #5794 Click gesture doesn't reset properly (Carlos Garnacho) - #6054 GtkSwitch ignores one click after dragging the handle (Carlos Garnacho) - #7432 unexpected enter event before popover close event (Alessandro Astone) - #7605 Printing two copies prints four copies (Lucas Baudin) - #7844 Debugging weird gesture behaviour (Carlos Garnacho) - #7901 Add `key-capture-widget` property to `GtkSearchEntry` (Zoey Ahmed) - #7930 "Broken accounting of active state for widget" (Carlos Garnacho) - #7959 `GtkFilterListModel:watch-items` causes `GtkFilterListModel:n-items` to not notify (Georges Basile Stavracas Neto) - #7994 `Gtk.Expression.bind` fallback expression - #8017 Icon Shaper crash when opening a file (Matthias Clasen) - #8023 Icon editor crash when using a `rect` shape (Matthias Clasen) - #8025 Shaper crashes when opening an icon with a line (Matthias Clasen) - #8035 svg: rotate transformation does not behave as expected (Matthias Clasen) - #8038 GNOME Tour window is incorrectly sized/placed in GNOME 50 (Sebastian Keller) - #8040 Mismatches between GtkSvg and GtkIconPaintable for symbolic icons (Matthias Clasen) - #8041 Legacy icons from gtk4-demo aren't recolored in GtkSvg (Matthias Clasen) - #8042 4.21: Application Class demo doesn't work (Matthias Clasen) - #8043 Instantaneously setting state for GtkSvg (Matthias Clasen) - #8045 GtkFileFilter batch formats function (for glycin) - #8051 Shaper: crash when opening the states popover (Matthias Clasen) - #8053 gradient rendering bug (Benjamin Otte) - #8055 Switching GtkSvg states doesn't work correctly - #8064 Shaper: stroke width defaults changed (Matthias Clasen) - !7541 gdk/wayland/dmabuf: Some cleanups (Marco Trevisan (Treviño)) - !8532 macos: fix deprecation messages (Arjan Molenaar) - !8748 surface: Ignore events for unmapped surface (Alessandro Astone) - !9289 gtkgstmediafile: Use gapless looping (Adrien Plazas) - !9366 Plug GTask leaks (Sergey Bugaev) - !9385 popoverbin: Take into account gesture coordinates and triggers_context_menu (Maximiliano Sandoval) - !9412 gtkwidget: Improve cancellation/denial of gestures on active input (Carlos Garnacho) - !9413 node editor: Stop using support-save (Matthias Clasen) - !9414 android: Init cleanup & Add deprecation checker utility (Florian "sp1rit"​) - !9415 Add some more profiling information (Benjamin Otte) - !9416 gtkapplication: Only keep window state if enabled (Adrian Vovk) - !9417 ci: Use EXTRA_MESON_FLAGS in the gnomeos job (Jordan Petridis) - !9420 snapshot: Avoid scaling textures (Matthias Clasen) - !9421 application: Fix private comments (Maximiliano Sandoval) - !9422 Update Lithuanian translation - !9424 Add even more profiling and heatmap stuff (Benjamin Otte) - !9425 Add gtk4-rendernode-tool filter (Benjamin Otte) - !9427 icons: Apply stroking consistently (Matthias Clasen) - !9429 svg: Fix a crash (Matthias Clasen) - !9430 icon editor: Make it work again (Matthias Clasen) - !9431 icon editor: Fix up shape editing (Matthias Clasen) - !9432 Misc icon editor work (Matthias Clasen) - !9433 icons: Open end arrows (Jakub Steiner) - !9434 Various improvements, in particular glDisable(GL_BLEND) (Benjamin Otte) - !9435 docs: Some updates (Matthias Clasen) - !9436 Tweak the icon paintable parser again (Matthias Clasen) - !9438 node-editor: Improve zoom levels (Benjamin Otte) - !9439 node editor: UI perfectionism (Matthias Clasen) - !9440 Add GtkTryExpression (Jamie Gravendeel) - !9442 icon paintable: Fix up visibility handling (Matthias Clasen) - !9443 Revert "directory list: Fix directory changes" (Matthias Clasen) - !9445 Add G_GNUC_WARN_UNUSED_RESULT to gsk_rect_intersection() (Benjamin Otte) - !9446 Improve GPU renderer handling of composite nodes (Benjamin Otte) - !9447 demo/shadertoy: Provide GLES shaders (Florian "sp1rit"​) - !9448 gsk: Remove duplicated line (Jules Maselbas) - !9449 icons: Update to the latest (Jakub Steiner) - !9451 Make gsk_render_node_get_children() public (Benjamin Otte) - !9453 Fix up icons to work with the symbolic parser (Matthias Clasen) - !9454 CI: Make Vulkan work (Benjamin Otte, Alessandro Astone) - !9456 icon editor: Support open files by drag'n'drop (g.willems) - !9457 icon editor: Add toggle to show the pixel grid (g.willems) - !9460 vulkan: Fix type mismatch on 32-bit (Alessandro Astone) - !9461 builder: Add initial attribute to constant element (Jamie Gravendeel) - !9462 path: Fix alignment issue on 32-bit (Alessandro Astone) - !9463 Updated Lithuanian translaton - !9465 tools: Add rendernodetool filter texture (Benjamin Otte) - !9466 Update Romanian translation - !9467 Update Russian translation - !9468 Update Bulgarian translation - !9469 iconhelper: Respect pixel-size and -gtk-icon-size for icons (Alice Mikhaylenko) - !9470 inspector: Make data copyable (Matthias Clasen) - !9471 vulkan: Use g_get_monotonic_time_ns() in debug code - !9472 Update Kazakh translation - !9473 Update Czech translation - !9474 filefilter: Fix win32 native filechooser not used when any file filter uses a mimetype rule (g.willems) - !9477 rendernode: Remove leftover debug output from repeat nodes (Sebastian Keller) - !9478 pathbuilder: preallocate the arrays to fit a 4k page (Benjamin Otte) - !9479 svg: Handle fill rules for clip-path (Matthias Clasen) - !9480 svg: Optimize allocations a bit (Matthias Clasen) - !9481 isolationnode: Add utility to check if features are needed (Benjamin Otte, Matthias Clasen) - !9482 gsk: Fix setting of the hdr flag (Matthias Clasen) - !9485 testsuite: Make a test more robust (Matthias Clasen) - !9486 snapshot: Mention optimization in the docs (Matthias Clasen) - !9487 builder: Fix initial GObject constant expressions (Jamie Gravendeel) - !9488 snapshot: Unpack container nodes (Benjamin Otte) - !9490 testsuite: Add missing test files to meson.build (Alessandro Astone) - !9491 svg: optimizations (Matthias Clasen) - !9492 svg: Fix a corner case (Matthias Clasen) - !9493 svg: Fix a corner case (Matthias Clasen) - !9494 svg: Implement some conditional processing (Matthias Clasen) - !9495 Pass D-Bus a11y details through gtk-shell protocol (Carlos Garnacho) - !9497 rendernode tool: Allow matching nodes (Matthias Clasen) - !9498 svg: Support a description (Matthias Clasen) - !9499 icon editor: Some robustness for the state dialog (Matthias Clasen) - !9500 gdk/wayland: Clean up EGL surface when detaching a GdkWaylandGLContext (davidaf3) - !9501 filefilter: Add plural mime_types function (Matthias Clasen, Peter Eisenmann) - !9502 svg: Support state updates when paused (Matthias Clasen) - !9503 Update Ukrainian translation - !9504 svg: More fixes for non-animated state changed (Matthias Clasen) - !9506 Update German translation (Christian Kirbach) - !9507 Update Greek translation - !9509 Update Chinese (China) translation (luming zh) - !9510 icon editor: Make a metadata expander (Matthias Clasen) - !9511 svg: Fix animating filter attributes (Matthias Clasen) - !9513 Update Finnish translation - !9514 svg: Make empty language lists static (Matthias Clasen) - !9515 Update Basque translation - !9516 svg: Fix a corner case of pausing (Matthias Clasen) - !9518 Update Slovenian translation - !9519 More fixes for instantaneous state changes (Matthias Clasen) - !9521 cssimagerecolor: Fix typos (Matthias Clasen) - !9522 gsk/gi: Add missing since annotation (Bilal Elmoussaoui) - !9524 wayland: Add some color mgmt v2 defines (Matthias Clasen) - !9525 Update Spanish translation - !9526 Update Lithuanian translation - !9527 tooltip: Fix typo in comment (Robert Ancell) - !9528 svg: Redo the morph transition (Matthias Clasen) - !9529 Update Catalan translation - !9531 Fix brokenness in widget active state maintenance (Carlos Garnacho) - !9532 Stop using emblem-system-symbolic (Matthias Clasen) - !9534 printing: do not do manual copies/number up when the printing portal is used (Lucas Baudin) - !9535 Small android improvements for 4.22 (Florian "sp1rit"​) - !9536 gtkwindow: Also update resize cursor on GtkEventControllerMotion::enter (Carlos Garnacho) - !9537 Update Brazilian Portuguese translation - !9539 Update Turkish translation - !9540 Update Czech translation (AsciiWolf) - !9541 docs: Clarify CSS custom properties support across GTK releases (Leonid Zaburunov) - !9543 svg crash fixes (Matthias Clasen) - !9544 Update French translation - !9546 Another round of crash fixes (Matthias Clasen) * Translation updates: - Basque (Asier Saratsua Garmendia) - Bulgarian (Alexander Alexandrov Shopov) - Catalan (Victor Dargallo) - Chinese (China) (luming zh) - Czech (AsciiWolf, Daniel Rusek) - Finnish (Jiri Grönroos) - French (Guillaume Bernard) - German (Christian Kirbach) - Greek, Modern (1453-) (Efstathios Iosifidis) - Kazakh (Baurzhan Muftakhidinov) - Lithuanian (Aurimas Černius, Aurimas Aurimas Černius) - Portuguese (Brazil) (Rafael Fontenelle) - Romanian (Antonio Marin) - Russian (Artur S0) - Slovenian (Martin) - Spanish (Daniel Mustieles) - Turkish (Emin Tufan Çetin) - Ukrainian (Yuri Chornoivan) Overview of Changes in 4.21.5, 30-01-2026 ========================================= * Early adopters have run into some problems with the state saving APIs that were introduced earlier this cycle, so they have been temporarily removed. We plan to reintroduce state saving early in the next cycle. * gsk: - All of the shader glue code is now autogenerated - Gradients can be interpolated in CSS (i.e. premultiplied) or SVG style (non-premultiplied) - Profiling support has been added (shown as 'heat maps' in the inspector) * svg: - Filters operate in linear RGB (unless overwritten) - Many correctness fixes - The librsvg dependency has been dropped, since GTK can now render svg images natively * css: - SVG filters can be used via data urls * Bugs fixed: - #6870 Feature Request: Add an "accessible ID" property to GtkAccessible (Michael Weghorn) - #7078 Memory leak with cairo renderer + wayland GDK backend (Matthias Clasen) Overview of Changes in 4.22.2, 31-03-2026 ========================================= * Bugs fixed: - #8117 Docs for the new SVG parser? (Matthias Clasen) - #8119 Wrong colors used for fallback symbolic icons containing classes (Matthias Clasen) - #8125 svg: Animating hrefs does not work (Matthias Clasen) - !9590 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Benjamin Otte) - !9656 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Benjamin Otte) - !9659 Various Vulkan fixes (Benjamin Otte) - !9660 Various Vulkan fixes (Benjamin Otte) - !9665 tests: fix libtestutils build under Windows. (Christoph Reiter) - !9667 Update Serbian translation - !9673 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin Otte) - !9678 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin Otte) - !9679 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte) - !9681 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte) - !9682 Update Galician translation - !9701 Update Turkish translation - !9704 Update Catalan translation - !9711 Load less icons as symbolics (Matthias Clasen) - !9719 Fix traditional symbolic fallback (Matthias Clasen) - !9736 svg: Fix invalidation (Matthias Clasen, Sergio Costas Rodriguez) - !9739 Assorted backports (Alessandro Astone, Jonas Ådahl, Matthias Clasen, Sergey Bugaev) * Translation updates: - Catalan (Victor Dargallo) - Galician (Francisco Diéguez Souto) - Serbian (Марко Костић) - Turkish (Sabri Ünal) Overview of Changes in 4.22.1, 13-03-2026 ========================================= * Bugs fixed: - #8081 po/README.translators should be updated or removed (Matthias Clasen) - #8082 How Paintable should be translated in these strings? (Matthias Clasen) - #8084 SVG image rendered as grey shape (Matthias Clasen) - #8087 Drop Shadows Make Transparent Textures Significantly Darker (Benjamin Otte) - #8092 Shaper: changing state name doesn't mark file as "changed" (Matthias Clasen) - !9587 Stable backports (luming zh, Victoria, Urtsi Santsi) - !9595 Backport the svg fallback changes (Matthias Clasen) - !9606 testsuite: Limit size of clip test to 4096x4096 (Benjamin Otte) - !9607 widget: Filter is applied before opacity (Benjamin Otte) - !9608 testsuite: Limit size of clip test to 4096x4096 (Benjamin Otte) - !9610 More svg fallback (Matthias Clasen) - !9618 icon editor: Consider state names for unsaved (Matthias Clasen) - !9627 application8: Don't use space in meson generated filename (Zoltán Böszörményi) - !9642 vulkan: Fix invalid read by requerying variable (Benjamin Otte) Overview of Changes in 4.22.0, 06-03-2026 ========================================= * Bugs fixed: - #8037 Regression: DropTarget's ::leave signal is no longer emitted when a drop is finished (Matthias Clasen) - #8079 Issues in the dnd demo in gtk4-demo (Matthias Clasen) - #8080 Gtk program writes a "foo.png" file to current folder (Marco Trevisan (Treviño)) - !9428 demos: Avoid main() from returning due to GApplication.quit (Florian "sp1rit"​) - !9455 win32: Drop the global inhibition counter (g.willems) - !9547 Make WAYLAND_SOCKET handling more reliabe (Jonas Ådahl) - !9553 svg: Allow unsetting values (Matthias Clasen) - !9554 Update Japanese translation - !9555 Update Korean translation - !9556 Update Georgian translation - !9558 accessiblehypertext: Fix doc formatting (Jamie Gravendeel) - !9559 Update Georgian translation - !9560 toplevel-wayland: Free a11y properties on finalize (Maximiliano Sandoval) - !9561 Update Hungarian translation - !9563 svg: drop some api (Matthias Clasen) - !9564 svg: Make the gpa:states condition more flexible (Matthias Clasen) - !9565 svg: Add state names (Matthias Clasen) - !9567 Update Portuguese translation (Hugo Carvalho) - !9568 drop target: Emit the leave signal again (Matthias Clasen) - !9570 Drop accidental files (Matthias Clasen) - !9571 testsuite: Skip gestures if running with no seat (Alessandro Astone) - !9572 droptarget: Fix unconditional leave on cross out (Niklas Wimmer) - !9574 Update Bulgarian translation (Alexander Shopov) - !9575 gtkcheckbutton: Don't use raw label for a11y purposes (Lukáš Tyrychtr) - !9576 icons: Update from devkit (Jakub Steiner) - !9577 wayland: Reset pending offset in Vulkan path (Matthias Clasen) Overview of Changes in 4.21.6, 27-02-2026 ========================================= * GtkTryExpression is a new type of expression that allows for fallback * GtkSvg: - Setting states will have immediate effect when paused - Various optimizations and crash fixes * Media: - The gstreamer backend will use gapless looping with gstreamer 1.28 * Printing: - Avoid applying the n-copies setting twice * Debugging: - The inspector can show GSK profiling information with GSK_DEBUG=profile - gtk4-rendernode-tool has gained a new filter command for node manipulation * Bugs fixed: - #5794 Click gesture doesn't reset properly (Carlos Garnacho) - #6054 GtkSwitch ignores one click after dragging the handle (Carlos Garnacho) - #7432 unexpected enter event before popover close event (Alessandro Astone) - #7605 Printing two copies prints four copies (Lucas Baudin) - #7844 Debugging weird gesture behaviour (Carlos Garnacho) - #7901 Add `key-capture-widget` property to `GtkSearchEntry` (Zoey Ahmed) - #7930 "Broken accounting of active state for widget" (Carlos Garnacho) - #7959 `GtkFilterListModel:watch-items` causes `GtkFilterListModel:n-items` to not notify (Georges Basile Stavracas Neto) - #7994 `Gtk.Expression.bind` fallback expression - #8017 Icon Shaper crash when opening a file (Matthias Clasen) - #8023 Icon editor crash when using a `rect` shape (Matthias Clasen) - #8025 Shaper crashes when opening an icon with a line (Matthias Clasen) - #8035 svg: rotate transformation does not behave as expected (Matthias Clasen) - #8038 GNOME Tour window is incorrectly sized/placed in GNOME 50 (Sebastian Keller) - #8040 Mismatches between GtkSvg and GtkIconPaintable for symbolic icons (Matthias Clasen) - #8041 Legacy icons from gtk4-demo aren't recolored in GtkSvg (Matthias Clasen) - #8042 4.21: Application Class demo doesn't work (Matthias Clasen) - #8043 Instantaneously setting state for GtkSvg (Matthias Clasen) - #8045 GtkFileFilter batch formats function (for glycin) - #8051 Shaper: crash when opening the states popover (Matthias Clasen) - #8053 gradient rendering bug (Benjamin Otte) - #8055 Switching GtkSvg states doesn't work correctly - #8064 Shaper: stroke width defaults changed (Matthias Clasen) - !7541 gdk/wayland/dmabuf: Some cleanups (Marco Trevisan (Treviño)) - !8532 macos: fix deprecation messages (Arjan Molenaar) - !8748 surface: Ignore events for unmapped surface (Alessandro Astone) - !9289 gtkgstmediafile: Use gapless looping (Adrien Plazas) - !9366 Plug GTask leaks (Sergey Bugaev) - !9385 popoverbin: Take into account gesture coordinates and triggers_context_menu (Maximiliano Sandoval) - !9412 gtkwidget: Improve cancellation/denial of gestures on active input (Carlos Garnacho) - !9413 node editor: Stop using support-save (Matthias Clasen) - !9414 android: Init cleanup & Add deprecation checker utility (Florian "sp1rit"​) - !9415 Add some more profiling information (Benjamin Otte) - !9416 gtkapplication: Only keep window state if enabled (Adrian Vovk) - !9417 ci: Use EXTRA_MESON_FLAGS in the gnomeos job (Jordan Petridis) - !9420 snapshot: Avoid scaling textures (Matthias Clasen) - !9421 application: Fix private comments (Maximiliano Sandoval) - !9422 Update Lithuanian translation - !9424 Add even more profiling and heatmap stuff (Benjamin Otte) - !9425 Add gtk4-rendernode-tool filter (Benjamin Otte) - !9427 icons: Apply stroking consistently (Matthias Clasen) - !9429 svg: Fix a crash (Matthias Clasen) - !9430 icon editor: Make it work again (Matthias Clasen) - !9431 icon editor: Fix up shape editing (Matthias Clasen) - !9432 Misc icon editor work (Matthias Clasen) - !9433 icons: Open end arrows (Jakub Steiner) - !9434 Various improvements, in particular glDisable(GL_BLEND) (Benjamin Otte) - !9435 docs: Some updates (Matthias Clasen) - !9436 Tweak the icon paintable parser again (Matthias Clasen) - !9438 node-editor: Improve zoom levels (Benjamin Otte) - !9439 node editor: UI perfectionism (Matthias Clasen) - !9440 Add GtkTryExpression (Jamie Gravendeel) - !9442 icon paintable: Fix up visibility handling (Matthias Clasen) - !9443 Revert "directory list: Fix directory changes" (Matthias Clasen) - !9445 Add G_GNUC_WARN_UNUSED_RESULT to gsk_rect_intersection() (Benjamin Otte) - !9446 Improve GPU renderer handling of composite nodes (Benjamin Otte) - !9447 demo/shadertoy: Provide GLES shaders (Florian "sp1rit"​) - !9448 gsk: Remove duplicated line (Jules Maselbas) - !9449 icons: Update to the latest (Jakub Steiner) - !9451 Make gsk_render_node_get_children() public (Benjamin Otte) - !9453 Fix up icons to work with the symbolic parser (Matthias Clasen) - !9454 CI: Make Vulkan work (Benjamin Otte, Alessandro Astone) - !9456 icon editor: Support open files by drag'n'drop (g.willems) - !9457 icon editor: Add toggle to show the pixel grid (g.willems) - !9460 vulkan: Fix type mismatch on 32-bit (Alessandro Astone) - !9461 builder: Add initial attribute to constant element (Jamie Gravendeel) - !9462 path: Fix alignment issue on 32-bit (Alessandro Astone) - !9463 Updated Lithuanian translaton - !9465 tools: Add rendernodetool filter texture (Benjamin Otte) - !9466 Update Romanian translation - !9467 Update Russian translation - !9468 Update Bulgarian translation - !9469 iconhelper: Respect pixel-size and -gtk-icon-size for icons (Alice Mikhaylenko) - !9470 inspector: Make data copyable (Matthias Clasen) - !9471 vulkan: Use g_get_monotonic_time_ns() in debug code - !9472 Update Kazakh translation - !9473 Update Czech translation - !9474 filefilter: Fix win32 native filechooser not used when any file filter uses a mimetype rule (g.willems) - !9477 rendernode: Remove leftover debug output from repeat nodes (Sebastian Keller) - !9478 pathbuilder: preallocate the arrays to fit a 4k page (Benjamin Otte) - !9479 svg: Handle fill rules for clip-path (Matthias Clasen) - !9480 svg: Optimize allocations a bit (Matthias Clasen) - !9481 isolationnode: Add utility to check if features are needed (Benjamin Otte, Matthias Clasen) - !9482 gsk: Fix setting of the hdr flag (Matthias Clasen) - !9485 testsuite: Make a test more robust (Matthias Clasen) - !9486 snapshot: Mention optimization in the docs (Matthias Clasen) - !9487 builder: Fix initial GObject constant expressions (Jamie Gravendeel) - !9488 snapshot: Unpack container nodes (Benjamin Otte) - !9490 testsuite: Add missing test files to meson.build (Alessandro Astone) - !9491 svg: optimizations (Matthias Clasen) - !9492 svg: Fix a corner case (Matthias Clasen) - !9493 svg: Fix a corner case (Matthias Clasen) - !9494 svg: Implement some conditional processing (Matthias Clasen) - !9495 Pass D-Bus a11y details through gtk-shell protocol (Carlos Garnacho) - !9497 rendernode tool: Allow matching nodes (Matthias Clasen) - !9498 svg: Support a description (Matthias Clasen) - !9499 icon editor: Some robustness for the state dialog (Matthias Clasen) - !9500 gdk/wayland: Clean up EGL surface when detaching a GdkWaylandGLContext (davidaf3) - !9501 filefilter: Add plural mime_types function (Matthias Clasen, Peter Eisenmann) - !9502 svg: Support state updates when paused (Matthias Clasen) - !9503 Update Ukrainian translation - !9504 svg: More fixes for non-animated state changed (Matthias Clasen) - !9506 Update German translation (Christian Kirbach) - !9507 Update Greek translation - !9509 Update Chinese (China) translation (luming zh) - !9510 icon editor: Make a metadata expander (Matthias Clasen) - !9511 svg: Fix animating filter attributes (Matthias Clasen) - !9513 Update Finnish translation - !9514 svg: Make empty language lists static (Matthias Clasen) - !9515 Update Basque translation - !9516 svg: Fix a corner case of pausing (Matthias Clasen) - !9518 Update Slovenian translation - !9519 More fixes for instantaneous state changes (Matthias Clasen) - !9521 cssimagerecolor: Fix typos (Matthias Clasen) - !9522 gsk/gi: Add missing since annotation (Bilal Elmoussaoui) - !9524 wayland: Add some color mgmt v2 defines (Matthias Clasen) - !9525 Update Spanish translation - !9526 Update Lithuanian translation - !9527 tooltip: Fix typo in comment (Robert Ancell) - !9528 svg: Redo the morph transition (Matthias Clasen) - !9529 Update Catalan translation - !9531 Fix brokenness in widget active state maintenance (Carlos Garnacho) - !9532 Stop using emblem-system-symbolic (Matthias Clasen) - !9534 printing: do not do manual copies/number up when the printing portal is used (Lucas Baudin) - !9535 Small android improvements for 4.22 (Florian "sp1rit"​) - !9536 gtkwindow: Also update resize cursor on GtkEventControllerMotion::enter (Carlos Garnacho) - !9537 Update Brazilian Portuguese translation - !9539 Update Turkish translation - !9540 Update Czech translation (AsciiWolf) - !9541 docs: Clarify CSS custom properties support across GTK releases (Leonid Zaburunov) - !9543 svg crash fixes (Matthias Clasen) - !9544 Update French translation - !9546 Another round of crash fixes (Matthias Clasen) Overview of Changes in 4.21.5, 30-01-2026 ========================================= * Early adopters have run into some problems with the state saving APIs that were introduced earlier this cycle, so they have been temporarily removed. We plan to reintroduce state saving early in the next cycle. * gsk: - All of the shader glue code is now autogenerated - Gradients can be interpolated in CSS (i.e. premultiplied) or SVG style (non-premultiplied) - Profiling support has been added (shown as 'heat maps' in the inspector) * svg: - Filters operate in linear RGB (unless overwritten) - Many correctness fixes - The librsvg dependency has been dropped, since GTK can now render svg images natively * css: - SVG filters can be used via data urls * Bugs fixed: - #6870 Feature Request: Add an "accessible ID" property to GtkAccessible (Michael Weghorn) - #7078 Memory leak with cairo renderer + wayland GDK backend (Matthias Clasen) - #7703 `g_file_copy` crashes if one of src/dest is `GdkAndroidContentFile` and the other is not (Florian "sp1rit"​) - #7957 Gtk.NeverTrigger() throws assertion error - #7964 MacOS: closing a GtkWindow with native window controls does not restore mouse events to other windows - #7968 Crash in Drag Controller on a Finalizing Widget (Sergey Bugaev) - #7970 File descriptors overflow in gtk4 applications, causing application crash (Matthias Clasen) - #7972 gsk_transform_invert doesn't do as advertised (Matthias Clasen) - #7979 gsk_path_builder_add_circle segmentation fault (stackoverflow ?) (Matthias Clasen) - !7890 openuriportal: Use get_startup_notify_id directly (Maximiliano Sandoval) - !9264 Redo GtkAspectFrame (Sergey Bugaev) - !9273 application: Support application inhibition and session-end detection on win32 (g.willems) - !9284 gdk/wayland: Map stylus buttons for BTN_BACK and BTN_FORWARD (Peter Hutterer) - !9321 Redo vertex attribute handling / draw call autogeneration (Benjamin Otte) - !9332 docs: Clarify gtk_widget_get_template_child widget_type parameter (badcel) - !9333 Drop the librsvg dependency (Matthias Clasen) - !9338 ci: Cleanups (Matthias Clasen) - !9339 svg: Add the color attribute (Matthias Clasen) - !9340 svg: Handle font-weight and -size fully (Matthias Clasen) - !9341 gdk: Parse hsl colors more correctly (Matthias Clasen) - !9342 Drop some purposeless empty files (Sergey Bugaev) - !9343 Let GdkArray use g_free_sized (Sergey Bugaev) - !9346 Miscellaneous svg fixes (Matthias Clasen) - !9347 split off some more nodes (Matthias Clasen) - !9348 Revert "tests: Set the win_subsystem where needed" (g.willems) - !9349 gsk: Split off shadow drawing (Matthias Clasen) - !9351 Revert "ci: Allow vs2019 to fail" (Matthias Clasen) - !9352 displacementnode: Fix copy/paste error (Benjamin Otte) - !9354 macos: Determine location of native window controls reliably (Arjan Molenaar) - !9355 svg: Accumulated gradient fixes (Matthias Clasen) - !9360 Support color-interpolation (Matthias Clasen) - !9361 Handle zero-length gradients (Benjamin Otte) - !9362 a11y: Introduce accessible ID (Michael Weghorn) - !9363 svg fixes (Matthias Clasen) - !9367 gsk: Add unpremultiplied gradient interpolation (Matthias Clasen) - !9368 gdk: Fix compile error due to macro ordering (Benjamin Otte) - !9369 textview: Mark return value of gtk_text_view_get_extra_menu() as nullable (Sebastian Dröge) - !9370 css: Support filter urls (Matthias Clasen) - !9372 rendernodeparser: Escape debug message strings properly (Benjamin Otte) - !9374 gsk: Use GdkColorChannel for component transfer (Matthias Clasen) - !9375 text: Remove cursor blinking when not sensitive (Emmanuele Bassi) - !9376 Add rendernode performance monitoring (Benjamin Otte) - !9377 gsk: Make arithmetic match svg implementations (Matthias Clasen) - !9378 Do linear arithmetic compositing (Matthias Clasen) - !9381 application: Rework host app portal registration (Adrian Vovk) - !9382 gsk: Add a color state to component transfer nodes (Matthias Clasen) - !9383 ci: Update macOS runner (René de Hesselle) - !9384 build: Remove objcopy resource build (Benjamin Otte) - !9386 ci: Update the Fedora image (Matthias Clasen) - !9389 ci: Add a gnomeos build (Matthias Clasen) - !9391 main: Fix an annotation (Sergey Bugaev) - !9392 Misc memleak fixes (Matthias Clasen) - !9393 Test node serialization (Matthias Clasen) - !9395 application: Drop public save/restore API (Adrian Vovk) - !9396 gtkcalendar: Add tooltips to the control buttons (Lukáš Tyrychtr) - !9398 testsuite: Try to fix testutils build (Matthias Clasen) - !9399 shortcuttrigger: Make GtkNeverTrigger a GObject singleton (Sergey Bugaev) - !9401 gsk: Set flags on nodes (Matthias Clasen) - !9404 gtkatspicontext: Make sure that the ATs do not have a cached expanded state (Lukáš Tyrychtr) - !9405 svg: Try harder to resolve attributeName (Matthias Clasen) - !9406 gsk: Do not include GSK_PREAMBLE in final shader (Florian "sp1rit"​) Overview of Changes in 4.21.4, 05-01-2026 ========================================= * GtkPopoverBin is a new widget to help with adding context menus (and other popovers) to widgets that don't have them * GtkSvg is a much more complete SVG renderer now * Gsk supports displacement maps (no public api yet) * GtkScrolledWindow scrollbar allocation has been fixed * A11y overlays are now properly positioned on MacOS * Bugs fixed: - #7675 Convert included symbolics from fills to strokes (Jakub Steiner) - #7774 macOS: Accesskit overlay rectangles misplaced when scale factor > 1 - #7793 Wacom tablet pressure stopped working on Wayland after GTK4 4.20.1 upgrade (Peter Hutterer) - #7817 In testsuite/gdk/colorstate.c include of udmabuf.h seems errrorneous (Matthias Clasen) - #7818 GTK 4.21.0 compilation failure on RedHat 8.10 (Matthias Clasen) - #7860 GtkLevelBar doesn't correctly update when value set when unmapped (Ignacy Kuchciński) - #7881 Backdrop blur leaves a transparent area along the edges (Benjamin Otte) - #7892 Shaper: canvas size not respected (Matthias Clasen) - #7893 GtkGLArea + backdrop filter leak (Benjamin Otte) - #7894 GL shader compilation error on Android/Mali (Benjamin Otte) - #7906 Gtk.Svg: Investigate proper viewbox handling - #7914 svg: ellipses w. cx ≠ cy render incorrectly (Matthias Clasen) - #7922 Offloading broken for Showtime on main: "Only textures supported (found GskOpacityNode)" (Benjamin Otte) - #7928 Incorrect CSS crashes Gtk (Matthias Clasen) - #7932 ICON in title bar has no margin (GTK4 aplications) (Matthias Clasen) - #7934 svg use problem (Matthias Clasen) - #7941 svg: Support viewBox on (Matthias Clasen) - #7951 document-save-as-symbolic looks wrong in main (Matthias Clasen) - #7962 issue for `` width with units (Matthias Clasen) - !7901 scrolledwindow: Fix scrollbars allocation for all known cases (Khalid Abu Shawarib) - !8990 Scale access kit node bounding box for retina displays (Arjan Molenaar) - !9047 revealer: Push opacity through GtkSnapshot (Hari Rana) - !9123 Add GtkPopoverBin - !9148 CODING-STYLE: Tiny braces examples improvements (Adrien Plazas) - !9189 gdk: clipboard: fix internal paste mime type resolution order (Dominique Martinet) - !9190 Gtk 4 21 3 (Matthias Clasen) - !9191 icon editor: Allow grouping (Matthias Clasen) - !9192 Fix typo in README.md: "cmompose" → "compose" (Azibom) - !9193 svg: Cosmetics (Matthias Clasen) - !9194 gdk: Cursors improvements (g.willems) - !9195 gdkevents: Fix relative_direction annotations (Maximiliano Sandoval) - !9197 docs: Fixes for RenderReplay and CompositeNode docstrings (Maximiliano Sandoval) - !9198 gtk: Fix target widget lookup for scroll events from "puck" devices (Carlos Garnacho) - !9200 Add GskRepeatNode::repeat and use it for CSS backdrop blur (Benjamin Otte) - !9201 icon editor: Fix path duplication (Matthias Clasen) - !9202 Revert "Merge branch 'wip/jimmac/gtk4-stroke-symbolics' into 'main'" - !9203 icon editor: Fix fill and stroke opacity (Matthias Clasen) - !9204 rendernodeparser: Don't clamp values (Benjamin Otte) - !9205 main: Allow avoiding only certain portals (Peter Eisenmann) - !9206 svg: Add traditional symbolic compat (Matthias Clasen) - !9207 svg: Improve the compat handling a bit (Matthias Clasen) - !9208 CI: restore -Werror with MSYS2 (Christoph Reiter) - !9209 CI: Move the Werror disabling where it belongs (Benjamin Otte) - !9210 Refactor opacity computation (Benjamin Otte) - !9211 reftests: Also include the widget property in the test (Benjamin Otte) - !9212 icon editor: Don't ursurp Ctrl-a (Matthias Clasen) - !9215 display/wayland: Gracefully handle dispose being called twice (Jonas Ådahl) - !9218 svg: Tweak serialize flags (Matthias Clasen) - !9219 nodeparser: Don't name nested "duplicates" (Benjamin Otte) - !9220 svg: Use the viewBox transformation specified in the spec (Florian "sp1rit"​) - !9221 gdkglcontext-win32-wgl.c: Fix running on 32-bit Windows (Chun-wei Fan) - !9223 revealer: Fix fade slide direction (Alice Mikhaylenko) - !9224 icon editor: Cosmetics - !9225 svg: Never try to render - !9226 Refactor offload code to have it deal with copy/paste nodes (Benjamin Otte) - !9227 ci: Disable the msys2-ucrt64 job (Matthias Clasen) - !9228 texthandle: Reposition when surface transform changes (Sergey Bugaev) - !9229 svg: Parse dash arrays more carefully (Matthias Clasen) - !9230 Make diffing code work with copy/paste nodes (Benjamin Otte) - !9231 image: Fix baseline rounding issues (Adrien Plazas) - !9232 svg: Handle bounding boxes better (Matthias Clasen) - !9233 inspector: Make copy/paste nodes display properly (Benjamin Otte) - !9234 CI: install sassc package for MSYS2 (Christoph Reiter) - !9235 Add GskIsolationNode (Benjamin Otte) - !9236 CI: add a MSYS2 job for clang64 (Christoph Reiter) - !9237 svg: Cosmetics (Matthias Clasen) - !9238 Misc svg parsing improvements (Matthias Clasen) - !9239 svg: Handle xlink:href (Matthias Clasen) - !9240 copypaste: Fix memleak (Benjamin Otte) - !9241 svg: Added support for `` & `` nodes (Florian "sp1rit"​, Matthias Clasen) - !9242 CI: enable ccache for the msvc job (Christoph Reiter) - !9243 svg: Fix a few copy/paste errors (Matthias Clasen) - !9245 svg: Fix a serialization oversight (Matthias Clasen) - !9246 offload: Don't skip component transfer nodes (Benjamin Otte) - !9248 inspector: Be more consistent (Matthias Clasen) - !9249 svg: Small refactoring (Matthias Clasen) - !9250 svg: Some parsing fixes (Matthias Clasen) - !9252 svg: Handle inkscapes keywords (Matthias Clasen) - !9253 svg: Better isolation (Matthias Clasen) - !9257 gradients: Check bouds for equality when diffing (Benjamin Otte) - !9258 svg: Parse paint order more completely (Matthias Clasen) - !9259 svg: Add assertions (Matthias Clasen) - !9260 svg: Support `` (Matthias Clasen) - !9261 a11y: Fix the accessible range max value (g.willems) - !9262 svg: Handle overflow (Matthias Clasen) - !9266 ci: Build Node Editor application (Florian "sp1rit"​) - !9267 svg: Support nested `` (Matthias Clasen) - !9271 svg: Move some code around (Matthias Clasen) - !9272 svg: Cosmetics (Matthias Clasen) - !9274 svg: Stop allocating too many values (Matthias Clasen) - !9275 widget: Fix baseline-center valign (Adrien Plazas) - !9276 svg: Rework href values a bit (Matthias Clasen) - !9277 svg: Fix the hue-rotate filter (Matthias Clasen) - !9279 snapshot: Rename variables (Benjamin Otte) - !9280 svg: Support `` (Benjamin Otte, Matthias Clasen) - !9281 Register GskRenderReplay as a GType - !9282 macos: Fix uninitialized variables when attaching vulkan context to a surface (Arjan Molenaar) - !9283 svg: Fix some issues with marker placement (Matthias Clasen) - !9285 testsuite: Small improvement (Matthias Clasen) - !9290 svg: Implement gradient templates (Matthias Clasen) - !9291 svg: support stroking for text (Matthias Clasen) - !9292 svg: Tweak sizing behavior (Matthias Clasen) - !9293 svg: Map Gsk.Repeat onto the correct spread method value (Florian "sp1rit"​) - !9294 gsk: Handle zero-length paths without crashing (Matthias Clasen) - !9295 gtk-demo: Use stroking in the drawing area demo (Benjamin Otte, Matthias Clasen) - !9296 svg: Fix handling of empty filters (Matthias Clasen) - !9297 svg-compare: Add some comfort (Matthias Clasen) - !9298 svg: Implement from-by animation (Matthias Clasen) - !9299 path: Allow to preserve structure (Matthias Clasen) - !9300 svg: Add svg_value_distance (Matthias Clasen) - !9301 svg: Fix hueRotate filters (Matthias Clasen) - !9302 gsk: Drop a leftover typedef (Matthias Clasen) - !9303 svg: Fix bounding boxes for images (Matthias Clasen) - !9304 Implement svgs arithmetic compositing (Matthias Clasen) - !9306 icon editor: Fix example 6 (Matthias Clasen) - !9307 Cosmetic: Typo fix (Matthias Clasen) - !9308 svg-compare: Fix a crash in argument parsing (Matthias Clasen) - !9309 svg: Allow embedding fonts (Matthias Clasen) - !9310 svg: limit rendering up to an upper bound (Florian "sp1rit"​) - !9311 macos: Fix crash due to drag-n-drop on macOS 26 (Arjan Molenaar) - !9312 svg: Support symbols (Matthias Clasen) - !9313 gtk: Fix since annotation (Bilal Elmoussaoui) - !9316 columnview: Fix configuring an adjustment (Sergey Bugaev) - !9317 droptarget: Implement reset (Sergey Bugaev) - !9318 icon editor: Make it work again (Matthias Clasen) - !9319 svg: Implement non-scaling strokes (Matthias Clasen) - !9323 svg: Clean up some parsing (Matthias Clasen) - !9324 Fix up included icons (Matthias Clasen) - !9325 Fix up feImage a bit (Matthias Clasen) - !9327 svg: Cache the render node (Matthias Clasen) - !9330 svg: Don't accept empty strings as numbers (Matthias Clasen) - !9331 svg: Reorganize shape attributes (Matthias Clasen) Overview of Changes in 4.21.3, 24-11-2025 ========================================= This is quick follow-up release to address some memory leaks and other issues with the new backdrop-filter functionality. * Bugs fixed: - #7880 Backdrop filter does not correctly interact with opacity (Benjamin Otte) - #7882 Backdrop filter does not correctly behave with scale (Benjamin Otte) - #7883 gtk 4.20.3 fails to build on 32-bit architectures (Benjamin Otte) - #7885 Backdrop filter does not work with offloaded content (Benjamin Otte) - #7888 Dynamic cursors are incorrectly sized in mixed-DPI environment (Matthias Clasen) - #7889 Backdrop filter doesn't work with filter: opacity() (Benjamin Otte) * Changes: - !9168 svg: Support the paint-order attribute (Matthias Clasen) - !9169 icon editor: Use gsk_path_equal (Matthias Clasen) - !9170 vulkan: Don't treat Vulkan objects as pointers or 32bit breaks (Benjamin Otte) - !9172 rendernodeparser: Remove outdated warning (Benjamin Otte) - !9173 filechooser: Drop unused defines (Guido Günther) - !9174 icon editor: Use GtkSvg for storage (Matthias Clasen) - !9175 Split nodes on 'b' (Matthias Clasen) - !9176 gtk-demo: Use blur-overlay in a demo (Matthias Clasen) - !9177 gsk: Avoid a double-free (Matthias Clasen) - !9179 icon editor: Drop a property (Matthias Clasen) - !9181 icon editor: Allow setting opacity (Matthias Clasen) - !9182 For main (Matthias Clasen) - !9183 icon editor: Allow setting miter limit (Matthias Clasen) - !9186 icon editor: Rename PathEditor to ShapeEditor (Matthias Clasen) - !9187 gsk: Add GskRenderNode.copy_mode (Benjamin Otte) - !9188 icon editor: Rename PathEditor to ShapeEditor (Matthias Clasen) Overview of Changes in 4.21.2, 20-11-2025 ========================================= * GSK: - GskRenderNodeReplay is a new API that can assist with manipulating render node trees in various ways - The new copy and paste node types allow referring to the 'background' during rendering, which enables new features such as backdrop-filter - The new composite node type allows to combine rendering with the 'background' in more interesting ways than just rendering it on top - Radial gradients can be defined with non-concentric circles * GtkSvg - , and are now supported - Gradients are fully supported, including non-concentric radial gradients and reflecting as a spread method * CSS: - A reduced-motion setting has been added, and is exposed to CSS via media queries - the backdrop-filter property is supported * GtkEmojiChooser: - The Emoji chooser has been updated for CLDR 48 * GtkFontDialog: - The language filtering has been improved * Bugs fixed: - GNOME/libadwaita#892 Adw.PreferencesDialog focus move (Alice Mikhaylenko) - #4062 gtk_media_file_set_input_stream assertion failure when using GStreamer backend - #7820 Follow-up on loose ends in the state saving support - #7857 Feature: Add Win32 impl for gtk_file_launcher_open_containing_folder() (Sergey Bugaev) - #7862 icon-editor: SVG not viewable in firefox (Matthias Clasen) - #7866 Vulkan: Validation: vkQueuePresentKHR(): PRESENT_AFTER_WRITE hazard detected. (Benjamin Otte) - #7867 ModelButton: Increasingly long hang when switching AdwMultiLayoutView (Emmanuele Bassi) - #7872 modelbutton: Accels not accessible in non-English (Adrien Plazas) - #7877 Have a toggle for reduce motion in inspector (Emmanuele Bassi) - #7878 CSS tab in inspector doesn't follow reduce-motion (Emmanuele Bassi) - https://gitlab.freedesktop.org/mesa/mesa/-/issues/ * Changes: - !7186 media: Add a bin to handle input streams (Matthias Clasen) - !8826 fontchooser: Add a search bar to filter the language list (Sudip Shil) - !9055 API: Add GskRenderNodeReplay (Benjamin Otte) - !9096 image tool: Some refinement (Matthias Clasen) - !9097 svg: Support the remaining shapes (Matthias Clasen) - !9099 Tie up state saving loose ends (Adrian Vovk) - !9103 icon editor: Plug a memory leak (Matthias Clasen) - !9105 svg: Make fx,fy default to cx,cy (Matthias Clasen) - !9106 svg: Take dependencies into account (Matthias Clasen) - !9107 inspector: css-editor: Replace disable button with a switch (Jules Maselbas) - !9108 svg: fix printf format for size_t variables (g.willems) - !9109 gtkfilechoosercell: Actually add long pressure gesture (Marco Trevisan (Treviño)) - !9110 pathbar: Plug a memory leak (Matthias Clasen) - !9111 Fix touch dropdown selection (!8041) properly (Florian "sp1rit"​) - !9112 Cosmetics: Add section markers (Matthias Clasen) - !9114 svg: Allow keyPoints to be outside of [0, 1] (Matthias Clasen) - !9115 Rework radial gradients (Matthias Clasen) - !9116 svg: fix Windows builds (g.willems) - !9117 win32: Add a facility to open containing folder (Sergey Bugaev) - !9118 css: Fix some properties' inheritance (Adrien Plazas) - !9121 gsk: Don't leak ccs_texture_caches (Doug Nazar) - !9122 colorstate: Add a static assert (Benjamin Otte) - !9124 Merge the theme assets and rework the generation script (Berk Elyesa Yıldırım) - !9125 Split rendernodes into their own files (Benjamin Otte) - !9126 Add copy and paste rendernodes (Benjamin Otte) - !9127 ci: use system meson for android - !9128 vulkan: Rework swapchain present implementation (Benjamin Otte) - !9129 doc: Fix GTK_ACCESSIBLE_PROPERTY_HAS_POPUP (Adrien Plazas) - !9130 gsk: Add gdk_color_is_srgb() (Benjamin Otte) - !9131 svg: Collect test output (Matthias Clasen) - !9132 svg: Fix animate transitions with delay (Matthias Clasen) - !9134 Reset ModelButton accessible relations (Emmanuele Bassi) - !9135 Support repeating conic gradients (Matthias Clasen) - !9136 widget: Sanity-check ancestor type (Sergey Bugaev) - !9137 a11y: When setting an accessible relation, clear out previous reverse ones (Lukáš Tyrychtr) - !9139 gsk: Typo fix (Matthias Clasen) - !9140 Fix repeating conic gradients (Matthias Clasen) - !9143 icon editor: Get rid of AnimationType (Matthias Clasen) - !9144 Revert "gsk: Fix the conic gradient implementation" (Benjamin Otte) - !9145 gtk: Document GTK_DEBUG_SESSION (Maximiliano Sandoval) - !9146 modelbutton: Use accessible keyshortcuts labels (Adrien Plazas) - !9149 svg: Turn simple NULL returns on errors into return_if_fail() (Benjamin Otte) - !9151 icon editor: Allow more shapes (Matthias Clasen) - !9152 emoji: Update data to CLDR 48 (Jeremy Bícha) - !9153 Some more rendernode splitoffs (Matthias Clasen) - !9156 gsk: Change the linear gradient shader api (Matthias Clasen) - !9157 Some icon editor fixes (Matthias Clasen) - !9158 icon-editor: fix msys2 linker failure (g.willems) - !9159 API: Add GskCompositeNode (Benjamin Otte) - !9160 testsuite: Add an "opaque" run to compare-render (Benjamin Otte) - !9161 node editor: Unset GtkApplication:save-state (Matthias Clasen) - !9162 cssprovider: Actually reload when prefers-reduced-motion changes (Alice Mikhaylenko) Overview of Changes in 4.21.1, 29-10-2025 ========================================= * GtkSvg is a new paintable implementation that parses a subset of SVG, including animations. * Bugs fixed: - #7414 Active state is not reset when releasing click outside of popup but inside main window (Carlos Garnacho) - #7671 GL fallback for YCbCr formats on Vulkan is broken (Benjamin Otte) - #7676 `GSK_RENDERER=ngl` makes MacBook Pro's with Dual GPU's use the most power-hungry one by default - #7761 MacOS: \ is mapped differently based on gtk_application_set_accels_for_action call location - #7795 Change in scrolling behavior (Carlos Garnacho, lbaudin) - #7801 Unaligned access in gdk/gdkmemoryformat.c causes testsuite crashes on SPARC (Gregor Riepl) - #7802 [4.21] CSS-defined icons like GtkSpinner are only shown when present in the gtk icon theme (Jakub Steiner) - #7813 Shaper: Cannot parse SVG (Matthias Clasen) - #7823 svg not scaled with display scale since switch to librsvg (Matthias Clasen) - #7831 Crash with "CSS Blend Modes" demo (Urtsi Santsi) - #7841 Suspected typo "symbolc" in docs/reference/gtk/icon-format.md (Matthias Clasen) - #7848 GTK 4.18: Default GdkDisplay gets unreferenced when offscreen rendering via secondary display, causing crash (Benjamin Otte) * Changes: - !8041 dropdown: Allow selecting items via touchscreen? (Florian "sp1rit"​) - !9006 path paintable: Be more relaxed about attaching (Matthias Clasen) - !9007 gtk-demo: Fix loading of gpa files (Matthias Clasen) - !9009 icon editor: examples (Jakub Steiner) - !9010 gtk/symbolicpaintable: Fix a leak (Khalid Abu Shawarib) - !9011 macos(docs): update documentation on graphics switching and keyboard shortcuts (Arjan Molenaar) - !9013 path paintable: Add repeat count (Matthias Clasen) - !9015 icon editor: Visualize transition-easing too (Matthias Clasen) - !9018 icon editor: Preserve shape information better (Matthias Clasen) - !9019 icon editor: Preserve shape information better (René de Hesselle, Matthias Clasen) - !9023 dnd: Mark gtk_drop_target_async_get_formats() return value as `transfer none` - !9026 revealer: Add fade-slide values (Hari Rana) - !9027 revealer: Minor refactor (Hari Rana) - !9029 colorchooserdialog: Make scrollable to fit narrow screens (Stefan Hansson) - !9030 Mark free_to_* methods as transfer full (Sergey Bugaev) - !9032 Plug a minor memory leak (Matthias Clasen) - !9033 docs: fix gi-docgen errors in 4.20.2 (oreo639) - !9034 path paintable: Fix an oversight (Matthias Clasen) - !9035 path paintable: Fix an oversight (Matthias Clasen) - !9038 path paintable: Drop general animations (Matthias Clasen) - !9039 icon editor: Drop the state check (Matthias Clasen) - !9041 docs: Update GtkSettings docs (Matthias Clasen) - !9048 gtkapplication-wayland: Iterate inhibitors safely while freeing (Alessandro Astone) - !9049 icon editor: Some UI tweaks (Matthias Clasen) - !9051 Make gdk_rgba_print public (Matthias Clasen) - !9053 gtk: docs: Fix docs for session restore signals (Maximiliano Sandoval) - !9054 gsk: Plug a memory leak (Matthias Clasen) - !9056 Fix various Vulkan YUV handling issues (Benjamin Otte) - !9057 Add an SVG renderer (Matthias Clasen) - !9059 x11: Restore the logic for tracking compositor presence (Sergey Bugaev) - !9060 gdk: Remove GDK_MEMORY_U16 depth (Benjamin Otte) - !9061 docs: Update GDK_GL_DISABLE docs to match implementation (Benjamin Otte) - !9062 a11y: Centralize the logic determining whether an accessible is a password input (Lukáš Tyrychtr, Matthias Clasen) - !9063 icon editor: Add export (Matthias Clasen) - !9064 svg: Fix max state tracking (Matthias Clasen) - !9065 svg: Fix max state tracking (Matthias Clasen) - !9066 node-editor: Fix dark mode toggle (Matthias Clasen) - !9069 svg: Resolve symbolic colors consistently (Matthias Clasen) - !9070 tests: Robustness fix (Matthias Clasen) - !9071 Add assertions to quiet the compiler (Matthias Clasen) - !9073 svg: Parse style (Matthias Clasen) - !9074 svg: Drop an unused argument (Matthias Clasen) - !9075 vulkan: Fix YUYV values when uploading images (Benjamin Otte) - !9077 Add setting and CSS media query for reduced motion (Emmanuele Bassi) - !9078 icon editor: misc fixes (Juan Pablo Ugarte) - !9080 tools: Cosmetics (Matthias Clasen) - !9081 svg: Small cleanup (Matthias Clasen) - !9082 Make it possible to test rendering errors (Matthias Clasen) - !9084 docs: Remove gtk4-icon-browser from Tools and Demos (Chris Mayo) - !9088 Rename GradientUnits to CoordUnits - !9089 Only build CUPS backend when enabled (Dan Yeaw) - !9090 node-editor: syntax-hilight comments Overview of Changes in 4.21.0, 29-09-2025 ========================================= * Symbolic icons can now be stateful and animated. A new CSS property, -gtk-icon-weight, can be used to modify the weight of strokes. The extensions to the icon format are described here: https://docs.gtk.org/gtk4/icon-format.html * GTK includes a new org.gtk.Shaper demo that serves as an editor for the new symbolic icon format. * All included icons have been converted to use strokes * The Wayland backend relies on the portal for settings * The Wayland backend implements the experimental xx-session-management protocol. To enable it, use GDK_DEBUG=session-mgmt * GtkApplication has gained support for state saving. To try this out you need to use gnome-session main and enable the session management protocol * A GtkAccessibleHypertext interface lets accessibles provide information about embedded links * GtkAccessibleText can set caret and selection positions * Accessibility for dropdowns, list widgets, switches and entries has been improved * GtkFileLauncher can provide writable access to files when used in a flatpak * Some enumerations have had their introspected value names corrected: GdkPaintableFlags, GdkFullscreenMode, GskPathForeachFlags, GtkConstraintVflParserError This is an API change for language bindings * GLib 2.84 is required now * Bugs fixed: - #5712 Context menus in KGX and g-t-e fail to activate actions on X11 - #7309 Use the new accessible "switch" role instead of toggle button / checkbox for Gtk switches (Matthias Clasen) - #7602 Problems with GtkBuilder releasing references (Matthias Clasen) - #7727 Stop using gsettings as fallback in the wayland settings code (Matthias Clasen) - #7739 a11y: Add caret and selection setters to GtkAccessibleText (Matthias Clasen) - #7755 Only the first text-shadow value gets applied when there are multiple (regression) (Matthias Clasen) - #7757 Make sense of AtkHyperlink (Matthias Clasen) - #7766 gtk4-icon-editor does not seem to run with lang that set another decimal symbol - #7767 macOS: Main menu items with "action" and "target" set do not work (Thomas Holder) - #7777 shaper: Add separate alpha slider (Matthias Clasen) * Changes: - !6462 gdk/x11: Track enter/leave events on grab surface while button is held (gldrk) - !8502 State saving support (Matthias Clasen, Carlos Garnacho, Adrian Vovk) - !8687 builder: Come clean about floating references (Matthias Clasen) - !8892 Add GtkPathPaintable (Matthias Clasen) - !8914 accessibletext: Add setters (Matthias Clasen) - !8925 Add threading documentation (Matthias Clasen) - !8928 surface: Mark region as nullable in set_input_region (João Pereira) - !8930 settings: Call g_value_unset() after _gtk_settings_parse_convert() (Takao Fujiwara) - !8931 wayland: Invert flipped transforms (Robert Mader) - !8933 Fix upright text carets (Matthias Clasen) - !8935 gsk: Drop an unused private flag (Matthias Clasen) - !8936 Some small gsk fixes (Matthias Clasen) - !8937 text: Apply all text shadows (Matthias Clasen) - !8945 symbolics: use strokes (Jakub Steiner, Matthias Clasen) - !8946 wayland: Avoid a cursor size of zero (Matthias Clasen) - !8947 Fix a broken cast (Matthias Clasen) - !8948 build: Require GLib 2.84 (Matthias Clasen) - !8949 ci: Remove "allow_failure" in MacOS build (sid) - !8950 a11y atspi: No more report error for AT-SPI Text SetSelection (Michael Weghorn) - !8952 Fix memory leak with GtkPathBar (evan-razzaque) - !8953 Some follow-up things for animated icons (Matthias Clasen) - !8954 path paintable: Respect origin for attachments (Matthias Clasen) - !8955 docs: Typo fix (tytan652) - !8956 im context: add invalid-composition signal (Cristian Iacovlev) - !8957 path paintable: Rename the blur transition (Matthias Clasen) - !8958 Add prefix g-i annotation for some enums (VBB) - !8959 icon-editor: Ensure dot decimal point for float format (tytan652) - !8960 path paintable: Be more careful (Matthias Clasen) - !8961 gtk-demo: Refresh the images demo (Matthias Clasen) - !8962 Set the GTK_ACCESSIBLE_PROPERTY_VALUE_TEXT in GtkDropDown (Matthias Clasen) - !8963 entry: Improve accessiblity (Matthias Clasen) - !8964 Listview accessibility - !8967 Portal check: activate the service if needed (Adrian Vovk) - !8968 application: Document state vfuncs (Maximiliano Sandoval) - !8969 application: Fix Since tags (Matthias Clasen) - !8971 path paintable: Reduce weight variation (Matthias Clasen) - !8972 gtkapplication-wayland: simplify chainup (Georges Basile Stavracas Neto) - !8973 Tweak stroke width range again (Matthias Clasen) - !8974 gdk: Fix a string leak (Alice Mikhaylenko) - !8975 icons: Stroke only stock (Jakub Steiner) - !8976 picture: Allow symbolic paintables (Matthias Clasen) - !8977 wip: Reduce the internal icontheme (Matthias Clasen) - !8979 icon editor: Don't use a tempfile (Matthias Clasen) - !8981 file launcher: Make writable work (Matthias Clasen) - !8982 filterlistmodel: Fix position when emitting items-changed for item watches (Kévin Commaille) - !8984 icon editor: Allow setting initial state (Matthias Clasen) - !8985 icon editor: Durations are now in ms (Matthias Clasen) - !8987 gdk: Use longer timeout to reach to portals (Valentin David) - !8988 css: Add an icon weight property (Matthias Clasen) - !8989 Update expected errors for css tests (Matthias Clasen) - !8991 menutracker: Add some assertions (Matthias Clasen) @ text @$NetBSD$ waylandsocket is 'if os_linux' in testsuite/gdk/meson.build https://gitlab.gnome.org/GNOME/gtk/-/work_items/8210 --- testsuite/headless/meson.build.orig 2026-04-29 22:39:35.000000000 +0000 +++ testsuite/headless/meson.build @@@@ -20,10 +20,12 @@@@ if get_option('b_sanitize') != 'address' env: env, ) - test('waylandsocket', - find_program('run-headless-wayland-tests.sh', dirs: meson.current_source_dir()), - args: [test_executables['waylandsocket'].full_path()], - suite: ['headless'], - env: env, - ) + if os_linux + test('waylandsocket', + find_program('run-headless-wayland-tests.sh', dirs: meson.current_source_dir()), + args: [test_executables['waylandsocket'].full_path()], + suite: ['headless'], + env: env, + ) + endif endif @