Overview of Changes in 4.23.2, 27-06-2026
=========================================

* GTK now respects the reduced motion setting in various places
  and avoids animations (GtkSpinner, GtkStack, GtkRevealer)

* New GtkShortcutTrigger functions it easier to handle synonymous
  keys (in particular keypad keys). The new functions are
  gtk_alternative_trigger_newv,
  gtk_shortcut_trigger_create_with_aliases and
  gtk_shortcut_trigger_create_for_menu

* Type-to-search (in particular interaction with input methods)
  has been redone, switching from a "pull" to a "push" approach.
  See gtk_editable_set_input_interceptor for more details.
  As part of this, gtk_event_controller_key_forward has been
  deprecated.

* The first part of ongoing frameclock work has landed, improving
  our ability to deliver frames on time

* A number of GtkList/Grid/ColumnView size allocation issues
  have been addressed. Please let us know if you spot any remaining
  or new problems.

* GtkSvg:
 - Support feTurbulence
 - Improved text handling, including baseline-shift, whitespace
   handling, text-decoration, proper fill+stroke, and more

* Build:
 - The pango dependency has been bumped to 1.58.0

* Bugs fixed:
  - #8230 GtkMenuButton with an autohide=false popover does not focus the
    popover when showing
  - !9906 Fix Gtk.ListView/Gtk.GridView measure with for_size != -1 (Vladimir
    Romanov)
  - !9958 Logically focus IM context in type-to-search (Carlos Garnacho)
  - !10001 columnview layout (Sergey Bugaev)
  - !10023 gtkpopover: Always set focus to a child during show (Lukáš Tyrychtr)
  - #8075 Tooltips unminimize windows unexpectedly
  - #8187 EventControllerLegacy macos: one-pixel difference between position of
    button press and release events
  - #8194 Blurry text regression in 4.23.0
  - #8223 New svg spinner rendering issues
  - #8229 The accessible parent of the application should not be null
  - #8235 Inspector crashes with CSS with malformed inline svg effects (Matthias
    Clasen)
  - #8241 Shaper: wrong tooltip for created icon (Matthias Clasen)
  - #8244 Shaper: Weight now only affects the active icon (Matthias Clasen)
  - #8246 Shaper: crash on changing visibility for states
  - #8248 Shaper: Changing the state from "Display Settings" does not change it
    in the sidebar (Matthias Clasen)
  - #8249 Shaper: Problem with "Overlaps" icon (Matthias Clasen)
  - #8250 Shaper: Doesn't ask for saving changes when loadinga file or an
    example (Matthias Clasen)
  - #8258 Shaper: cannot add states (Matthias Clasen)
  - #8259 Crash when transitioning between filter: none and filter: url()
    (Matthias Clasen)
  - #8262 svg: animateTransform doesn't work for specific file (Matthias Clasen)
  - #8264 svg: fractional values for repeatCount don't work (Matthias Clasen)
  - #8265 Coordinates for turbulence seem computed wrong (Matthias Clasen)
  - #8268 Shaper: XML changes reset the state to 0 (Matthias Clasen)
  - #8270 Shaper: Invalid changes to XML, related to shape geometry, crash it
    (Matthias Clasen)
  - #8278 GtkRevealer uses too much space (g.willems, Matthias Clasen)
  - #8279 Shaper: 'empty' state doesn't get saved (Matthias Clasen)
  - #8280 Shaper: state management issues (Matthias Clasen)
  - !9569 macos: unmap window when minimized (Arjan Molenaar)
  - !9890 gdk/macos: Convert mouse event coordinates consistently (Dario Marino
    Saccavino)
  - !9990 Add GtkActivateTrigger (Matthias Clasen)
  - !9991 Improvements for the filebrowser demo (g.willems)
  - !9992 spinner: Debug things (Matthias Clasen)
  - !9993 doc: input-handling: fix link to event controllers (Peter Shkenev)
  - !9995 Fix the build with tracker (Matthias Clasen)
  - !9996 Fix parsing of conic-gradient() CSS (Benjamin Otte)
  - !9998 Fix various issues with svg animations (Matthias Clasen)
  - !9999 Update Romanian translation
  - !10000 svg: Fix handling of transform-origin (Matthias Clasen)
  - !10002 Update Slovenian translation
  - !10003 spinner: Respect reduced motion (Matthias Clasen)
  - !10004 various cleanups (Benjamin Otte)
  - !10005 frameclock: Rename (un)inhibit_freeze to start/stop and clean up
    (Benjamin Otte)
  - !10006 gdk/wayland: Make clipboard and primary selection updates less racy
    (Vlad Zahorodnii)
  - !10007 gtk4-demo: Tweak the error states demo (Matthias Clasen)
  - !10009 gtkatspiroot: Return the desktop as its parent (Lukáš Tyrychtr)
  - !10015 shortcuttrigger: Expand docs a little (Matthias Clasen)
  - !10016 inspector: Be robust against far out errors (Matthias Clasen)
  - !10017 css: Fix a thinko (Matthias Clasen)
  - !10018 svg: Allow file:// urls in hrefs (Matthias Clasen)
  - !10019 Fix another few crashes in GtkSvg (Matthias Clasen)
  - !10020 svg: Fix rendering of some wikipedia examples (Matthias Clasen)
  - !10021 svg: Use correct namespace (Guido Günther)
  - !10024 Cosmetic fixes (Matthias Clasen)
  - !10025 Support turbulence (Matthias Clasen)
  - !10027 gtk: Fix shortcuts regressions (g.willems)
  - !10028 entry: Avoid blank leftovers when removing icons (g.willems)
  - !10029 frameclock: More cleanup (Christian Hergert, Benjamin Otte)
  - !10031 docs: Add missing nodes to the node format docs (Matthias Clasen)
  - !10032 Assorted svg fixes (Matthias Clasen)
  - !10033 Some icon editor fixes (Matthias Clasen)
  - !10035 Next FrameClock refactoring step (Benjamin Otte)
  - !10040 icon editor: Clean up one example (Matthias Clasen)
  - !10042 Drop an erroneous file (Matthias Clasen)
  - !10046 display: Add gdk_display_get/set_prefer_vulkan() (Benjamin Otte)
  - !10048 gsk: fix GskTransform leak in gsk_gpu_render_pass_push_transform
    (Ampernic)
  - !10052 svg: Add a missing turbulence test (Matthias Clasen)
  - !10058 rendernode-tool: Make info tool deal better with recursive nodes
    (Benjamin Otte)
  - !10059 testsuite: Add a test that causes lots of globals (Benjamin Otte)
  - !10061 docs: fix typo in node-format.md (John Bampton)
  - !10062 Fix mipmap sampling for dmabufs (Benjamin Otte)
  - !10064 icon editor: Preserve state when swapping svgs (Matthias Clasen)
  - !10065 memoryformat: Add missing GDK_MEMORY_ABGR2101010_PREMULTIPLIED docs
    (Sebastian Dröge)
  - !10067 Update Slovenian translation
  - !10070 revealer: Respect the reduced motion setting (Matthias Clasen)
  - !10072 Shaper: Set foreground color for demo5 (Jakub Steiner)
  - !10074 svg: Handle details for text decoration (Matthias Clasen)
  - !10075 svg: Rework text rendering (Matthias Clasen)
  - !10079 Revert "filechooserutils: Stop using pixbufs"
  - !10082 Update Polish translation (Victoria Niedzielska)
  - !10083 Fix the build against pango main (Matthias Clasen)
  - !10084 icon editor: Handle states a bit better (Matthias Clasen)
  - !10085 Center state names in state editor (Urtsi Santsi)
  - !10087 stack: Avoid resizing animation in reduce-motion mode (g.willems)
  - !10090 gl: Actually report partial damage (Benjamin Otte)
  - !10091 gsk: Account for render offset when snapping glyphs (Alessandro
    Astone)
  - !10093 android: Fix timestamp unit (Benjamin Otte)
  - !10094 svg: Redo whitespace handling (Matthias Clasen)
  - !10096 application-x11: Fix saved state ownership (Alessandro Astone)
  - !10097 svg: More whitespace handling (Matthias Clasen)

* Translation updates:
  - Polish (Victoria Niedzielska)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)

Overview of Changes in 4.23.1, 29-05-2026
=========================================

* Snapping: GTK can now snap contents to device pixel boundaries,
  for better control of rendering with fractional scales

* SVG:
 - Support the dominant-baseline attribute for text
 - Support media queries in CSS
 - Fix priority order of styles and animations

* Touch:
 - Long press on entries opens the touch menu

* Android:
 - Frame timing is now aligned with vsync

* Bugs fixed:
  - #3542 Window dragging doesn't work with touch on X11 (Alessandro Astone)
  - #4529 Popover cannot be closed after opening a child popover (Carlos
    Garnacho)
  - #5610 Unable to move windows by dragging the title bar on GTK4 Xorg with
    touchscreens (Alessandro Astone)
  - #5890 X11 drag-and-drop failure not communicated to source, unlike Wayland
    (Will Warner)
  - #7508 In X11, touchscreen double tap requires very precise input (Alessandro
    Astone)
  - #7515 X11 touchscreen events are handled as mouse events (Alessandro Astone)
  - #7657 Nautilus and other GTK4 applications crash when writing in a text box
    using the on-screen keyboard (Carlos Garnacho)
  - #8034 MacOS: Clipboard: Pasting url from safari cannot be decoded with
    text/uri-list
  - #8138 android: use Choreographer for vsync-aligned frame timing
  - #8140 Accessibility: GTK4 TextView reports wrappet lines incorrectly to Orca
  - #8142 svg: Shadow dom issues (Matthias Clasen)
  - #8146 Snapshot with too small an angle shift freezes (Matthias Clasen)
  - #8153 android: Text handles within popups are wrongly positioned (Florian
    "sp1rit"​)
  - #8156 svg: Fix priority order of animations and styles (Matthias Clasen)
  - #8159 Properties never installed
  - #8168 Application looses focus after selecton of GtkComboBoxText (Carlos
    Garnacho)
  - #8170 wayland: Don't send v2 text_input content hints when v1 is bound
    (Matthias Clasen)
  - #8175 Android builder needs meson 1.11 (Florian "sp1rit"​)
  - #8177 Shaper: crash on load (Matthias Clasen)
  - #8178 Symbolic icons rendering in wrong style (Matthias Clasen)
  - #8179 Shaper: UI for fill/stroke doesn't seem to have any effect
  - #8184 Zoomed image in Loupe makes hardware renderer glitch (Benjamin Otte)
  - #8186 GTK4 TextView doesn't emit object:text-selection-changed events when
    it should (and does when it shouldn't)
  - #8189 GskGpuCache causing FD exhausting for HDR video playback on lavapipe
    (Benjamin Otte)
  - #8191 DragSource race condition leads to corrupted memory (Khalid Abu
    Shawarib)
  - #8193 Conditional jump on uninitialized value in SVG parser (Matthias
    Clasen)
  - #8196 Shaper: launches light when in dark mode. (Matthias Clasen)
  - #8203 GtkConstraintVflParser parser doesn't allow underscores in VFL view
    identifiers (Emmanuele Bassi)
  - #8210 non-Linux build fix
  - #8216 Add a way to dump the inspector info for bug reports into a text file
    (Matthias Clasen)
  - !6480 gtklabel: Queue a draw after changing the focused link (Philip
    Withnall)
  - !8827 fontdialog: update font-dialog-set-language API to set an initial
    language filter (Sudip Shil)
  - !8906 Add GdkAppLaunchContextWin32 (Luca Bacci)
  - !8951 X11 backend touchscreen fixes (Alessandro Astone)
  - !9523 macos: Add support for pasting url's as text/uri-list (Arjan Molenaar)
  - !9579 Report mnemonic shortcuts through a11y (Lukáš Tyrychtr)
  - !9614 gtk: unrealize window if backing surface got destroyed (Florian
    "sp1rit"​)
  - !9715 fix incorrect baseline calculation for vertical boxes (Max Bachmann)
  - !9760 widget: Handle coordinate translation failure (Sergey Bugaev)
  - !9784 popover: Don't set GDK_ANCHOR_RESIZE_{X,Y} when we can't be resized
    (Sergey Bugaev)
  - !9790 Use named enum values instead of 0 (Maximiliano Sandoval)
  - !9798 Use G_PARAM_STATIC_NAME on properties
  - !9799 win32: Fix public symbol not being exported (Sergey Bugaev)
  - !9802 Stop exporting various private symbols (Sergey Bugaev)
  - !9807 svg: Fix use of alternative views (Matthias Clasen)
  - !9808 svg: Move the renderer to a separate file (Matthias Clasen)
  - !9809 gtkfilelauncher/android: Pass correct pointer as URL (Florian
    "sp1rit"​)
  - !9810 glsl: Add snapping APIs to GLSL (Benjamin Otte)
  - !9812 Fix copy-pasted doc blocks in GtkSvgWidget (Emmanuele Bassi)
  - !9813 gtkpango: Don't land on a single char of a wrapped line twice (Lukáš
    Tyrychtr)
  - !9814 svg: Avoid a compiler warning (Matthias Clasen)
  - !9815 wayland: Fix underlining of preedit (Matthias Clasen)
  - !9818 gtk-demo: Fix the images demo (Matthias Clasen)
  - !9819 android: use Choreographer for vsync-aligned frame timing (Kristjan
    ESPERANTO)
  - !9822 Small misc fixes (Theo de Raadt, Florian "sp1rit"​)
  - !9823 Update German translation (Christian Kirbach)
  - !9825 print dialog: Fix GTask lifecycle management (Matthias Clasen)
  - !9829 svg: Make shadow trees work properly (Matthias Clasen)
  - !9830 gtk: Rework text handles (Florian "sp1rit"​)
  - !9831 theme: Fix context menus in grid views (Alice Mikhaylenko)
  - !9832 testsuite: Change the font in a compare test (Benjamin Otte)
  - !9835 add language filtering to font picker (Sudip Shil)
  - !9838 android: Expose accent-color property in Gdk.AndroidDisplay (Florian
    "sp1rit"​)
  - !9839 Misc fixes (Matthias Clasen)
  - !9842 icons: Sync with icon devkit (Jakub Steiner)
  - !9843 Only activate osk on touch (Matthias Clasen)
  - !9844 API: Add snapping (Matthias Clasen, Benjamin Otte)
  - !9845 android/popup: fix position of cascaded popups (Florian "sp1rit"​)
  - !9846 application: Fix a memory leak (Matthias Clasen)
  - !9849 gdk/event: Document timestamp being in milliseconds (Florian
    "sp1rit"​)
  - !9850 android: attempt to restore toplevel identifier from save-state
    (Florian "sp1rit"​)
  - !9857 selectionmodel: Amend the docs (Matthias Clasen)
  - !9858 gpu: Don't double-clip gradients (Benjamin Otte)
  - !9859 colormatrixnode: Make the bounds explicit (Benjamin Otte)
  - !9860 win32: Convert GetSystemMetrics results to logical units (Sergey
    Bugaev)
  - !9861 svgwidget: Fix activate signal parameter count (Liu Jinchang)
  - !9863 popoverbin: Point to the center of the widget when popping up (Hari
    Rana)
  - !9864 printdialog: Fix a crash (Matthias Clasen)
  - !9865 popoverbin: Improve keyboard placement (Matthias Clasen)
  - !9868 svg: support dominant-baseline (Florian "sp1rit"​)
  - !9870 icons: Fix up media-record-symbolic (Matthias Clasen)
  - !9871 gsk: Avoid cache explosion in 3D
  - !9872 icons: Remove compat classes (Matthias Clasen)
  - !9873 Add a some details about MRs (Matthias Clasen)
  - !9874 gpu: Don't override fields already marked as modified (Benjamin Otte)
  - !9875 android: drop explicit fontconfig master dependency (Florian
    "sp1rit"​)
  - !9878 Revert !9875 & ci: bump meson to 1.11.1 (Florian "sp1rit"​)
  - !9879 Update Persian translation
  - !9881 widgets: Add missing GDK_KEY_KP_Space for activation (Sergio Costas
    Rodriguez)
  - !9882 svg: Clean up some private apis (Matthias Clasen)
  - !9883 Redo the transform demo (Matthias Clasen)
  - !9884 Various snapshot & rendernodeparser fixes (Benjamin Otte)
  - !9885 tools: Add a "cut" rendernode filter (Benjamin Otte)
  - !9887 Update Romanian translation
  - !9888 tools: Add simplify filter (Benjamin Otte)
  - !9889 Add more content to the rotating sphere benchmarks (Matthias Clasen)
  - !9894 Update Slovenian translation
  - !9895 Rework GDK grabs (Carlos Garnacho)
  - !9896 Fix memory leak when focused widget is hidden before being unparented.
    (Ben Mather)
  - !9897 text: Open touch menu on long press
  - !9899 editable: Fix typo in example (Guido Günther)
  - !9900 android: Scale bounds of AndroidMonitor (Florian "sp1rit"​)
  - !9903 gpu: Trigger cache GC from dmabuf downloading code (Benjamin Otte)
  - !9907 various fixes (Benjamin Otte)
  - !9908 textview: Sync touch behavior (Matthias Clasen)
  - !9909 docs: Fix CSS examples (Evangelos Paterakis)
  - !9910 svg: Cosmetics (Matthias Clasen)
  - !9911 inspector: Handle Unicode more carefully (Matthias Clasen)
  - !9914 gtk-demo: No session saving in special modes (Matthias Clasen)
  - !9915 svg: Fix a compiler warning (Matthias Clasen)
  - !9920 Clarify how to acquire environment information in `Bug.md`. (Mr.
    Beedell, Roke Julian Lockhart (RJLB))
  - !9921 android/ime: get surface when needed instead in set_client_widget
    (Florian "sp1rit"​)
  - !9923 icon editor: Avoid a crash (Matthias Clasen)
  - !9924 Add a gobject-linter job (Jordan Petridis, Benjamin Otte)
  - !9925 gi: Various since annotations fixes (Bilal Elmoussaoui)
  - !9926 svg: Handle media queries (Matthias Clasen)
  - !9927 Complete pspec fixes from previous MRs (Benjamin Otte)
  - !9930 miscellaneous fixes and cleanups (Matthias Clasen)
  - !9931 Remove GTK_PARAM_READABLE/WRITABLE/READWRITE (Benjamin Otte)
  - !9932 Move private functions into private header (Benjamin Otte)
  - !9933 docs: Make docs for GtkAlign match reality (Matthias Clasen)
  - !9936 gtktextview: Send selection changed signal when we should (Lukáš
    Tyrychtr)
  - !9937 constraint: Fix VFL parsing of view names (Emmanuele Bassi)
  - !9938 widget: Move ::has-default notify into set_has_default() (Benjamin
    Otte)
  - !9939 examples: fix bloatpad missing icons (g.willems)
  - !9940 dropdown: Add missing a11y control relation (g.willems)
  - !9943 More paramspec improvements (Benjamin Otte)
  - !9944 icon editor: Remove some leftover code (Matthias Clasen)
  - !9946 gdk: Fix checking NULL portal usage (Peter Eisenmann)
  - !9947 Lots of simple fixes (Benjamin Otte)
  - !9948 Fix issues with G_BEGIN/END_DECLS (Benjamin Otte)
  - !9949 Use g_clear_*() (Benjamin Otte)
  - !9952 Header renaming and autoptr addition (Benjamin Otte)
  - !9953 win32: Remove gdkwin32cursor.h from the public API (Benjamin Otte)
  - !9954 icon editor: More catching up (Matthias Clasen)
  - !9957 testsuite: fix non-Linux wayland build. (Thomas Klausner)
  - !9959 icon editor improvements (Matthias Clasen)
  - !9960 Add a way to dump general info (Matthias Clasen)
  - !9961 Update Romanian translation
  - !9962 treednd: use a proper flexible array member (Alyssa Ross)
  - !9963 vulkan: fix descriptor sets for masks (Benjamin Otte)
  - !9964 macos: don't show test processes in the dock (Johan Dahlin)
  - !9966 macos: fix URL encoding regression in pasteboard file URIs (Roberto
    Moura)
  - !9967 icon editor: stylesheet editing (Matthias Clasen)
  - !9969 Update Georgian translation
  - !9971 Various fixes (Benjamin Otte)
  - !9974 svg: Don't write out gpa attributes if not doing gpa (Matthias Clasen)
  - !9975 ci: Save the ASAN testsuite artifacts (Benjamin Otte)
  - !9976 svg: Work on test coverage (Matthias Clasen)
  - !9977 inspector: Avoid a needless roundtrip (Matthias Clasen)
  - !9978 icon editor: Handle <style> media attributes (Matthias Clasen)
  - !9979 Fix sporadic svg crashes (Matthias Clasen)
  - !9981 gsk: Tweak some doc images (Matthias Clasen)
  - !9983 Update Slovenian translation
  - !9986 Unify GTK native rendering code in gtknative.c (Benjamin Otte)
  - !9987 svgwidget: Add a private paintable getter (Matthias Clasen)

* Translation updates:
  - Georgian (Ekaterine Papava)
  - German (Christian Kirbach)
  - Persian (Danial Behzadi)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)


Overview of Changes in 4.23.0, 14-04-2026
=========================================

* SVG:
 - GtkSvgWidget is a widget to display SVG, with some support
    for interactive aspects of SVG
 - We now handle <a>, <view>, <title> and <desc>
 - Problems with recoloring of symbolic icons have been fixed
 - GtkSvg is now used for all SVG icons
 - GtkSpinner is using GtkSvg

* Wayland:
 - Version 3.2 of the text protocol is supported
 - xdg-session-management-v1 is used

* Session saving:
 - The session saving support is back

* GSK:
 - A number of 10bit image formats are supported
 - The cache allocator has been rewritten
 - We are now using clip masks to reduce the number of offscreens

* The Android backend has been ported to SDK 36

* The gtk4-encode-symbolic tool for producing symbolic
  png icons has been dropped. If you were using it,
  just ship the symbolic svg icons instead

* Bugs fixed:
  - #6071 FileDialog filter becomes (None) when navigating via top bar
  - #7567 Black borders around windows in Windows (Dan Yeaw)
  - #7833 Input panel misplaced when typing with an input method in a GTKPopover
    widget (cdbg)
  - #8081 po/README.translators should be updated or removed (Matthias Clasen)
  - #8087 Drop Shadows Make Transparent Textures Significantly Darker (Benjamin
    Otte)
  - #8090 Gtk.IconPaintable SVG fallback wrong color (Matthias Clasen)
  - #8092 Shaper: changing state name doesn't mark file as "changed" (Matthias
    Clasen)
  - #8094 Devel style class is broken by SVG changes (Matthias Clasen)
  - #8096 Shaper: don't add countless states
  - #8098 Crashes with SIGSEGV in `gdk_wayland_toplevel_remove_from_session()`
    (Philip Withnall)
  - #8099 Documentation: Gtk Switch page is missing switch-state.png image
    (Matthias Clasen)
  - #8100 GtkSvg: Switching states quickly in Shaper doesn't work (Matthias
    Clasen)
  - #8101 Shaper: issue with weight (Matthias Clasen)
  - #8103 gtk3 refresh_rate calculation overflows on 32-bit targets (Alberto
    Garcia)
  - #8105 Shaper: Inkscape to Shaper breaks format (Matthias Clasen)
  - #8106 Some symbolic icons seems to not be recolored correctly (Matthias
    Clasen)
  - #8107 Unbalanced Snapshot.{save,restore} calls in libadwaita (Florian
    "sp1rit"​)
  - #8108 Shaper: cannot set stroke color to Foreground (Matthias Clasen)
  - #8111 a11y: PreferencesGroup isn't being described as container of
    ActionRows
  - #8125 svg: Animating hrefs does not work (Matthias Clasen)
  - #8139 A layout manager invoking a Cairo bug (Benjamin Otte)
  - !6922 Implement version 2 of text_input_v3 protocol (Carlos Garnacho)
  - !9016 spinner: Use an animated icon (Matthias Clasen)
  - !9184 filechooser: Fix filters being removed when navigating via the bar
    path (Jules Maselbas)
  - !9380 Iterate on save/restore support (Adrian Vovk)
  - !9411 text: Add option to include preedit as part of text (Florian
    "sp1rit"​)
  - !9437 The big renderer refactor (Benjamin Otte)
  - !9459 Use GtkSvg for all icons (Matthias Clasen)
  - !9505 Add clip masks (Benjamin Otte)
  - !9533 Add a new atlas allocator and rework caching APIs (Benjamin Otte)
  - !9545 memoryformat: Add packed 10bit formats (Benjamin Otte)
  - !9552 A bunch of fixes and speedups for 4.24 (Benjamin Otte)
  - !9557 CI: use native git in msys2 + remove base-devel (Christoph Reiter)
  - !9582 Update Polish translation
  - !9583 Update Polish translation
  - !9584 Update Chinese (China) translation
  - !9586 Fix typo (Urtsi Santsi)
  - !9588 Drop the gtk4-encode-symbolic tool (Matthias Clasen)
  - !9589 Drop po/README.translators (Matthias Clasen)
  - !9590 vulkan: fix GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE check (Christoph
    Reiter)
  - !9591 icon paintable: Don't load unsupported SVG (Matthias Clasen)
  - !9597 Update macOS runner (René de Hesselle)
  - !9602 svg: parse `<style>` (Matthias Clasen)
  - !9605 icons: Fix process-working (Jakub Steiner)
  - !9606 testsuite: Limit size of clip test to 4096x4096 (Benjamin Otte)
  - !9609 Avoid a critical (Matthias Clasen)
  - !9611 Update French translation
  - !9616 Small svg cleanups (Matthias Clasen)
  - !9617 svg: Some refactoring (Matthias Clasen)
  - !9619 svg: Add a workaround for traditional symbolics (Matthias Clasen)
  - !9621 Update Hungarian translation
  - !9622 svg: Make get_state_names() more robust (Alice Mikhaylenko)
  - !9623 Revert save/restore API removal (Adrian Vovk)
  - !9624 reftests: Fix an icon (Matthias Clasen)
  - !9625 svg: Small optimization (Matthias Clasen)
  - !9626 icon editor: Various grouping-related fixes (Matthias Clasen)
  - !9627 application8: Don't use space in meson generated filename (Zoltán
    Böszörményi)
  - !9629 Update French translation
  - !9630 Update Hungarian translation
  - !9632 svg: Add a testcase for units (Matthias Clasen)
  - !9634 Update Turkish translation
  - !9635 icon editor: Some comfort (Matthias Clasen)
  - !9636 Update Romanian translation
  - !9638 renderpass: Fix wrong clip mask opacity tracking (Benjamin Otte)
  - !9640 vulkan: Fix invalid read by requerying variable (Benjamin Otte)
  - !9641 print portal: Plug leak of backend modules (Alessandro Astone)
  - !9644 Add a test for the color-matrix optimization (Matthias Clasen)
  - !9645 icon editor: Add a compat class checkbox (Matthias Clasen)
  - !9650 Some icon editor improvements (Matthias Clasen)
  - !9651 roaring: remove/merge bswap_64() guard for FreeBSD (Charlie Li)
  - !9652 gesturestylus: Output empty backlog when there is none (Sergey Bugaev)
  - !9654 Make clip paths work in shaper (Matthias Clasen)
  - !9655 hlg: Convert from scene-referred to display light (Kenny Levinsen)
  - !9657 Update Slovenian translation
  - !9659 Various Vulkan fixes (Benjamin Otte)
  - !9661 icon editor: Small cleanup (Matthias Clasen)
  - !9662 fontchooser: Cosmetics (Matthias Clasen)
  - !9663 vulkan: Generate new SPIRV for shaders with clip mask (Benjamin Otte)
  - !9664 inspector: Display more information about GStreamer (Benjamin Otte)
  - !9666 svg: Update the docs (Matthias Clasen)
  - !9668 gdk: Remove GDK_MEMORY_U8_SRGB (Benjamin Otte)
  - !9672 svg: Support the `<a>` element (Matthias Clasen)
  - !9673 testsuite: Add dmabuf compare tests to needs-udmabuf suite (Benjamin
    Otte)
  - !9674 gtkgstsink.c: Fix build on Visual Studio (Chun-wei Fan)
  - !9675 demos: Make build reproducible. (Maxim Cournoyer)
  - !9679 dmabuf: Support dmabufs with fewer fds than planes (Benjamin Otte)
  - !9680 Rewrite the svg renderer test (Matthias Clasen)
  - !9683 Update Galician translation
  - !9684 Replace outdated freedesktop.org Window Manager spec links (balooii
    balooii)
  - !9686 Update Romanian translation
  - !9687 icon editor: Restore metadata (Matthias Clasen)
  - !9688 Update Kabyle translation
  - !9689 icon editor: Restore metadata (Matthias Clasen)
  - !9690 svg: Fix quick state changes (Matthias Clasen)
  - !9692 gtk/emojichooser: Select first result on Enter (Zoey Ahmed)
  - !9693 gtk/emojichooser: Fix typos in docs (Zoey Ahmed)
  - !9694 Write down AI contribution guidelines (Matthias Clasen)
  - !9695 renderer: Render clip mask in device grid (Benjamin Otte)
  - !9696 print: Fix listing printers with synchronous backends (Alessandro
    Astone)
  - !9697 svg: Handle color a bit better (Matthias Clasen)
  - !9698 Properly apply reduced-motion portal setting (stupidduos)
  - !9702 Update Turkish translation
  - !9703 icon editor: Add an xml view (Matthias Clasen)
  - !9705 Clean  up error handling in GtkSvg (Matthias Clasen)
  - !9714 Add font rendering tests (Matthias Clasen)
  - !9717 Tweak the movingtext demo (Matthias Clasen)
  - !9720 inspector: Add an svg page (Matthias Clasen)
  - !9722 accessibility: Fix regression (Sergio Costas Rodriguez)
  - !9723 ci: Fix msys2-clang64 errors (Sergio Costas Rodriguez)
  - !9724 media: Don't leak URI (Guido Günther)
  - !9725 widget: Explain minimum and natural size in the docs (Logan Rathbone)
  - !9727 svg: The big split, part one (Matthias Clasen)
  - !9728 bookmarklist: Document `standard::file` attribute (Arun Mani J)
  - !9730 New syntax for state change conditions (Matthias Clasen)
  - !9731 Janitorial (Matthias Clasen)
  - !9733 svg: More splitting (Matthias Clasen)
  - !9735 svg: Fix invalidation (Matthias Clasen)
  - !9737 wayland/toplevel: Set fallback wm capabilities on old xdg_wm_base
    (Jonas Ådahl)
  - !9738 Fix the build (Matthias Clasen)
  - !9740 Misc warnings fixes (g.willems)
  - !9742 wayland: Accept cursor-shape v1 (Matthias Clasen)
  - !9745 gskvulkanimage: fix building on 32-bit (oreo639)
  - !9746 atcontext: remove unneeded signal definition (Sergio Costas Rodriguez)
  - !9747 gtkcheckbutton: Recalculate a11y label on use-underline change (Lukáš
    Tyrychtr)
  - !9749 Update Polish translation
  - !9750 icon editor: Avoid a crash (Matthias Clasen)
  - !9751 Update Czech translation
  - !9752 svg: Improve error reporting (Matthias Clasen)
  - !9753 gtk-demo: Make --autoquit work again (Benjamin Otte)
  - !9756 application-wayland: Add NULL check on gtk_accessible_get_at_context
    (Alessandro Astone)
  - !9757 Update Georgian translation
  - !9758 Add GtkEnumList (Matthias Clasen)
  - !9759 android: Target SDK 36 (Florian "sp1rit"​)
  - !9761 cssprovider: Fix gtk-application-prefer-dark-theme setting (Florian
    "sp1rit"​)
  - !9762 inspector: update keyboard device layouts on property notify (Juan
    Pablo Ugarte)
  - !9764 Add gtk_svg_set_stylesheet (Matthias Clasen)
  - !9765 build: Require wayland-protocols 1.48 (Matthias Clasen)
  - !9766 Wayland: Port to xdg-session-management-v1 (Matthias Clasen)
  - !9767 css: Make this code easier to manage (Matthias Clasen)
  - !9769 icon editor: Drop some wrappers (Matthias Clasen)
  - !9771 Update Romanian translation
  - !9772 accessiblehypertext: Remove non-ISO C semicolon (Stuart Hayhurst)
  - !9773 svg: Support 3D transforms (Matthias Clasen)
  - !9774 Add a GtkSvgWidget (Matthias Clasen)
  - !9776 Update Slovenian translation
  - !9777 svgutils: Plug bytes leak at parser_new_for_string (Maximiliano
    Sandoval)
  - !9779 android: expose gtk-interface-color-scheme XSetting (Florian
    "sp1rit"​)
  - !9782 gpu: Add GSK_GPU_DISABLE=damage (Benjamin Otte)
  - !9783 Assorted small fixes and cleanup (Matthias Clasen)
  - !9785 svg: Move serialization code to a separate file (Matthias Clasen)
  - !9786 surface: Adjust how we decide whether to flip popups (Sergey Bugaev)
  - !9787 Small refactoring (Matthias Clasen)
  - !9788 svg: Misc fixes (Matthias Clasen)
  - !9789 Fix missing dispose and finalize chain-ups (Maximiliano Sandoval)
  - !9792 Some memory leak fixes (Matthias Clasen)
  - !9793 testsuite/diff: fix memory leak in diffreg (Florian "sp1rit"​)
  - !9795 Misc svg fixes (Matthias Clasen)
  - !9796 Add a demo for GtkSvgWidget (Matthias Clasen)
  - !9800 gtkatspitext: Correct for inclusivity differences (Lukáš Tyrychtr)
  - !9801 gpu: Handle scale being too small (Benjamin Otte)
  - !9804 svg: Detect circular \<use\> again (Matthias Clasen)

* Translation updates:
  - Chinese (China) (luming zh)
  - Czech (Patrik Sivek)
  - French (Guillaume Bernard)
  - Galician (Francisco Diéguez Souto)
  - Georgian (Ekaterine Papava)
  - Hungarian (Balázs Úr)
  - Kabyle (BoF ButterflyOfFire)
  - Polish (Victoria, Victoria Niedzielska)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)
  - Turkish (Emin Tufan Çetin)


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)
  - #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 (René 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"​)

* Translation updates:
  - Georgian (Ekaterine Papava)
  - Kazakh (Baurzhan Muftakhidinov)
  - Russian (Artur S0)


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 <marker> (Matthias Clasen)
  - #7951 document-save-as-symbolic looks wrong in main (Matthias Clasen)
  - #7962 issue for `<svg>` 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 <defs>
  - !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 `<text>` & `<tspan>` 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 `<marker>` (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 `<svg>` (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 `<filter>` (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)

* Translation updates:
  - Chinese (Taiwan) (Cheng-Chia Tseng)
  - Georgian (Ekaterine Papava)
  - Indonesian (Andika Triwidada)
  - Occitan (post 1500) (Quentin PAGÈS)
  - Russian (Danil Gashigullin)
  - Slovenian (Martin)
  - Uzbek (Baxrom Raxmatov)


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)

* Translation updates:
  - Slovenian (Martin)
  - Turkish (Sabri Ünal)


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
 - <line>, <polyline> and <polygon> 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)

* Translation updates:
  - Serbian (Милош Поповић)
  - Slovenian (Martin)


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: \<Control\> 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 (René 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

* Translation updates:
  - Basque (Asier Saratsua Garmendia)
  - English (United Kingdom) (Bruce Cowan)
  - Slovenian (Martin)
  - Thai (Aefgh Threenine)
  - Uighur (Abduqadir Abliz)


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)

* Translation updates:
  - Catalan (Jordi Mas i Hernandez)
  - Chinese (China) (luming zh)
  - Czech (Daniel Rusek)
  - Danish (Ask Hjorth Larsen)
  - Esperanto (Kristjan SCHMIDT)
  - Galician (Francisco Diéguez Souto)
  - Georgian (Ekaterine Papava)
  - Lithuanian (Aurimas Černius)
  - Persian (Danial Behzadi)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Juliano de Souza Camargo)
  - Romanian (Antonio Marin)
  - Slovenian (Martin)
  - Spanish (Daniel Mustieles)
  - Turkish (Sabri Ünal)
  - Ukrainian (Yuri Chornoivan)


Overview of Changes in 4.20.1, 08-09-2025
=========================================

* Bugs fixed:
  - #6666 Second Drag-and-Drop operation causes Gtk-CRITICAL messages at every
    event (Matthias Clasen)
  - #7345 columnview focus problem with menus
  - #7717 GtkTextView with css padding shows offscreen widgets in upper left
    corner (Matthias Clasen)
  - #7724 Occasional crashes in gsk_gl_device_setup_samplers() (Benjamin Otte)
  - #7729 Gtk.Entry: Cursor disappears when reaching right border (Matthias
    Clasen)
  - #7731 GTK_THEME environment variable not working properly with GTK4-4.20
    (Matthias Clasen)
  - #7734 MacOS: dyld: file does not start with MH_MAGIC[_64]: 0x00000000
    0x00000000 (sid)

* Changes:
  - !8888 4.20.0 (Matthias Clasen)
  - !8889 Plug some memory leaks (Matthias Clasen)
  - !8890 node-editor: Plug GskTransform leak (Maximiliano Sandoval)
  - !8891 macos: do not explicitly disable window controls (Arjan Molenaar)
  - !8893 text: Only clip the text drawing (Matthias Clasen)
  - !8894 Improve DND interoperability with kwin (Matthias Clasen)
  - !8896 Make GTK_THEME work as before (Matthias Clasen)
  - !8897 columnview: Fix arrow navigation in a nested widget inside a cell
    (Lukáš Tyrychtr)
  - !8898 docs: Fix invalid picture elements (Chris Mayo)
  - !8899 docs: Fix Image.set_pixel_size reference to set_icon_size (Chris Mayo)
  - !8900 offload: Do not try to raise subsurface above itself (Robert Mader)
  - !8902 Try harder to fix caret visibility in entries (Matthias Clasen)
  - !8904 various small fixes (Benjamin Otte)
  - !8905 Modernize the app chooser (Matthias Clasen)
  - !8907 colorchooser: Fix up editor focus (Matthias Clasen)
  - !8908 filechooser: Improve error handling (Matthias Clasen)
  - !8909 build: update to accesskit-c v0.17.0 (Christoph Reiter)
  - !8910 a11y: Give spinner a progressbar role (Matthias Clasen)
  - !8911 fontchooser: Make lists more keynav-friendly (Matthias Clasen)
  - !8912 textview: Connect to detailed can-undo/can-redo notify signals (Julian
    Sparber)
  - !8913 gtk-demo: Support svg without width/height (Matthias Clasen)
  - !8916 docs: Add illustrations for component transfer (Matthias Clasen)
  - !8917 gtk-demo: Add a demo for sections (Matthias Clasen)
  - !8918 gsk: Tweak the formula for component transfer (Matthias Clasen)
  - !8919 Fix MacOS build failure (sid)
  - !8920 demos: Improve the image filtering demo (Matthias Clasen)
  - !8921 demos: Memory leak fixes (Matthias Clasen)
  - !8922 Adapt to deprecations (Matthias Clasen)
  - !8924 docs: Fix broken links (Chris Mayo)
  - !8926 scrolledwindow: Improve behavior if nested in other scrollables
    (Carlos Garnacho)

* Translation updates:
  - Basque (Asier Saratsua Garmendia)
  - Catalan (Jordi Mas i Hernandez, Jordi Mas)
  - Chinese (China) (luming zh)
  - Finnish (Jiri Grönroos)
  - Georgian (Ekaterine Papava)
  - Hebrew (Yosef Or Boczko)
  - Hungarian (Balázs Úr)
  - Japanese (Makoto Sakaguchi)
  - Korean (Changwoo Ryu)
  - Lithuanian (Aurimas Aurimas Černius)
  - Persian (Danial Behzadi)
  - Portuguese (Brazil) (Rafael Fontenelle)
  - Russian (Artur S0)
  - Swedish (Anders Jonsson)
  - Ukrainian (Yuri Chornoivan)

Overview of Changes in 4.20.0, 29-08-2025
=========================================

* Bugs fixed:
  - #7695 gdk-win32: unmaximize doesn't restore the original size
  - #7702 Should GTK_ACCESSIBLE_ROLE_STATUS really be NAME_PROHIBITED?

* Changes:
  - !8851 gstreamer: Stop GstPlay before dropping the ref (Robert Mader)
  - !8871 gtk/filterlistmodel: Emit items-changed for item watches (Georges
    Basile Stavracas Neto)
  - !8872 Gtk 4.19.4
  - !8873 docs: Some more details about dialogs (Matthias Clasen)
  - !8874 gsk: Add docs / gi annotations to new component transfer API
    (Sebastian Dröge)
  - !8876 Revert "meson: Rework introspection handling" (Florian "sp1rit"​)
  - !8879 iconhelper: Fix handling of non-square icons (Matthias Clasen)
  - !8880 gsk: Add missing Since marker to GskComponentTransferNode (Sebastian
    Dröge)
  - !8881 symbolic: Fix stroke defaults (Matthias Clasen)
  - !8883 Ignore gtk namespace attributes (Matthias Clasen)
  - !8884 gtk-demo: Fix markup in dark (Matthias Clasen)
  - !8885 entry: Clean up coding style (Sergio Costas Rodriguez)
  - !8886 gtk-demo: Avoid some criticals (Matthias Clasen)
  - !8887 gtkatcontext: Fix name generation flags for the banner role (Lukáš
    Tyrychtr, Matthias Clasen)

* Translation updates:
  - Catalan (Jordi Mas)
  - Czech (Daniel Rusek)
  - Lithuanian (Aurimas Aurimas Černius)
  - Thai (Aefgh Threenine)
  - Turkish (Emin Tufan Çetin)


Overview of Changes in 4.19.4, 18-08-2025
=========================================

* Wayland:
 - Support wl_seat v10, and support server-side key repeat
 - Handle natural scrolling better

* Clipboard:
 - Fix text encoding mixups

* Text:
 - Make underlines continuous across runs

* Bugs fixed:
  - #514 scale use wrong direction  when use natural scrolling feature (Carlos
    Garnacho)
  - #6660 Numpad "home" and "end" keys behave differently than "home" and "end"
    keys when combined with shift (Brian Kress)
  - #7672 Gtk.FileDialog.open_finish() is wrongfully marked as nullable
    (Matthias Clasen)
  - #7691 4.19.3: Missing borders in g-c-c wifi page (Matthias Clasen)
  - #7693 Crash due to use after free in unset_fullscreen_monitor (deltragon)
  - #7694 4.19.3 regression: vte apps cant decode utf8 on copy-paste (Matthias
    Clasen)
  - #7708 Holding down keys no longer works (Carlos Garnacho)
  - #7712 GtkTextView gives encoded UTF-8 characters on paste sometimes
    (Matthias Clasen)
  - #7715 inconsistent y of text underline (Matthias Clasen)

* Changes:
  - !8239 Numpad keys behave differently than non numpad keys when combined with
    shift (Matthias Clasen, Brian Kress)
  - !8277 atcontext: Fix a11y value leaks (Khalid Abu Shawarib)
  - !8812 4.19.3 (Matthias Clasen)
  - !8813 gtktext: Remove a duplicate text added notification for a11y (Lukáš
    Tyrychtr)
  - !8815 print portal memory cleanups (lbaudin)
  - !8818 widget-factory: Fix style selectors (Matthias Clasen)
  - !8819 entry: Use 4.20 instead of 4.19 as version for newly added API
    (Sebastian Dröge)
  - !8820 ci: Regenerate the image (Matthias Clasen)
  - !8821 inspector: Fix up an oversight (Matthias Clasen)
  - !8823 CSS editor fixes (Alice Mikhaylenko)
  - !8824 adjustment: Verify that we have a valid range (Sergey Bugaev)
  - !8829 cssprovider: Fix relative URLs when updating media queries (Alice
    Mikhaylenko)
  - !8830 Fix 2 leaks when skipping media queries (Alice Mikhaylenko)
  - !8831 css: Drop light-dark again (Matthias Clasen)
  - !8833 Check for non-standard backtrace() instead of assuming it (Haelwenn
    (lanodan) Monnier)
  - !8834 textview: Don't cast root to window without checking type (Ben Mather)
  - !8836 GtkRange/GtkScale scroll improvements (Carlos Garnacho)
  - !8837 node editor: Fix the dark bg button (Matthias Clasen)
  - !8841 widget: Fix leak when disposing GtkLabel (Maximiliano Sandoval)
  - !8843 gsk: Don't crash on failed image creation (Matthias Clasen)
  - !8844 Fix license of GtkFileThumbnail files (Michael Catanzaro)
  - !8846 gdk/wayland: Support wl_seat version 10 (Carlos Garnacho)
  - !8847 gdk: Fix mixed-up axis names (Titouan Real)
  - !8848 Delete Kikongo and Turkmen translations (Michael Catanzaro)
  - !8853 print: Fix finding cpdb headers (Alessandro Astone)
  - !8855 text: Drop a redundant call (Matthias Clasen)
  - !8856 entry: Plug leak in update_extra_menu (Maximiliano Sandoval)
  - !8858 build: pass output file as argument to docutils rst2man/html (Eli
    Schwartz)
  - !8860 gtk: docs: Remove () at the end of method links (Maximiliano Sandoval)
  - !8861 gdk/wayland: Flush all tablet events after wp_tablet_tool.frame
    (Carlos Garnacho)
  - !8862 stroke: Really allow a line width of 0 (Matthias Clasen)
  - !8863 contentserializer: Change the order back here too (Matthias Clasen)
  - !8864 docs: Improve wording consistency (Matthias Clasen)
  - !8865 Assorted dialog fixes (Matthias Clasen)
  - !8868 docs: Add a section about dialogs (Matthias Clasen)
  - !8869 docs: Some more work on the dialog section (Matthias Clasen)
  - !8870 docs: Some more work on the dialog section (Matthias Clasen)

* Translation updates:
  - Catalan (Jordi Mas)
  - Esperanto (Kristjan SCHMIDT)
  - Galician (Fran Diéguez)
  - Kongo (Michael Catanzaro)
  - Persian (Danial Behzadi)
  - Polish (Piotr Drąg)
  - Romanian (Antonio Marin)
  - Russian (Artur S0)
  - Slovak (Dušan Kazik)
  - Slovenian (Martin)
  - Turkmen (Michael Catanzaro)


Overview of Changes in 4.19.3, 03-08-2025
=========================================

* GtkVideo:
  - Support fo 10/12/16bit software decoder formats has been added
  - Avoid extra copies in more cases

* GtkApplication:
 - Rely on the portal instead of talking to session managers

* GtkEntry:
 - Entry icons now have an easy way to add an equivalent
   context menu item

* Icon support:
 - Symbolic svgs can use <rect> and <circle>
 - The symbolic png format is being phased out

* List models:
 - GtkFilterListModel can now watch its items and refilter

* CSS:
 - Media queries for color scheme and contrast are supported
 - The light-dark() function is supported

* Accessibility:
 - Improve handling of password entries

* Input:
 - The simple IM context gained a way to make compose sequence
   visuals configurable

* Printing:
 - Make portal printing work again
 - Support gnome-papers for preview
`
* GSK:
 - gsk_path_foreach_intersection is an API for path intersections
 - Bugs in determining closest points of paths have been fixed
 - A node type for component transfers has been added

* Debugging:
 - The recorder gained a Super+F shortcut to save a single frame
 - The CSS editor has controls for color scheme and contrast

* Tools and demos:
 - gtk4-path-tool can show path intersections
 - gtk4-demo gained a "Path Explorer" demo
 - gtk4-demo gained a "Sweep" (path intersection) demo
 - gtk4-demo gained a "Image Filtering" demo

* macOS:
 - Register sessions by default
 - Fix negative numbers in spin buttons in the Swedish locale

* Windows:
 - Fix size negotiation for fullscreen and maximized windows

* Android:
 - Fix problems with the Adreno driver
 - Build girs on if introspection is enabled

* Deprecations:
 - the Broadway renderer
 - the GtkApplication:register-session property
 - the gtk-application-prefer-dark setting

* Bugs fixed:
  - #2613 GtkTextView jumps on enter if a big enough top-margin is set (Manuel
    Genovés)
  - #4134 GtkTextView:top-margin breaks resize Y placement when wrap-text is set
    (Manuel Genovés)
  - #5273 Broken links in GTK4 documentation question index
  - #7531 Blank screen with Adreno GPU driver on Android (Florian "sp1rit"​)
  - #7554 Win32: opening a popover un-maximizes the toplevel (Doublonmousse)
  - #7581 Proposal: Make compose sequence visuals configurable in compose files:
    would make something like BÉPO visuals and similar layouts like Neo  future
    proof, i.e. avoid code changes to Gtk in future. (Mike FABIAN)
  - #7622 Typo (Brian Yurko)
  - #7628 wayland: window notify::suspended is only triggered after window
    becomes visible again (Matthias Clasen)
  - #7636 extensions-app and gnome-control-center: inconsistent and buggy
    behaviour with popups extending outside window boundary (Matthias Clasen)
  - #7644 Multi-plane YCbCr fallback breaks external-only dmabuf import
    (Benjamin Otte)
  - #7650 Regression in GtkBitsetIter (Matthias Clasen)
  - #7654 Gtk.Entry icons aren't accessible when they are sensitive/activatable
  - #7663 Button losing focus/hover because of transition (Matthias Clasen)
  - #7670 gtk_enumerate_printers() fails to return a printed named
    "GtkPrintBackendFile" (Matthias Clasen)
  - #7683 SpinButton (spin scales) can't show negative values on some macOS LANG
    locales (Oona Räisänen)
  - #7686 Leak when starting a libadwaita's demo
  - https://gitlab.gnome.org/Teams/Websites/www.gtk.org/-/issues/

* Changes:
  - !8330 memoryformat: Add 10/12/16bit SW decoder formats (Robert Mader)
  - !8723 android: Fix IME preventing from closing Activity
  - !8728 gtkatspicontext: Fix returning null parent ref for the root (Lukáš
    Tyrychtr)
  - !8729 The 4.19.2 release (Matthias Clasen)
  - !8730 vulkan: NULL is not compatible with VkFence (Zander Brown)
  - !8731 Avoid conflict with preexisting modules (Matthias Clasen)
  - !8732 meson: subproject compatability hack for meson < 1.8 (Florian
    "sp1rit"​)
  - !8733 Move away from symbolic pngs (Matthias Clasen)
  - !8734 widget-factory: Drop one more icon-theme use (Matthias Clasen)
  - !8735 builder: :current-object is nullable (Zander Brown)
  - !8736 a11y: Fix state-change emissions (Matthias Clasen)
  - !8737 wayland: More debug spew (Matthias Clasen)
  - !8738 wayland: Split up some debug spew (Robert Mader)
  - !8742 shortcutwindow: Differentiate keypad better (Matthias Clasen)
  - !8744 gstreamer: Add video meta support for sysmem buffers (Robert Mader)
  - !8746 Add new "watch-items" property & plumbing to GtkFilterListModel
    (Georges Basile Stavracas Neto)
  - !8747 gtkstack: Fix hiding the invisible GtkStackPages on the a11y layer
    (Lukáš Tyrychtr)
  - !8749 Sync with current CRoaring (Matthias Clasen)
  - !8750 testlistview: Waste less time (Matthias Clasen)
  - !8751 meson: Update libpng/libtiff/libjpeg wrap files (Jordan Petridis)
  - !8752 Add path intersections (Matthias Clasen)
  - !8753 tools: Make i toggle path intersections (Matthias Clasen)
  - !8754 tools: Fix help output details (Matthias Clasen)
  - !8756 pathbuilder: Don't split cubics
  - !8757 path: Fix closest point for circles (Matthias Clasen)
  - !8759 gtk4-demo: Cosmetics (Matthias Clasen)
  - !8761 bumped gdk-pixbuf to 2.43.3 (Florian "sp1rit"​, Matthias Clasen)
  - !8762 Fix EGL dmabuf format handling (Benjamin Otte)
  - !8763 Make compose sequence visuals configurable in compose files (Mike
    FABIAN, Matthias Clasen)
  - !8764 docs: Fix non-working links within gtk4 API static generated docs
    (Brian Yurko)
  - !8765 Add a demo of raw image dnd
  - !8766 image dnd: Use GdkDropTargetAsync (Matthias Clasen)
  - !8768 widget-factory: Improve icon handling (Matthias Clasen)
  - !8770 gdkenums: Add GDK_ACTION_NONE (Maximiliano Sandoval)
  - !8771 Make roaring all static (Matthias Clasen)
  - !8773 inspector: Change the shortcut for 'save a frame' (Matthias Clasen)
  - !8774 entry: Add accessibility to primary and secondary icons (Sergio Costas
    Rodriguez)
  - !8775 gtk4-demo: Rename the path explorer demo (Matthias Clasen)
  - !8777 symbolics: Support <circle> and <rect> (Matthias Clasen)
  - !8778 macos: By default register the session (Arjan Molenaar)
  - !8779 gsk: Added gsk_transform_matrix_2d (Florian "sp1rit"​)
  - !8780 gsk: Allow a line width of zero (Matthias Clasen)
  - !8782 Deprecate the Broadway renderer (Matthias Clasen)
  - !8785 gsk: Add a component transfer node (Matthias Clasen)
  - !8786 Fix rsvg leak (Khalid Abu Shawarib)
  - !8787 Fix the pathexplorer demo (Florian "sp1rit"​)
  - !8789 gpu: Don't pass structs as varying between shader stages (Florian
    "sp1rit"​)
  - !8791 fix: special case for maximized and fullscreened window in
    `compute_toplevel_size` (Doublonmousse)
  - !8794 gi/gtkfilter: Fix since annotations of new enum fields (Bilal
    Elmoussaoui)
  - !8796 print: Small refactoring (Matthias Clasen)
  - !8799 password input purpose a11y (Lukáš Tyrychtr)
  - !8800 gtk-demo: Update paintable demos (Matthias Clasen)
  - !8801 gtk/application-dbus: Plug GVariant leak (Maximiliano Sandoval)
  - !8803 Support media queries (Matthias Clasen)
  - !8805 printoperation: Plug cairo surface leak (Maximiliano Sandoval)
  - !8806 Plug some leaks in node editor (Maximiliano Sandoval)
  - !8807 android: Build GdkAndroid-4.0.gir if introspection is enabled (Florian
    "sp1rit"​)
  - !8808 textureutils: Plug leak on start_element_cb (Maximiliano Sandoval)
  - !8809 gtk/applicaiion-dbus: Call env variable unset in constructor when
    available (Khalid Abu Shawarib)
  - !8810 Plug a memory leak in svg parsing (Matthias Clasen)
  - !8811 filechoosernative: Plug leak when setting mimetype (Maximiliano
    Sandoval)

* Translation updates:
  - Galician (Fran Diéguez)
  - Georgian (Ekaterine Papava)
  - Italian (Davide Ferracin)
  - Russian (Artur S0)
  - Slovak (Peter Mráz)
  - Slovenian (Martin)
  - Turkish (Emin Tufan Çetin)


Overview of Changes in 4.19.2, 27-06-2025
=========================================

Note: This release makes GTK rely on the Wayland text protocol
for input method support. For compositors without that protocol,
you can manually set GTK_IM_MODULE=simple to get back support for
X11-style compose sequences and dead keys.

* GtkImage:
 - Change the sizing behavior for paintables. Stop scaling them up

* Add g_uri_launcher_can_launch to check if a given uri has a handler

* GtkTextView:
 - Don't use keyboard layout for text direction

* GtkIconTheme:
 - Allow strokes in symbolic icons
 - Document the symbolic icon format
 - Add a small parser for symbolic svg files
 - Convert symbolic svgs to render nodes and rasterize them later
 - Require librsvg and always support svg
 - Make it possible to create GtkIconPaintable objects in ui files
 - Fix search path order to prefer ~/.local/share over /usr/share

* GtkVideo:
 - Port the gstreamer backend to use GskPlay

* Resources:
 - Clean up and simplify all symbolic icons and theme assets,
   so they can be handled by the built-in svg parser
 - Stop including png versions of symbolic icons and theme assets

* CSS:
 - Plug a memory leak in the css variables code
 - Support transition hints for gradients
 - Support two-position stops for gradients
 - Pass toplevel edge constraints to css
 - Support multiple keyframe selectors per block
 - Reimplement text shadows to match what browsers do

* GL:
 - Support multiplane texture formats

* GSK:
 - Fix some bugs in the path parser
 - Cache masks for fill and stroke nodes
 - Fix some corner cases of path semantics to match svg

* Deprecations:
 - Deprecate the remaining pixbuf APIs

* Tools:
 - Add some interactive controls to gtk4-path-tool
 - Add a command to convert symbolic svgs to nodes
 - The inspector UI has been improved in some places

* Demos:
 - Fix lighting in the gears GL demo
 - Use paintables for some icons, so we no longer rely on an
   icon theme to provide them
 - Stop hardcoding Cantarell as font in various places
 - Use paintables instead of themed icons in many places

* Build:
 - Include modules in libgtk
 - Build with libcups 3
 - Use meson 1.8.2
 - Require librsvg
 - Fix the build without memfd_create

* Wayland:
 - Stop handling compose sequences client-side, since
   the compositor does it
 - Plug a memory leak in the offloading code
 - Fix scaling of callback cursors
 - Update tablet cursors properly

* MacOS:
 - Support window snapping
 - Better window menu support
 - Don't build the x11 backend on macos, by default

* Windows:
 - Fix resizing problems with the cairo renderer
 - Add API for D3D12 textures
 - Refactor and modernize the WGL support
 - Fix many msvc warnings
 - Scale callback cursors
 - Use D3D11 or D3D12 and DirectComposition. This
   can be disabled using new GDK_DISABLE values:

   GDK_DISABLE=d3d11,d3d12,dcomp

* Android:
 - Simplify surface layout

* Bugs fixed:
  - #6519 AtSpiSocket not in gir
  - #7136 color: transparent; doesn't make emojis transparent (Matthias Clasen)
  - #7137 text-shadow doesn't work with transparent text (Matthias Clasen)
  - #7233 `contain_mimetype` can return true for a type that _was_ present in
    the clipboard but removed leading to `g-io-quark-error` when reading the
    data
  - #7277 Support mac os snapping feature
  - #7427 CSS @keyframes should support multiple animation selectors (Matthias
    Clasen)
  - #7450 Wrong behavior of GdkKeymap on macOS (Elisa Pau)
  - #7524 `Gtk.MapListModel` becomes desynchronized when the original list model
    is modified (Matthias Clasen)
  - #7541 Win32: window resize issues (not repainted or wrong direction) with
    cairo renderer (Benjamin Otte)
  - #7562 Android: Allocation warning spam when scrolling ScrolledWindow
  - #7572 path caching fallout (Benjamin Otte, Matthias Clasen)
  - #7583 macos: Vulkan renderer broken
  - #7587 Dynamic cursors are incorrectly scaled (PBS, Matthias Clasen)
  - #7589 Windows vulkan renderer: DestroyWindow failed with code 1400: Invalid
    window handle. (Benjamin Otte)
  - #7592 `gtk_accelerator_parse_with_keycode` returns a false positive for
    parsing (Rubén Muñoz--Bertrand)
  - #7593 Wayland: The tablet cursor shape does not always changes shape when
    hovering into a GTK4 application (Matthias Clasen)
  - #7606 Giant mouse cursor (Matthias Clasen)
  - #7609 GTK4 symbolic icon display no longer prioritises ~/.local/share/icons
    over /usr/share/icons (Matthias Clasen)
  - #7611 Texture.save_to_png does not consider the color state (Matthias
    Clasen)
  - #7613 Regression with gtk_snapshot_append_radial_gradient() (Matthias
    Clasen)
  - #7617 (atspi): `Parent` property and cache's `GetItems` methods disagree
    about root's parent.
  - #7620 Cannot build GTK4 without `memfd_create` (Matthias Clasen)
  - !7883 Add GdkD3d12Texture (Benjamin Otte)
  - !8061 Deprecate the last few undeprecated GdkPixbuf apis (Matthias Clasen)
  - !8080 macos: Add (experimental) Vulkan support (Arjan Molenaar)
  - !8481 Color representation protocol support (Matthias Clasen)
  - !8498 macos: Add Window menu as a special case (Arjan Molenaar)
  - !8501 macos: Fix native window snapping (Arjan Molenaar)
  - !8522 modules: Let modules be statically linked into libgtk (Florian
    "sp1rit"​)
  - !8525 4.19.1 (Matthias Clasen)
  - !8530 Some more pixbuf work (Matthias Clasen)
  - !8533 Drop unnecessary includes (Matthias Clasen)
  - !8534 css: Use different api (Matthias Clasen)
  - !8535 icons: Fix the fg-only optimization (Matthias Clasen)
  - !8537 Add gtk_uri_launcher_can_launch
  - !8538 Bump the openuri portal api (Matthias Clasen)
  - !8539 gpu: Move function (Benjamin Otte)
  - !8540 Revert "file filer: Replace an api" (Matthias Clasen)
  - !8541 Use librsvg for symbolics that we can't parse ourselves
  - !8542 GDK/Win32: Some more cleanups (Chun-wei Fan)
  - !8543 Allow overriding (de)serializers (Matthias Clasen)
  - !8544 node-editor: Help isn't editable (Matthias Clasen)
  - !8545 Improve the a11y overlay (Matthias Clasen)
  - !8547 Convert symbolic icons to render nodes (Matthias Clasen)
  - !8548 path: Fix handling of 'm' (Matthias Clasen)
  - !8549 path: Fix handling of custom contours (Matthias Clasen)
  - !8550 icons: Update folder-new-symbolic from Adwaita (Matthias Clasen)
  - !8551 A bunch of fixes (Benjamin Otte)
  - !8552 docs: Some updates (Matthias Clasen)
  - !8553 demos: Simplify the app icons (Matthias Clasen)
  - !8555 icontheme: Cosmetics (Matthias Clasen)
  - !8556 wayland: Stop deriving from GtkIMContextSimple (Matthias Clasen)
  - !8557 path tool: Add some interactive control (Matthias Clasen)
  - !8558 some win32 fixes (Benjamin Otte)
  - !8559 win32: Use DirectComposition (Benjamin Otte)
  - !8560 Document the atspi socket (Matthias Clasen)
  - !8561 win32 fixes (Benjamin Otte)
  - !8564 ci: fix the android build ci (Florian "sp1rit"​)
  - !8565 gtk-demo: Fix the ucd demo (Matthias Clasen)
  - !8566 android: fix cairo renderer framebuffer format conversion (Florian
    "sp1rit"​)
  - !8567 image-tool: Use shared infrastructure (Matthias Clasen)
  - !8569 gtk-demo: Add a symbolic paintable (Matthias Clasen)
  - !8570 gtk-demo: Rename a class (Matthias Clasen)
  - !8571 Split off gtkiconpaintable.h (Matthias Clasen)
  - !8572 menubutton: Annotate popover type (Sergey Bugaev)
  - !8573 Allow strokes in symbolic icons
  - !8575 docs: Document a pitfall of nested ui files (Matthias Clasen)
  - !8576 Cosmetics (Matthias Clasen)
  - !8577 Cosmetics (Matthias Clasen)
  - !8578 icontheme: Drop non_blocking flags (Matthias Clasen)
  - !8579 android: introduce properties missing from toplevel (Florian
    "sp1rit"​)
  - !8580 Implement caching for path fills (Benjamin Otte, Matthias Clasen)
  - !8581 testsuite: Add a bunch of compare tests (Benjamin Otte)
  - !8582 memorytexturebuilder: Fix set_color_state annotation (Robert Mader)
  - !8583 rework GskGpuCache a bit (Benjamin Otte)
  - !8584 gstreamer: Port to GstPlay (Benjamin Otte)
  - !8586 ci: Let marge also do the android job (Florian "sp1rit"​)
  - !8587 Move the node format docs (Matthias Clasen)
  - !8589 egl: Handle EGL_SWAP_BEHAVIOR and avoid SwapBuffersWithDamage() if
    whole buffer was damaged (Benjamin Otte)
  - !8590 Clean up a few more icons (Matthias Clasen)
  - !8592 node-editor: Redo the zoom ui (Matthias Clasen)
  - !8593 icons: Simplify some icons (Matthias Clasen)
  - !8594 Build with libcups 3
  - !8597 dmabuf: egl: Skip unknown drm formats (Robert Mader)
  - !8598 Cache strokes (Matthias Clasen)
  - !8599 wayland: Plug a memory leak (Matthias Clasen)
  - !8600 GL: Add multiplane texture support (Benjamin Otte)
  - !8602 rendernode tool: Add a --dont-move option (Benjamin Otte, Matthias
    Clasen)
  - !8603 texturedownloader: Fix annotations (Benjamin Otte)
  - !8605 CI/MSVC: fix accesskit-c build with non-native Rust toolchain (L. E.
    Segovia)
  - !8606 gsk: Prepare for fill and stroke caching (Matthias Clasen)
  - !8607 docs: Add more details about symbolic icons (Matthias Clasen)
  - !8608 Make gsk_path_get_bounds() WARN_IF_UNUSED_RESULT (Benjamin Otte)
  - !8609 Revert 6d15f59fef2330dca2e27 (Matthias Clasen)
  - !8611 Small icon fixes (Matthias Clasen)
  - !8613 Add some more path parser tests (Matthias Clasen)
  - !8617 gpu: Do not use fma() in GLSL shaders (Robert Mader)
  - !8620 docs: Make warnings more bold (Matthias Clasen)
  - !8621 rendernodeparser: Make gzipped data consistent (Benjamin Otte)
  - !8622 Add a test (Matthias Clasen)
  - !8623 popover: Document parent widget requirements (James Westman)
  - !8625 widget: Only set tooltip when text has changed (Khalid Abu Shawarib)
  - !8626 Make the paintable demo use a picture (Matthias Clasen)
  - !8627 iconhelper: Stop scaling up paintables (Matthias Clasen)
  - !8628 gpu: Include scale when snapping (Benjamin Otte)
  - !8629 cssrefvalue: free the value itself (Zander Brown)
  - !8632 image: Expand docs (Matthias Clasen)
  - !8633 docs: Use proper admonitions (Matthias Clasen)
  - !8634 gtk-demo: Drop an accidentally snuck in icon (Matthias Clasen)
  - !8635 gstreamer: Promote set_caps caps print to info (Robert Mader)
  - !8636 icons: Apply matrix transforms (Jakub Steiner, Matthias Clasen)
  - !8637 Clean up and fix rotate gesture icons (Matthias Clasen)
  - !8638 Guard against window being NULL (Sebastian Wiesner)
  - !8639 Always allow symbolic svgs (Matthias Clasen)
  - !8640 Fix supercritical issue in gtk4-demo (Benjamin Otte)
  - !8641 snapshot: Move a helper (Matthias Clasen)
  - !8642 More svg rendering and path work (Matthias Clasen)
  - !8643 Improve symbolic icon handling (Matthias Clasen)
  - !8644 surface: Add the concept of an "attached context" (Benjamin Otte)
  - !8645 wayland: More debug spew for color (Matthias Clasen)
  - !8646 rendernode tool: Tweak the convert command (Matthias Clasen)
  - !8647 icontheme: Split off gtkiconpaintable.c (Matthias Clasen)
  - !8648 Try meson 1.8.1 (Matthias Clasen)
  - !8649 wayland: Add a way to get the text protocol proxy (Matthias Clasen)
  - !8650 Rename many of the private color apis
  - !8651 macos: update draw contexts and fix vulkan renderer (Arjan Molenaar)
  - !8652 Fix name of Activate/Deactivate DBus signal name (Tait Hoyem)
  - !8653 css: Parse transition hints for linear gradients (Matthias Clasen)
  - !8655 Implement transition hints for gradients (Matthias Clasen)
  - !8656 css: Fix a crash (Matthias Clasen)
  - !8658 gdk: Drop an unused include (Matthias Clasen)
  - !8659 Fix a ton of warnings due to stricter MSVC compiler flags (Benjamin
    Otte)
  - !8660 Update the clipboard on all `WM_CLIPBOARDUPDATE` events even if for
    the same owner (Doublonmousse)
  - !8662 android: Simplify surface layouting (Florian "sp1rit"​)
  - !8663 Cosmetics (Matthias Clasen)
  - !8664 Fix memory layout initialization (Matthias Clasen)
  - !8667 ci: Allow the macos job to fail (Matthias Clasen)
  - !8668 ci: unify towards a shared used meson version (Florian "sp1rit"​)
  - !8669 Add zoom icons to our fallback set (Matthias Clasen)
  - !8671 Fix a parsing bug with '<' and '>' (Rubén Muñoz--Bertrand)
  - !8675 win32: Remove leftover code (Benjamin Otte)
  - !8676 testsuite: Don't run slow tests in parallel (Benjamin Otte)
  - !8677 ci: Redo tools tests (Matthias Clasen)
  - !8679 Replace hardcoded values of Cantarell (Matthias Clasen)
  - !8680 docs: Add missing docs_url field to the backends documentation
    (Corentin Noël)
  - !8683 inspector: Minor ui improvements (Matthias Clasen)
  - !8684 ci: Slim down our harfbuzz fallback build (Matthias Clasen)
  - !8686 Update the issue template for crashes (Emmanuele Bassi)
  - !8688 inspector: Small UI improvements (Matthias Clasen)
  - !8690 a11y atspi: Report masked password instead of plain one
  - !8691 gstreamer: Use the actual data size for the texture builder (Robert
    Mader)
  - !8692 Pass resizable edge window states on to css (Matthias Clasen)
  - !8694 Revert "wayland: Fix callback cursor scaling" (Matthias Clasen)
  - !8695 textview: Use widget direction instead of keyboard direction for
    neutral text
  - !8696 gtkmaplistmodel: Make 'model' property writable (Georges Basile
    Stavracas Neto)
  - !8697 meson: Disable x11 feature on macos
  - !8698 gstreamer: Handle non-contiguous sysmem buffers (Robert Mader)
  - !8699 ci: Don't build broadway on macos (Matthias Clasen)
  - !8700 Revert "Add gdk_wayland_toplevel_get_xdg_toplevel"
  - !8702 docs: Add more details (Matthias Clasen)
  - !8704 widget-factory: Add some a11y error handling (Matthias Clasen)
  - !8705 When saving textures, preserve color state (Matthias Clasen)
  - !8707 gtkgstsink.c: Drop g_autoptr() usage (Chun-wei Fan)
  - !8709 widget-factory: Add some icons (Matthias Clasen)
  - !8710 inspector: Mark image buttons in ui files (Matthias Clasen)
  - !8712 button: Try harder to manage style classes (Matthias Clasen)
  - !8713 Fix corner cases with text alpha (Matthias Clasen)
  - !8714 gsk: Move color glyph special-casing (Matthias Clasen)
  - !8715 window: Update set_startup_id documentation to include Wayland
    (Sebastian Keller)
  - !8716 Add missing array annotation to GskPathForeachFunc
  - !8719 Fix gtk_init_check() crash on android (PBS)
  - !8720 atspiroot: Return proper parent reference (Lukáš Tyrychtr)
  - !8721 testsuite: Run ttfautohint over our Inter subsets (Matthias Clasen)
  - !8722 A bunch of general fixes (Benjamin Otte, Matthias Clasen)
  - !8724 gsk: Don't forget to disable pangos rounding (Matthias Clasen)
  - !8725 rendernodeparser: Don't abuse Pango structs (Benjamin Otte)

* Translation updates:
  - Catalan (Jordi Mas i Hernandez)
  - Finnish (Jiri Grönroos)
  - Georgian (Ekaterine Papava)
  - German (Christian Kirbach)
  - Hebrew (Yosef Or Boczko, Yaron Shahrabani)
  - Interlingua (International Auxiliary Language Association) (Emilio
    Sepúlveda)
  - Slovak (Peter Mráz)
  - Slovenian (Martin)
  - Turkish (Emin Tufan Çetin)
  - Uzbek (Baxrom Raxmatov)


Overview of Changes in 4.19.1, 02-05-2025
=========================================

* GtkText:
 - Add bindings for the "Clear" key

* GtkTextView:
 - Make overlaid child widgets scroll again

* GtkFileChooser:
 - Fix a crash with inaccessible locations
 - Add a forgotten accessible label

* GtkVideo:
 - Improve support for subsampled formats

* GtkApplicationWindow:
 - Improve layout

* GtkWindow:
 - Add gravity for resizing

* GtkWidget:
 - Fix invalidating cached request modes

* Gdk:
 - Add toplevel gravity for resizing
 - Support relative dials on tablet pads

* Gsk:
 - Accept GSK_RENDERER=gl for the current gl renderer
 - Support YUV formats better
 - Improve cairo blur performance with fractional scales
 - Use vertical subpixel positions for text rendering

* Wayland:
 - Defer to the compositor for drag cursors
 - Support xdg-toplevel edge constraints
 - Don't offload straight-alpha textures
 - Use tablet protocol v2
 - Add gdk_wayland_toplevel_get_xdg_toplevel

* Macos:
 - Fix a crash when unfullscreening windows

* Android:
 - Rework the initialization procedure for better meson compatibility
 - Support multitouch properly
 - Add initial ime support

* Demos:
 - Add bash completion support
 - Drop the "Search Entry" demo

* Tools:
 - Add bash completion support
 - Add an --offload flag to gtk4-rendernode-tool

* Debugging:
 - Reintroduce GTK_DEBUG=touch-ui to test touchscreen UI
 - Avoid a crash when natives get unrealized

* Build:
 - Require wayland-protocols 1.44
 - Fix build with mold
 - Use ci-templates to update ci images

* Bugs fixed:
  - #5844 `gdk_surface_get_device_position: assertion 'GDK_IS_SURFACE (surface)'
    failed` on popover close (Alessandro Astone)
  - #6764 ListView: Rows are added too late and removed too early
  - #7451 Cairo device scale changes lead to significant performance regression
    in cairo blur (Sebastian Keller)
  - #7458 Random crashes
  - #7476 4.19.0: gnome-control-center missing animations (Benjamin Otte)
  - #7479 gtkmm programs fail to start on Windows with AccessKit support enabled
    (Matthias Clasen)
  - #7480 testsuite needs a run with GDK_VULKAN_DISABLE=all GDK_GL_DISABLE=all
    (Matthias Clasen)
  - #7482 Epiphany Crash in GTK file chooser when last used directory has
    insufficient filesystem permissions: "GFileInfo created without
    standard::type" (Philip Withnall)
  - #7495 Failed to link with the mold linker (Matthias Clasen)
  - #7498 TextView overlay does not scroll with content (Matthias Clasen)
  - #7510 macos: app crashes if unfullscreening window
  - #7513 Broken boxed-list ListBox (Sergey Bugaev)
  - #7520 XCompose preventing GTK4 applications from launching (again) (Matthias
    Clasen)
  - #7522 critical when selecting label with use-underline but mnemonic with
    screenreader enabled (Markus Göllnitz)
  - !7242 Add support for tablet pad relative dials (Peter Hutterer, René de
    Hesselle)
  - !8307 gsk: Go back to using subpixel y for text
  - !8391 android: Advanced "dumb" IME implementation
  - !8416 gtk: Reintroduce touchscreen simulation
  - !8424 [gtk4] fix gdk_x11_surface_get_frame_extents with window borders.
  - !8433 GtkGLArea: add note to docs regarding the output framebuffer
  - !8434 build: Add bash completion support
  - !8435 gtk-demo: Remove the "Search Entry" demo (Benjamin Otte)
  - !8436 gtk-demo: Remove the "Search Entry" demo (Benjamin Otte)
  - !8438 wayland: Don't set the selected cursor in init (Matthias Clasen)
  - !8439 More commandline completion (Matthias Clasen)
  - !8440 Keep renaming renderers (Matthias Clasen)
  - !8441 Add Clear keybindings (Matthias Clasen)
  - !8442 ci: Make fedora-clang run tests (Matthias Clasen)
  - !8443 wayland: Add missing wp-color flag (Benjamin Otte)
  - !8444 gtkfilechooserwidget: Handle the case of a saved location being
    inaccessible (Matthias Clasen, Philip Withnall)
  - !8445 wayland: Add support for xdg-toplevel edge constraints (Matthias
    Clasen, Jonas Ådahl)
  - !8447 various Vulkan fixes (Benjamin Otte)
  - !8448 Misc small fixes (Matthias Clasen)
  - !8451 widget: Check layout-related invariants (Matthias Clasen)
  - !8453 accessible: Don't update platform state too early (Matthias Clasen)
  - !8454 rendernodeparser: Fail properly if the texture couldn't be parsed
    (Benjamin Otte)
  - !8455 widget: Drop long-dead code
  - !8456 android: Add toplevel surface in bindNative
  - !8458 widget: Drop some unnecessary checks
  - !8460 gdk: Add missing since marker to gdk_toplevel_get_capabilities()
    (Sebastian Dröge)
  - !8463 android: Rework initialization procedure (Florian "sp1rit"​)
  - !8467 fix: Remove redundant assignment in _gdk_win32_surface_procedure
  - !8468 gtkapplicationwindow: Improve measuring menubar (Sergey Bugaev)
  - !8469 css: Error if the background color is invalid (Benjamin Otte)
  - !8471 early exit  if the clipped bound rectangle's area is zero after
    snapping (Doublonmousse, DoublonMousse)
  - !8472 Various fixes and cleanups (Benjamin Otte)
  - !8473 listbase: Fix row visibility (Vladimir Vaskov)
  - !8474 GtkBuilder docs - fix XML tag syntax
  - !8475 docs: recommend using properties instead of child (g.willems)
  - !8476 rendernodeparser: Avoid an extra Cairo surface (Benjamin Otte)
  - !8478 Add toplevel gravity
  - !8479 wayland: Rely on upstream cursor-shape protocol (Matthias Clasen)
  - !8482 Drop old NEWS
  - !8484 nodeparser: Fix Cairo node parsing (Benjamin Otte)
  - !8485 wayland: Refactor color a bit
  - !8486 gdk: Add missing function docs (Bilal Elmoussaoui)
  - !8488 msys: Make -Werror work (Benjamin Otte)
  - !8489 Don't offload straight-alpha textures
  - !8490 memorylayout: Fix check (Benjamin Otte)
  - !8491 win32: Drop GdkWin32Screen (Benjamin Otte)
  - !8492 wayland: Check alpha before offloading (Matthias Clasen)
  - !8493 macos: fix crash when unfullscreening windows (Arjan Molenaar)
  - !8495 tooltipwindow: Propagate child request mode (Sergey Bugaev)
  - !8497 mediastream: Don't mark :prepared as writable (Sergey Bugaev)
  - !8500 android: Support multitouch (Florian "sp1rit"​)
  - !8504 Update macOS job for new CI runner (René de Hesselle)
  - !8506 node-editor: Always try adding the Vulkan renderer (Benjamin Otte)
  - !8507 win32: Remove lots of code (Benjamin Otte)
  - !8508 drawcontext: Add opaque "context_data" to begin/end_draw (Benjamin
    Otte)
  - !8509 Switch to ci-templates (Carlos Garnacho)
  - !8511 wayland: Rename gdkshm.h and gdkfractionalscale.h (Matthias Clasen)
  - !8513 file-chooser-dialog: Make the search button a11y label a tooltip
    (Lukáš Tyrychtr)
  - !8516 label: set GDK_KEY_VoidSymbol when use-underline is set but no key is
    found (Markus Göllnitz)
  - !8517 docs: Small fixes (Sébastien Wilmet)
  - !8518 widget: Warn if request modes are stale (Matthias Clasen)
  - !8519 ci: Try to fix the arm build (Matthias Clasen)
  - !8521 a11y atspi: Add null check in get_keybinding (Michael Weghorn)
  - !8523 win32: Introduce hr_warn() (Benjamin Otte)
  - !8524 Add gdk_wayland_toplevel_get_xdg_toplevel (Matthias Clasen)

* Translation updates:
  - Belarusian (Віктар Гаўрылавец)
  - Bulgarian (Alexander Shopov)
  - Catalan (Jordi Mas i Hernandez)
  - Chinese (China) (Luming Zh)
  - Czech (Daniel Rusek)
  - Hungarian (Balázs Úr)
  - Lithuanian (Aurimas Černius)
  - Polish (Piotr Drąg)
  - Portuguese (Hugo Carvalho)
  - Russian (Artur S0)
  - Slovenian (Martin)
  - Spanish (Daniel Mustieles)
  - Turkish (Emin Tufan Çetin)


Overview of Changes in 4.19.0, 06-04-2025
=========================================

* GtkBuilder
 - Allow translating constant expressions
 - Fix a problem with translated menu attributes

* GtkWindow no longer force-unmaximizes windows on initial map

* GtkCalendar has gained a date property

* GtkSearch entry no longer captures the enter key

* GtkVideo supports YUV formats

* Wayland
 - Don't load themed cursors anymore, since we rely on the cursor-shape
   protocol now. A fallback set of unthemed cursors is still provided
   as a last resort
 - Require wl_output version 2 and xdg_output version 3
 - Survive without linux_dmabuf
 - Use the xdg_toplevel_icon protocol for window icons

* GDK:
 - The GdkMemoryFormat enum has gained entries for the most common
   YCbCr multi-planar formats (NV12, P010, YUV410, etc)
 - GdkMemoryTextureBuilder can set offsets and strides per plane,
   allowing the creation of yuv memory textures
 - GdkTextureDownloader allows downloading data in multi-planar formats

* GSK:
 - Fix mimap handling in Vulkan
 - Introduce the concept of (non-)downloadable images
 - Introduce the concept of subsampled and multi-planar images
 - Handle YUV content more correctly

* Tools:
 - inspector: Show OS information
 - inspector: Improve event visualization in the recorder
 - image-tool: Allow convert to write out .node files

* Demos:
 - gtk4-demo: Make the paint demo work with touch
 - gtk4-demo: Improve the zoom demo with touch
 - gtk4-demo: Improve the dnd demo with touch
 - gtk4-demo: Make the GLArea demo work on Android

* Bugs fixed:
  - #583 GtkHeaderBar: Close button's mouse-over area doesn't extend to top-
    right pixel when maximized (fitts' law)
  - #6874 GtkListBox keyboard activation
  - #7397 [feature] implement `xdg-toplevel-icon-v1` (Matthias Clasen)
  - #7447 4.18.3 regression: cursor doesn't update state when crossing window
    boundaries (Matthias Clasen)
  - #7459 Gtk.Video causes segfault inside VM with wayland backend (Matthias
    Clasen)
  - #7466 Win32: can't resize or move windows anymore (Matthias Clasen)
  - #7469 inspector: event recording is buggy for multi-surface situations
    (Matthias Clasen)
  - #7471 inspector: show bounds of widgets in event propagation traces
  - !7914 Add new Memoryformats and CICP matrix coefficients
  - !8320 builder: Translatable constant expressions
  - !8343 GtkCalendar: Introduce a date property
  - !8345 dnd: Move drag cursor selection to backends
  - !8352 wayland: Drop themed client-side cursors
  - !8364 wayland: Add GDK_WAYLAND_DISABLE
  - !8371 inspector: fix capitalization
  - !8373 Update our ci image to Fedora 42
  - !8374 gi: Dynamically set doc-format
  - !8375 testsuite: Make reftest-compare use gsize instead of int
  - !8376 inspector: Survive without installed schemas
  - !8380 inspector: SHow the a11y backend
  - !8381 Drop Timm from the list of maintainers
  - !8383 broadway: Drop pointless vfuncs
  - !8389 window: Set fullscreen/maximize on present only if needed
  - !8392 gdksurface: toplevel capabilities fixes
  - !8393 x11: Try to make window default backgrounds transparent
  - !8395 wayland: Move all version defines in one place
  - !8396 wayland: Simplify output handling
  - !8397 Some refactoring of the Wayland backend
  - !8406 builder: Fix a menu parsing issue
  - !8407 window: Document handling of initial states
  - !8411 A bunch of refactorings
  - !8412 gtk/texthandle: Don't set any anchor hints
  - !8414 inspector: Show the OS
  - !8415 wayland: Refactor some code
  - !8418 wayland: Fix titlebar gesture availability
  - !8419 win32: Fix initial window state
  - !8420 gtk-demo: Improve the paint demo
  - !8425 demo: Make GL Area work as properly on Android
  - !8426 ci: Unbreak GTK Demo apk build
  - !8428 GtkGLArea: fix typo in docs
  - !8430 wayland: Fix gtk_surface handling more

* Translation updates:
  - Bulgarian (Alexander Shopov)
  - Chinese (China) (Luming Zh)
  - Czech (Daniel Rusek)
  - Lithuanian (Aurimas Černius)
  - Persian (Danial Behzadi)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Álvaro Burns)
  - Slovenian (Martin)
  - Turkish (Emin Tufan Çetin)
  - Ukrainian (Yuri Chornoivan)


Overview of Changes in 4.18.3, 29-03-2025
=========================================

* Bugs fixed:
  - #4186 GtkTextView left and right margins (Matthias Clasen)
  - #7386 Deadkeys using UFDD modifiers do not work under gtk4 apps (Matthias
    Clasen)
  - #7398 Wrong position for input method when line number is enabled.
  - #7399 uninitialized variable being used at _gdk_win32_surface_compute_size
    (Matthias Clasen)
  - #7410 Vulkan renderer : `vkCreateSwapchainKHR` errors on windows when
    opening a popover for the first time (Luca Bacci)
  - #7419 GtkTextView double click select then drag not working (Matthias
    Clasen)
  - #7423 menu is does not open on mobile since translation is too long
    (Matthias Clasen)
  - #7425 a11y:  remove_from_accessible_relation: assertion 'GTK_IS_AT_CONTEXT
    (self)' failed
  - !8316 window: Allow window resizing to always work
  - !8318 columnview: Measure header for get_border
  - !8319 vulkan: Fix copy/paste error
  - !8323 widget: Explicitly annotate visible's getter
  - !8324 build: Use accesskit-c 0.15
  - !8328 Fixed MacOS GDK issue where calling main loop iterations in some Cocoa
    event...
  - !8331 widget: Explicitly annotate sensitive's getter
  - !8333 Windows: Fix #warning not defined with MSVC
  - !8335 Add more deprecations
  - !8336 Emit inclusion warning only in normal use
  - !8339 Fix Double-Free Issue in GTK Print Backend CPDB
  - !8341 wayland: Avoid a warning without posix_fallocate
  - !8344 print: Add more docs
  - !8346 listbox: Don't explicitly show headers and model rows
  - !8347 Test rapid cursor changes
  - !8355 wayland: Avoid setting the same shape twice
  - !8356 Drop an unused field
  - !8357 build: Improve libintl function check
  - !8358 gdkglcontext-win32-wgl.c: Apply scale for glAddSwapHintRectWIN() (fix
    use on HiDPI)
  - !8359 gtklistbase: Do not select invalid positions
  - !8360 inspector: Persist some UI state
  - !8361 gstsink: Set the actual buffer size
  - !8362 menus: prefer standard shortcuts over action keys
  - !8363 wayland: Stop using syscall() for memfds
  - !8367 memoryformat: Remove unneeded GL header
  - !8368 Improve BEPO compose sequence visuals

* Translation updates:
  - Romanian (Antonio Marin)
  - Spanish (Daniel Mustieles)


Overview of Changes in 4.18.2, 16-03-2025
=========================================

* GtkPopoverMenu:
 - Fix a sporatic crash that affected Showtime

* X11:
 - Fix interactions between scaling and the cairo renderer
   that broke the mutter-x11-frame client

* Windows:
 - Fix a lockup in AdwTabOverview with the GL renderer
 - Don't default to Vulkan

* Android:
 - Make fullscreen work as expected

* Bugs fixed:
  - #7407 Segfault on setting popover child of a MenuButton (Matthias Clasen)
  - #7408 Transparent/bugged close button on titlebar in 48.rc (Benjamin Otte)
  - #7409 Gtk 4.18 erroneously defaults to vulkan on windows (Matthias Clasen)
  - #7411 `AdwTabOverview` only works with the vulkan renderer (on windows)
    (Matthias Clasen)
  - !8306 android: Implement fullscreen for AndroidToplevel
  - !8308 clipboard: Plug a memory leak
  - !8309 wayland: Avoid leaks in drag surfaces
  - !8310 android: Wait for main thread to idle before updating IME
  - !8314 roaring: Use g_malloc/g_free

* Translation updates:
  - English (United Kingdom) (Bruce Cowan)


Overview of Changes in 4.18.1, 14-03-2025
=========================================

Note: This release makes the use of the Wayland color-management protocol
opt-in, since our code is not quite ready for being used by default yet.
To enable the color management protocol, use GDK_DEBUG=color-mgmt.

* macOS: Make fractional scaling work again

* Android: Provide a GL renderer

* Bugs fixed:
  - #7386 Deadkeys using UFDD modifiers do not work under gtk4 apps (Matthias
    Clasen)
  - #7390 recorder.ui's action items made available for translation (Matthias
    Clasen)
  - #7402 Trying to measure GtkPopover 0x42761b0 for height of 277, but it needs
    at least 313 (Sergey Bugaev)
  - #7406 Nautilus crashes when try to pin any folder as a new bookmark on the
    side panel. (Matthias Clasen)
  - !8191 treeview: Drop cell-only states when rendering the empty bottom area
  - !8237 paned: Fix handle jump on drag start
  - !8258 Revamp the portal check
  - !8260 fix: Fix the type conversion (gtk demo) in the gtkgear example
  - !8262 bitset: Fix annotations
  - !8268 Add another font testcase
  - !8269 inspector: Make editing attributes work
  - !8270 docs: Add some a11y references
  - !8271 docs: fix typo
  - !8272 inspector: Don't translate action names
  - !8273 macos: Fix HiDPI rendering on macOS
  - !8274 call nproc once in gdk parallel
  - !8276 docs: Clarify invalidation replacements
  - !8278 android: Introduced partial OpenGL backend
  - !8280 Tweak text layout
  - !8282 inspector: Allow editing PangoTabArrays
  - !8283 egl: modifers must be an array
  - !8284 gpu: Make sure we actually download dmabuf textures again
  - !8285 Make color management opt-in
  - !8287 Improve key event logging
  - !8288 Tweak font rendering more
  - !8289 API: Deprecate gdk_surface_create_cairo_context()
  - !8291 Use gtk_shell version to announce wl_surface.offset support for cursors
  - !8292 gsk: Fix multiple clipping of partial pixels
  - !8294 vulkan: Prepare for Vulkan using wp-color-v1
  - !8296 gsk: Pad text node bounds
  - !8298 window: Fix destroying with transient parent
  - !8299 stack: Fix adjusting child allocation

* Translation updates:
  - Basque (Asier Saratsua Garmendia)
  - Bulgarian (Alexander Shopov)
  - Catalan (Jordi Mas i Hernandez)
  - Chinese (China) (Luming Zh)
  - Czech (Daniel Rusek)
  - Danish (Ask Hjorth Larsen)
  - French (Vincent Chatelain)
  - Galician (Fran Dieguez)
  - Georgian (Ekaterine Papava)
  - Hebrew (Yosef Or Boczko)
  - Hungarian (Balázs Úr)
  - Indonesian (Andika Triwidada)
  - Korean (Changwoo Ryu)
  - Lithuanian (Aurimas Černius)
  - Persian (Danial Behzadi)
  - Polish (Piotr Drąg)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Artur Miranda)
  - Russian (Artur S0)
  - Slovenian (Martin)
  - Swedish (Anders Jonsson)
  - Turkish (Sabri Ünal)
  - Ukrainian (Yuri Chornoivan)


Overview of Changes in 4.17.6, 04-03-2025
=========================================

Note: The buffer sizing fixes in this release are known to
not work with fractional scales on macOS. This will hopefully
be fixed soon. In the meantime, you can use the cairo renderer.

* GSK rendering issues on Asahi Linux are fixed

* Buffer sizing issues with fractional scaling are fixed

* GtkFontChooser scrolls to the initially selected font

* Font rendering with the new default GNOME font is improved

* The Wayland cursor shape protocol is supported

* Initial focus for popups on Android is fixed

* Bugs fixed:
  - #3184 Application crashes when presenting popover menus (Matthias Clasen)
  - #4019 Crash on ListBoxRow.get_index (Matthias Clasen)
  - #6455 GtkFlowBox aligns incorrectly with GTK_ALIGN_END and
    min/max_children_per_line (Gergo Koteles)
  - #6817 Null pointer dereference in gdk_surface_request_motion (Matthias
    Clasen)
  - #7146 GSK issues illegal render ops with load=dont-care and blend=over with
    Wayland fractional scaling, causing graphical corruption (Benjamin Otte)
  - #7282 memorytexture testsuite fails the float tests (Benjamin Otte)
  - #7314 Incorrect height calculations with fractional scaling under vulkan
    renderer (violates vulkan validation layers) (Benjamin Otte)
  - #7369 GtkTextView does not claim all click gestures (Maximiliano Sandoval)
  - #7370 activating `GDK_DEBUG=EVENTS` crashes the application if a touch event
    occurs (Matthias Clasen)
  - #7384 Comment required for search string (Matthias Clasen)
  - !6617 Fix measuring label min wfh with wrap+ellipsize+lines
  - !6635 gtkmodelbutton: Always close submenus when changing parent item
  - !7746 ci: Regenerate Fedora image from F41
  - !8028 fontchooser: scroll to selected font
  - !8111 macos: Re-enable macOS GIR generation
  - !8154 adjustment: Verify that values are finite
  - !8156 Clarify hide-on-close documentation
  - !8188 gdkkeys-win32: Add keymap get_active_layout_index/get_layout_names
  - !8231 docs: Fix the missing image in the picture screenshots
  - !8232 gdk: Fix spelling for GdkAndroidDisplayNightMode enum value nick
  - !8234 wayland: Update color coordinates for extra precision
  - !8235 Drop GskProfiler
  - !8241 macos: Do not occupy space for window buttons when full screen
  - !8242 android: Update focus state on motion events for autohide surfaces
  - !8243 gdk: Deprecate gdk_cairo_context_cairo_create()
  - !8246 cpdb: Update gtk_print_backend_cpdb_init for latest CPDB version
  - !8247 wayland: Support the cursor-shape protocol
  - !8248 docs: Fix an image name
  - !8250 macos: Track number of button widgets realized on a window
  - !8251 wayland: Go back to the old none cursor
  - !8253 Bring back unhinted extents
  - !8256 wayland: Fix none cursor check
  - !8263 inspector: Show font options
  - !8264 Try again to fix font rendering

* Translation updates:
  - Basque (Asier Sarasua Garmendia)
  - Bulgarian (twlvnn kraftwerk, Alexander Shopov)
  - Catalan (Jordi Mas i Hernandez)
  - Chinese (China) (Luming Zh)
  - Czech (Daniel Rusek)
  - Finnish (Jiri Grönroos)
  - Galician (Fran Dieguez)
  - Georgian (Ekaterine Papava)
  - Hebrew (Yosef Or Boczko)
  - Indonesian (Andika Triwidada)
  - Korean (Changwoo Ryu)
  - Lithuanian (Aurimas Černius)
  - Persian (Danial Behzadi)
  - Polish (Piotr Drąg)
  - Portuguese (Hugo Carvalho)
  - Portuguese (Brazil) (Rafael Fontenelle)
  - Slovenian (Martin)
  - Spanish (Daniel Mustieles)
  - Turkish (Sabri Ünal)
  - Ukrainian (Yuri Chornoivan)


Overview of Changes in 4.17.5, 23-02-2025
=========================================

* Numeric mode in GtkSpinButtons works again

* Client-side dialogs can be made fully modal

* Portals work better for unsandboxed apps, by registering

* Editable labels have a context menu

* GtkListBox size allocation has been improved

* We require wayland 1.23 and wayland-protocols 1.41

* We use the wp_color_manager_v1 protocol for color management under Wayland

* Most screenshots in the documentation have a dark variant

* GtkBuilder allows inline definition for GMenu-valued properties

* Headerbars can use native window controls on macOS

* Bugs fixed:
  - #4353 Keyboard: Set shortcut does not work for key-codes > 247 (Matthias
    Clasen)
  - #5125 Demo / Menu: Popup at wrong position, hangs on Wayland (Matthias
    Clasen)
  - #5815 builder: integrate menus more properly (Matthias Clasen)
  - #6010 gtk4-demo > Lists > Selections emits CRITICALS (Matthias Clasen)
  - #6272 a11y: API for updating platform state for custom GtkAccessible
    implementations is missing (Emmanuele Bassi)
  - #6355 gtk_widget_compute_transform() not working correctly with GtkPopover
    (Alessandro Astone)
  - #6379 GtkListBox crashes if the placeholder is focused and then TAB is
    pressed
  - #7191 Have a way to block parent shortcuts in AdwDialog (Matthias Clasen)
  - #7215 Changing the click behavior of Gtk.EditableLabel (Matthias Clasen)
  - #7229 GSK/vulkan uses mipmaps without checking the formats/tiling
    `VkImageFormatProperties.maxMipLevels` (Janne Grunau)
  - #7249 Cursor hotspot and cursor image are not updated atomically on Wayland
    (Carlos Garnacho)
  - #7257 Unexpected spacing at the end of a textview when using child widgets.
    (Sergey Bugaev)
  - #7286 GtkApplicationWindow show-menubar documentation inconsistent
  - #7307 GtkAppChooserWidget doesn't fit in a mobile screen (Automeris naranja)
  - #7310 Inspector showing child widgets & controllers twice (Florian
    "sp1rit"​)
  - #7311 GtkSpinButton:numeric=True doesn't work (Matthias Clasen)
  - #7312 Dead link in common questions
  - #7321 mem leak in emoji chooser (Matthias Clasen)
  - #7322 invalid array index use
  - #7324 Missing support for F17, F18, F19 and F20 keys on MacOS (Elisa Pau)
  - #7334 Gtk password inputs should expose the displayed text (e.g. black
    circles) via AT-SPI; not the underlying value (Emmanuele Bassi)
  - #7340 Job Failed #4757144: Meson error
  - !7951 ListBox hacking
  - !8071 macos: Native window controls
  - !8073 gpu: Fix off-by-one error in gsk_vulkan_mipmap_levels
  - !8155 application: Register host apps with portal
  - !8177 Small Android fixes
  - !8178 Fix typo in `FileLauncher.set_always_ask` docs
  - !8179 gdk/wayland: Use forgotten include guards
  - !8180 docs: fix some typos, mainly closing ticks
  - !8184 android: Provide Gdk.FOCUS_CHANGE events
  - !8187 demos: Fix gettext domain in metainfo
  - !8195 gtk-demo: Tweak the fixed demo
  - !8196 settings: Fix GdkDisplay values ignored at init
  - !8197 popovermenubar: Do not steal the focus on hover
  - !8198 gi: Add missing annotation to WaylandSurface.force_next_commit
  - !8200 rendernode: Add fixed-size annotations
  - !8201 fontdialogbutton: Gracefully handle unknown font
  - !8205 Update getting_started.md - point to Gtk.Widget.present instead of
    show
  - !8206 docs: Fix 'Title overline too short' error
  - !8207 Update getting_started for gdk_surface_create_similar_surface
    depreaction
  - !8208 a11y: Fix issues in text attribute run logic
  - !8210 gdk: Small documentation improvements
  - !8211 wayland: Use the wp_color_manager_v1 protocol
  - !8217 macos: Disable animations if setting "Reduce Motion" is active
  - !8219 application: Clean up dangling inhibitor surface
  - !8221 gtk-demo: Improve colors of triangle in GLArea demo
  - !8222 vulkan: Fix max amount of modifiers per format
  - !8223 docs: Add dark variants to widget gallery
  - !8224 docs: Fix gallery images for menus
  - !8228 gsk: Don't color-convert empty surfaces
  - !8229 gdk: Remove GDK_DEBUG=gl-no-fractional

* Translation updates:
  - Catalan (Jordi Mas)
  - Chinese (Taiwan) (Chao-Hsiung Liao)
  - French (Vincent Chatelain)
  - Georgian (Ekaterine Papava)
  - Nepali (Pawan Chitrakar)
  - Persian (Danial Behzadi)
  - Polish (Piotr Drąg)
  - Slovenian (Martin)


Overview of Changes in 4.17.4, 01-02-2025
=========================================

This release introduces a new backend, which allows running
GTK applications on Android phones. It is still considered
experimental. Feedback and improvements are welcome!

We have a ci job that produces signed apks for gtk4-demo,
to make it easy to try this out.

* GtkFileChooser:
 - Stop replacing : (colon) with U+2236 (ratio)

* GtkSpinButton:
 - Avoid out-of-bounds values in some cases

* GtkWindow:
 - Send expected a11y events when a window is closed
 - Change accessible role back to GTK_ACCESSIBLE_ROLE_WINDOW

* GtkLabel:
 - Make context menus keyboard-navigatable

* GtkVideo:
 - Support rotated videos

* GDK:
 - Add a way to retrieve keyboard layout information
 - Use libpng api for cicp if available

* GSK
 - Drop the old GL renderer

* Accessibility:
 - Maintain inverse relations

* macOS:
 - Enable AccessKit in ci
 - Fix inverted pen tilt

* Deprecations:
 - The x11 backend
 - The Broadway backend

* Build:
 - Require cairo 1.18.2

* Bugs fixed:
  - #6755 Accessible `window:activate` events missing for Gtk4 (Matthias Clasen)
  - #6823 Enumeration values starting with numbers (Matthias Clasen)
  - #7210 ci: Build with -Daccesskit=enabled on macOS
  - #7228 gtk4-demo settings demo does not actually write settings (Matthias
    Clasen)
  - #7246 Cannot navigate context menu of GtkLabel with keyboard
  - #7268 RFC: API to query the current keyboard layout ?
  - #7271 Test failures with libpng-1.6.45 (Alessandro Astone)
  - #7279 GTKFileChooserWidget incorrectly displays "Modified" time of file when
    format should be "%H:%M" (Matthias Clasen)
  - #7294 Hovering buttons causes "g_object_unref: assertion 'G_IS_OBJECT
    (object)' failed" (Matthias Clasen)
  - !7555 Introducing new android backend
  - !8017 gdk: fix crash on Wayland with already destroyed surface.
  - !8060 Deprecate the X11 backend
  - !8115 Introduce the label for relation and the concept of reverse relations
  - !8118 Prepare the 4.17.3 release
  - !8119 Post-release version bump
  - !8121 vulkan: Handle VK_PRESENT_MODE_FIFO_LATEST_READY_EXT
  - !8124 Fix the archive URL for Boost
  - !8126 docs: Mark GtkShortcutsWindow as deprecated
  - !8127 tools: Drop support for the gl renderer
  - !8128 spinbutton: Consider adjustment value sanitization
  - !8129 Drop test exclusions for the gl renderer
  - !8133 ci: Move subproject download and update over to a separate job
  - !8134 Keep installing gsk/gl/gskglrenderer.h
  - !8137 gtktextattributes and gtkaccessible copy-paste errors
  - !8138 gtk-demo: Plug a memory leak
  - !8139 window: Hide accessible earlier
  - !8140 Keep installing gsk/gl/gskglrenderer.h
  - !8142 gtk4-builder-tool: Plug a few memory leaks
  - !8144 macos: fix broken accounting messages and click after moving the
    window
  - !8147 Docs: Small fixes
  - !8148 text: Correct the documentation
  - !8150 Avoid using deprecated GtkWindow::keys-changed internally
  - !8151 gstreamer: Implement rotation tag support
  - !8157 gstreamer: Improve rotation tag support
  - !8160 docs: Don't recommend usage of deprecated ToggleButton method
  - !8163 gdk/contentserializer: Force specific URI schemes to serialize as URI
  - !8164 gdk/wayland: Ensure to generate grab broken events before crossings
  - !8166 filedialog: fix typo in docs
  - !8167 macos: Gtk4: Fix inverted pen Y tilt on macOS

* Translation updates:
  - Slovenian (Martin)
  - Thai (Aefgh Threenine)


Overview of Changes in 4.17.3, 16-01-2025
=========================================

* GtkText:
 - Consume Ctrl-A
 - Handle Cut', Copy, Paste, Undo, and Redo keys
 - Improve a11y representation

* GtkLabel:
 - Consume Ctrl-A when we handle it
 - Pass mnemonics to a11y

* GtkTextView:
 - Handle Cut, Copy, Paste, Undo, and Redo keys
 - Fix disappearing carets after focus changes

* GtkFileChooser:
 - Handle Find keys
 - Set a11y label on Search button
 - Set a11y labels on pathbar buttons
 - Pass key-shortcuts for the "New folder" button

* GtkAppChooser:
 - Fix sorting

* GtkListBox:
 - Improve a11y representation

* GtkColumnView:
 - Fix column dnd in right-to-left context

* GtkWindow:
 - Make resize corners gapless with rounded corners

* GtkPopoverMenu:
 - Show mnemonics on Alt press

* GtkMenuButton:
 - Improve a11y representation

* GtkFileDialog:
 - Fix a crash
 - Add more text file api variants

* GtkSizeGroup:
 - Improve consistency measurements and allocations

* GtkBuilder:
 - Parse tab arrays and font descriptions in Pango syntax

* Wayland:
 - Rely on scale events for pointer surfaces
 - Make idle inhibit work with fullscreen subsurfaces

* Accessibility:
 - Implement GetKeyBinding properly for actions
 - Set key-shortcuts attribute
 - Fix state change notification for some states
 - Set application ID attribute

* MacOS:
 - Make the NGL renderer work again

* GSK:
 - Don't double-clip edges for shadows

* Demos:
 - widget-factory: Set alternative text on pictures
 - gtk-demo: Allow to run as a service

* Deprecations:
 - GtkShortcutsWindow
 - Loading themes from ~/.themes
 - <child> in ui files where child properties exist

* Translation updates:
 Brazilian Portuguese
 Georgian
 Turkish


Overview of Changes in 4.17.2, 26-12-2024
=========================================

* GtkWindow:
 - Rework computing the minimum size

* GtkPicture:
 - Fix measuring with content-fit = scale-down

* GtkStack:
 - Report constant size request mode in more cases
 - Avoid measuring children aginst preferred request mode
 - Fix measuring during size interpolation

* GtkFlowBox:
 - Improve size request mode reporting
 - Fix measuring minimum height
 - Fix measuring natural width
 - Implement hfw vai binary search

* GtkScrolledWindow:
 - Report constant size request mode in more cases
 - Skip measuring children if we can

* GtkBox:
 - Don't always reserve height for baseline alignment
 - Rework natural opposite size-for-size computation
 - Add fast paths for some cases of measurement and allocation

* GtkLayoutManager:
 - Skip invisible children for request mode determination
 - Prefer hfw, all things being equal

* GtkColorPicker:
 - Respect GDK_DEBUG=no-portals

* GtkEntry:
 - Stop guessing text direction from keyboard layout
 - Add a shortcut and context menu item to change text direction

* GtkSpinButton:
 - Make numeric spin buttons always LTR

* GtkAboutDialog:
 - Small UI improvements

* Accessibility:
 - Add an AccessKit backend. Use -Daccesskit=enabled to build it
   and GTK_A11Y=accesskit to use it

* Windows:
 - Drop the AeroSnap emulation

* Wayland:
 - Always clear exported surface IDs on finalize
 - Use the correct display for imcontext

* Vulkan:
 - Make GdkVulkanContext work with Android armv7

* Build:
 - Require GLib 2.80
 - Require harfbuzz 8.4
 - Require pango 1.55
 - Require C11

* Translation update:
 Russian


Overview of Changes in 4.17.1, 06-12-2024
=========================================

This release switches our portal support from opt-in to opt-out.
We will use portals by default, unless you set GDK_DEBUG=no-portals.
And we will *always* use portals in flatpaks.

* Text rendering:
 - Make error underlines smaller

* GtkText:
 - Avoid selecting inserted Emoji

* GtkPlacesView:
 - Improve accessibility

* GtkFileChooser:
 - Fix a case where search was stealing focus

* GtkEmojiChooser:
 - Update to CLDR 46 / Unicode 16

* Accessibility:
 - Fix DBus signature of ChildrenChanged

* GDK:
 - Don't recycle threads too aggressively
 - Add GDK_DISABLE=threads to disable threaded operations
 - Improve parallelization for small tasks

* GSK:
 - Make occlusion checking more effective
 - Clip luminosity when clipping colors (avoiding masking artifacts)
 - Fix problems with dihedral transforms

* Vulkan:
 - Streamline Vulkan setup
 - Fix blurry rendering at certain scale/size combinations

* OpenGL:
 - Conform to buffer offset alignment requirements

* Windows:
 - Fix pasting certain bitmaps

* Documentation:
 - Revise and modernize some docs

* Debugging:
 - Inspector: Show surfaces and renderers in the tree
 - Inspector: Make the object tree resizable
 - Inspector: Add a "Copy for gitlab" button

* Translation updates
 Icelandic
 Serbian
 Slovenian


Overview of Changes in 4.17.0, 06-11-2024
=========================================

* GtkScrolledWindow
 - Fix criticals in size allocation code

* GtkFileChooser
 - Fix a crash in the portal code

* GtkFontChoser
 - Make the dialog more shrinkable

* GtkPicture
 - Avoid unnecessary resizes

* GtkVideo
 - Make dmabufs work without GL

* GtkListBox:
 - Add a tab-behavior property to influence keynav

* GtkEmojiChooser:
 - Fix problems with insertion and selection

* GtkStringList:
 - Add gtk_string_list_find

* GtkApplication:
 - Respect GDK_DEBUG=no-portals
 - Set default window icon from app ID

* GtkTextView:
 - Vertical and horizontal positioning of the textview is now quantized
   to the nearest device pixel. This should improve the perceived smoothness
   of scrolling with fractional scaling and font hinting.
 - Incorrect re-use of cached styling was fixed
 - Fix some missing CSS invalidation
 - Handle charsets in clipboard datatypes

* Printing:
 - Avoid warnings for avahi errors
 - Fix a segfault in the print dialog setup code

* Accessibility:
 - Always realize non-widget accessibles, to help webkit
 - Fix list view selection implementation
 - Handle NULL values in more places

* Gstreamer:
 - Make dmabufs works without GL

* Gdk:
 - Add OKLAB and OKLCH color states
 - GL: Drop support for GLES 2 and GL < 3.3
 - GL: Use the ngl dmabuf downloader instead of the GL downloader
 - Vulkan: Drop the GDK_VULKAN_DEVICE env var. Use MESA_VK_DEVICE_SELECT instead
 - Vulkan: Use the swapchain maintenance extension to release swap images
 - Forbid opening displays before gtk_init()

* Gsk:
 - Many improvements to the dmabuf downloaders
 - ngl: Avoid glBufferSubData for globals, speeding up llvmpipe
 - Renderer selection will no longer consider the GL renderer
 - Allow Vulkan software rendering as fallback
 - Support gradient interpolation in different color states

* Wayland:
 - Improve settings portal handling
 - Improve fallback for cursor themes
 - Make cursor theme changes apply immediately
 - Use a viewporter for cursor image scaling
 - Improve cursor size handling
 - Use the system bell protocol if available
 - Fix possible deadlock with high-priority sources triggering roundtrips

* Windows:
 - Improve the backend code
 - Fix some problems with WGL on NVidia
 - Many testsuite fixes for Windows compatibility
 - Make all pixbuf loaders builtin in the gdk-pixbuf subproject
 - Add GDK_DISABLE=aerosnap to disable aerosnap
 - Improve clipboard handling
 - Fix behavior or gdk_display_open() on Windows
 - Numerous papercut fixes
 - Require Windows 10

* Macos:
 - Fix crashes when dragging libadwaita TabView tabs
 - Require macOS 10.15

* Tools and demos
 - gtk4-demo: Make demos standalone
 - gtk4-demo: Drop GL shader demos
 - gtk4-demo: Improve scrolling benchmarks
 - gtk4-builder-tool: Improve separator handling
 - gtk4-image-tool: Better color state support

* Build:
 - Don't set GSK_RENDERER in our flatpaks
 - Require meson 1.2

* Translation updates
 Belarusian
 Brazilian Portuguese
 British English
 Galician
 Lithuanian
 Romanian
 Slovenian
 Swedish


Overview of Changes in 4.16.2, 09-25-2024
=========================================

* GtkLabel:
 - Fix centered text in RTL

* Gsk:
 - Speed up some Vulkan operations
 - Improve startup speed by avoiding initialization
   of GL and Vulkan in most cases
 - Reduce critials at startup to warnings
 - Fix a crash on startup with some Vulkan drivers
 - Fix a big texture leak in NGL

* Gdk:
 - Speed up memory format conversions

* Wayland:
 - Be more careful with mimetypes during DND or copy-paste

* Tools:
 - builder-tool: Improve conversion of boxes

* Translation updates:
 Brazilian Portuguese
 Bulgarian
 Catalan
 Chinese (China)
 Georgian
 German
 Hebrew
 Indonesian
 Persian
 Polish
 Portuguese
 Slovenian
 Spanish
 Turkish
 Ukrainian


Overview of Changes in 4.16.1, 09-16-2024
=========================================

* GtkFileChooser:
 - Plug a memory leak

* GtkCalendar:
 - Avoid ending up with invalid dates

* Printing:
 - Fix initial printer selection in the print dialog

* Gsk:
 - Fix shadows for opaque textures
 - Fix a crash in a corner case

* Css:
 - Make relative paths work again in theme files

* Accessibility:
 - Fix detection of the Flatpak portal

* MacOS:
 - Fix keyboard input in popovers
 - Keep DND icons above regular windows
 - Ignore events from DND icons

* Translation updates
 Basque
 British English
 Bulgarian
 Czech
 Danish
 Georgian
 Hungarian
 Lithuanian
 Portuguese
 Spanish
 Swedish


Overview of Changes in 4.16.0, 09-06-2024
=========================================

Note: This release changes the default GSK renderer to be Vulkan,
on Wayland. Other platforms still use ngl. The intent of this change
is to use the best available platform APIs. You can still override
the renderer choice using the GSK_RENDERER environment variable.

We believe that most of the problems reported with the new renderers
during the 4.13 and 4.15 development cycles have been addressed by now.

But the new renderers and dmabuf support are using graphics drivers
in different ways than the old gl renderer, and trigger new driver bugs.
Therefore, it is recommended to use the latest mesa release (24.2)
with the new renderers.

* GtkScale:
 - Fix positioning of scale values

* GtkEmojiChooser:
 - Make Control-clicks work for the recent section

* GtkPopover:
 - Make sure focus lands on the right widget when cascading

* GtkSpinButton:
 - Disable Emoji input for numeric spin buttons

* GtkSingleSelection:
 - Implement unselect_all

* Accssibility:
 - Fix roles for radio buttons
 - Check if ATs are listening before exporting trees
 - Add a check for sandboxed accessibility bus
 - Fix handling of the error message relation
 - Turn criticals into debug messages
 - Set expanded states properly in menus

* CSS:
 - Fix a few issues on bigendian systems
 - Avoid a crash with relative colors

* GSK:
 - Use the right GL context when exporting textures
 - Don't let colors influence depth decisions
 - Allow uploading of mipmap levels when tiling textures

* GDK:
 - Update keysyms from libX11 1.8.10
 - Implement cpu-side mipmapping
 - Use a thread pool for color conversions and mipmapping

* Vulkan:
 - Fix drag surface offsets

* Wayland:
 - Fix a crash
 - Associate EGL windows with context later

* X11:
 - Fix initial EGL context creation
 - Fix a problem with GL context creation

* Broadway:
 - Implement compute_size and request_layout

* MacOS:
 - Set transparent backgroiund for toplevel windows

* Windows:
 - Improve debug output
 - Detect Mesas d3d12 driver and request GDI compat

* Demos:
 - Set window icons in demos
 - Add a 64k x 64k image to the image scaling demo

* Translation updates
 Belarusian
 Brazilian Portuguese
 Catalan
 Czech
 Galician
 German
 Hebrew
 Indonesian
 Korean
 Lithuanian
 Persian
 Polish
 Portuguese
 Slovenian
 Spanish
 Turkish
 Ukrainian


Overview of Changes in 4.15.6, 08-26-2024
=========================================

* GtkCheckButton:
 - Add a grouped style class for radio buttons

* GtkScale:
 - Fix alignment and positioning problems

* Css:
 - Fix crashes in the variable support

* Gsk:
 - Make graphics offloading work better with kwin
 - Make colorstate transfer functions more robust
 - GC dead textures more agressively
 - Only use a single render pass per frame

* GL:
 - Round damage rectangles properly
 - Use the shared context when creating textures
 - Fix a file descriptor leak in dmabuf export

* Vulkan:
 - Round damage rectangles properly

* Wayland:
 - Work with the kwin implementation of xx-color-management-v4

* Windows:
 - Make gtk_show_uri use SHOpenWithDialog()
 - Enable incremental rendering with WGL

* Macos:
 - Open context menus on Ctrl-left click

* Debugging:
 - Show color state information in the inspector
 - Collect input event traces in the recorder
 - Add shortcuts for toggling recording: Super-r
   and for screenshots: Super-c
 - Split the GDK_DEBUG env var into GDK_DEBUG and GDK_DISABLE
 - Add GDK_DISABLE=color-mgmt and GDK_DISABLE=offload

* Tools:
 - Add a 'Paste as node' action in gtk4-node-editor

* Translations updates
 Basque
 Belarusian
 Brazilian Portuguese
 Chinese (China)
 Georgian
 Hebrew
 Hindi
 Russian
 Slovenian
 Turkish
 Ukrainian


Overview of Changes in 4.15.5, 11-08-2024
=========================================

* GtkTextView:
 - ADd GtkTextBufferCommitNotify

* CSS:
 - Propagate color state information to GSK for many features:
   colors, borders, shadows, text

* Gdk:
 - Fix an fd leak in the Vulkan code
 - Fix a leak of EGLSurfaces and DMA buffers
 - Set the opaque region of surfaces automatically based on their content

* Gsk:
 - Fix Emoji rendering in Vulkan
 - Rework color handling to take color states into account
 - Implement more powerful occlusion culling
 - Minimize our use of renderpasses

* Macos:
 - Fix window transparency

* Debugging:
 - The inspector shows details about color states

* Deprecations:
 - gdk_draw_context_begin/end_frame
 - gdk_surface_set_opaque_region

* Build:
 - Require gstreamer 1.24

* Translation updates
 Romanian


Overview of Changes in 4.15.4, 30-07-2024
=========================================

* GtkPopover:
 - Fix size allocation with wrapping labels

* GtkColumnView:
 - Check column visibility when measuring

* CSS:
 - Fix fallout from recent changes
 - Make implementation of currentcolor inheritance match browsers

* Gdk:
 - Introduce GdkColorState for encoding color space information
   Currently, we support srgb, srgb-linear, rec2100-pq and rec2100-linear
 - Add color states to GdkTexture, as well as to the texture builder
   and downloader objects, and convert as necessary
 - Add GdkMemoryTextureBuilder
 - Attach color states when loading or saving textures
 - Add GdkCicpParams to create color state objects for cicp tuples
 - Drop GDK_DEBUG=vulkan-validate
   Use VK_INSTEANCE_LAYERS=VK_LAYER_KHRONOS_validation instead

* Gsk:
 - Improve caching of glyphs and textures
 - Remove the uber shader
 - Numerous bug fixes
 - Fix corner cases in offload handling
 - Implement occlusion culling for opaque content
 - Allow offloading (some) transformed textures
 - Take colorstate into account when compositing
 - Add GDK_DEBUG=linear to opt into linear compositing
 - Implement tiling for large textures
 - Stop using descriptors and go back to simpler texture
   management that should work better with older GL
 - Use correct shader clip mode for glyphs
 - Improve shadow rendering

* Media:
 - Attach color states to textures obtained from gstreamer

* Wayland:
 - Allow offloading GL textures via dmabuf export
 - Suppot the xx-color-management-v4 protocol

* Deprecations:
 - GskGLShader and the render node

* Tools:
 - Improve the rendernode tool extract command
 - Add an image tool that is about manipulating textures

* Build:
 - GTK now requires a C11 compiler

* Translation updates
 Georgian
 Hebrew
 Hindi
 Occitan
 Slovenian


Overview of Changes in 4.15.3, 29-06-2024
=========================================

* Accessibility:
 - Only emit notifications when cursor positions change in GtkText
 - Fix handling of help text properties

* CSS:
 - Fix some crashes introduced in recent currentcolor changes

* DND:
 - Avoid a critical

* Documentation:
 - Fix many oversights and missing docs

* maxOS:
 - Add native keyboard shortcuts


Overview of Changes in 4.15.2, 28-06-2024
=========================================

* GtkFileChooserWidget:
 - Plug some memory leaks
 - Make Ctrl-Shift-N create a new folder

* GtkPopover:
 - Handle resizing and position changes better

* CSS:
 - Support color(), oklab(), etc (https://www.w3.org/TR/css-color-4/)
 - Support color-mix() (https://www.w3.org/TR/css-color-5/)
 - Support relative colors (https://www.w3.org/TR/css-color-5/)
 - Support more colorspaces in color()
 - Allow percentages for opacity
 - Handle currentcolor more correctly

* Accessibility:
 - Avoid markup when reading labels

* GSK:
 - Subset fonts when serializing node trees
 - Make ngl export render_texture results as dmabufs

* Wayland:
 - Use xdg-dialog protocol for attached dialogs

* Windows:
 - Build with UNICODE

* macOS:
 - Implement fullscreen-on-monitor

* Documentation:
 - Widget shortcuts and actions are now described in the docs

* Debugging:
 - Add GTK_DEBUG=css for warning about deprecated css syntax

* Tools:
 - rendernode-tool: Add an extract command for data urls

* Deprecations:
 - CSS Color functions shade(), lighter(), darker(), alpha(), mix()

* Translation updates:
 Czech
 Hebrew
 Serbian


Overview of Changes in 4.15.1, 21-05-2024
=========================================

* GtkGraphicsOffload:
 - Don't crash without a child

* GtkSpinner:
 - Don't animate when unmapped

* CSS:
 - Support the :root selector
 - Support variables and custom properties (https://www.w3.org/TR/css-variables-1/)
 - Implement math functions (https://www.w3.org/TR/css-values-4/)
 - Support modern syntax and calc in rgb() and hsl()

* Icontheme:
 - Make symbolic svg loading more efficient
 - Handle color-free symbolics more efficiently

* Accessibility:
 - Make the gtk-demo sidebar search more accessible
 - Stop emitting focus events
 - Realize child contexts when necessary

* GDK:
 - Support XDG_ACTIVATION_TOKEN
 - dmabuf: Be more defensive when importing unknown formats to GL
 - dmabuf: Use narrow range for YUV
 - vulkan: Recreate swapchains when necessary or beneficial

* GSK:
 - Improve logging for GDK_DEBUG=offload
 - Improve logging for GSK_DEBUG=renderer
 - gpu: Warn about inefficient texture import
 - gpu: Handle tiny offscreens correctly
 - vulkan: Add profiler marks in various places
 - vulkan: Fix a problem with imported dmabufs showing up black
 - cairo: Speed up mask nodes, since we use them for symbolic icons

* Wayland:
 - Use wl_compositor version 6

* X11:
 - Implement a missing method

* Build:
 - Fix many ubsan warnings

* Debugging:
 - Show more texture details in the recorder
 - Use GTK_DEBUG=css to see CSS deprecations

* macOS:
 - Fix problems with events handed back to the OS
 - Respect GDK_DEBUG=default-settings
 - Allow applictions to handle Dock > Quit

* Deprecations:
 - Use of @name colors in CSS

* Translation updates:
 Catalan
 Georgian
 Hungarian
 Korean
 Portuguese
 Turkish


Overview of Changes in 4.15.0, 21-04-2024
=========================================

This release changes the default GSK renderer to be Vulkan, on
Wayland. Other platforms still use ngl.

The intent of this change is to get wider testing and verify that
Vulkan drivers are good enough for us to rely on. If significant
problems show up, we will revert this change for 4.16.

You can still override the renderer choice using the GSK_RENDERER
environment variable.

---

This release also changes font rendering settings by introducing
a new high-level gtk-font-rendering settings which gives GTK more
freedom to decide on font rendering.

You can still use the low-level font-related settings by changing
the new property to 'manual'.

---

* GtkColumnView:
 - Fix infinite loops in dispose
 - Fix problems with weak ref cycles in GtkExpression

* GtkListView:
* GtkShortcutManager:
 - Track the propagation phase of added controllers

* GtkGLArea:
 - Produce dmabuf textures, so graphics offload is possible

* GtkTextView:
 - Support text shadows

* GtkGraphicsOffload:
 - Add a black-background property

* Settings:
 - Add a new gtk-font-rendering setting

* Accessibility:
 - Add support for GetRangeExtents to GtkAccessibleText
 - Add support for GetOffsetAtPoint to GtkAccessibleText
 - Implement GtkAccessibleRange for scrollbars

* GDK:
 - Add a callback-based cursor API

* GSK:
-  Use the Vulkan renderer by default
 - Avoid an infinite recursion with offscreens in some cases
 - Optimize graphics offload to make it more likely that compositors
   can use direct scanout

* X11:
 - Fix some confusing debug messages
 - Drop a no-longer-relevant optimization that was interfering with
   getting the current window manager capabilities

* macOS:
 - Implement the color picker for macOS 10.15+

* Debugging:
 - Snow monitor resolution in the inspector

* Demos:
 - Use graphics offload in the shadertoy demo
 - Show more reliable fps numbers in the fishbowl demo

* Tools:
 - Support generating pdf in gtk4-rendernode-tool

* Build:
 - Require pango 1.52
 - Require cairo 1.18
 - Add a missing dependency that was causing build failures
 - Drop deprecated build options:
   gtk_doc -> documentation
   update_screenshots -> screenshots
   demo-profile -> profile
   demos -> build-demos

* Deprecations:
 - gdk_widget_set/get_font_options
 - gdk_wayland/x11_display_set_cursor_theme

* Translation updates:
 Basque
 Brazilian Portuguese
 British English
 Chinese (China)
 Hebrew
 Kabyle
 Persian
 Polish
 Russian
 Slovenian
 Swedish
 Turkish


Overview of Changes in 4.14.2, 03-04-2024
=========================================

* GtkScale:
 - Improve positioning of values in some cases

* Theme:
 - Make progress in entries visible

* Accessibility:
 - Fix text insertion handling

* GDK:
 - dnd: Use the default cursor durion motion
 - dnd: Use a better cursor for indicating the move action

* GSK:
 - gl: Handle offloads in offscreen context better
 - Fix text rendering problems with some fonts

* Wayland:
 - Tighten up some protocol version checks
 - Use the presentation time protocol
 - Fix a crash with subsurfaces
 - Improve settings portal handling

* macOS:
 - Fix up the app menu support

* Windows:
 - Fix problems with minimization
 - Fix build without fontconfig

* Debugging:
 - Add font settings in the inspector

* Demos:
 - Clean up the application demo
 - Update cursor images for the cursor demo

* Translation updates:
 Catalan
 Czech
 French
 Georgian
 Hebrew
 Persian
 Slovenian
 Turkish
 Ukrainian


Overview of Changes in 4.14.1, 16-03-2024
=========================================

* GtkTextView:
 - Fix a mixup of cursor and anchor when retrieving surrounding text
   in input methods

* Printing:
 - Avoid accessing freed printers

* Accessibility:
 - Fix memory leaks

* GDK:
 - Rename the GDK_VULKAN_SKIP environment variable to GDK_VULKAN_DISABLE
 - Add a GDK_GL_DISABLE environment variable

* GSK:
 - Rename the GSK_GPU_SKIP environment variable to GSK_GPU_DISABLE
 - Speed up handling of repeated ops, which should help for text
 - Speed up the inner loop of text node conversion
 - Drop the glyph-align optimization flag
 - ngl: Avoid reusing frames while they are in use
 - Fix flickering thumbnails in nautilus
 - Speed up buffer handling in both ngl and Vulkan

* Demos:
 - Skip demos using gl shaders when we're not using the gl renderer

* Build:
 - Fix some ubsan warnings
 - Avoid zink in ci since it spams stderr

* Translation updates:
 Czech
 German
 Korean
 Russian


Overview of Changes in 4.14.0, 12-03-2024
=========================================

Note: The new renderers and dmabuf support are using graphics drivers
in different ways than the old gl renderer, and trigger new driver bugs,
(see for example https://gitlab.gnome.org/GNOME/gtk/-/issues/6418 and
https://gitlab.gnome.org/GNOME/gtk/-/issues/6388). Therefore, it is
recommended to use the latest mesa release (24.x) with the new renderers.

* GtkTextView:
 - Don't snapshot children twice
 - Don't blink the cursor when hidden

* GtkEmojiChooser:
 - Fix presentation selector handling

* GtkSnapshot:
 - Fix wrong nodes with transformed shadows

* GtkIMContext:
 - Make gtk_im_context_activate_osk public

* Accessibility:
 - Implement get_contents_at for all our text widgets
 - Add GtkAccessibleText.get_default_attributes

* GSK:
 - Don't fall back to cairo for software rendering. gl+llvmpipe is better
 - Round vertical glyph position to a device pixel position if the font is hinted
 - Fix problems with clip handling
 - Make vulkan and ngl match their font handling
 - Fix some corner-cases with offloading and clips
 - Fix problem with rendering of missing glyphs in hinted fonts

* MacOs:
 - Implement cursor-from-texture

* Translation updates:
 Basque
 British English
 French
 Indonesian
 Kazakh
 Latvian
 Lithuanian
 Norwegian Bokmål
 Slovenian
 Spanish
 Turkish


Overview of Changes in 4.13.9, 02-03-2024
=========================================

* GtkEditable:
 - Fix preconditions to be not too strict

* GtkEmojiChooser:
 - Support search in the locale as well as in English

* GtkIconTheme:
 - Make gtk_icon_paintable_new_for_file support symbolics

* GtkVideo:
 - Fix a problem with cursor handling that could lead to crashes

* Accessibility:
 - Fix GetCharacterAtOffset implementation
 - Add a Terminal role
 - Make TextCaretMoved match gtk3
 - Support multiple levels of GtkEditable delegates

* GSK:
 - Make the node parser more flexible for text nodes
 - Change the way font scaling is handled to avoid clipping
 - Fix handling of missing glyphs in the new renderers

* X11:
 - Don't claim to support shadows without a compositor

* Wayland:
 - Fix handling of output scales

* Tools:
 - Add a compare command to gtk4-rendernode-tool

* Build:
 - Fix some ubsan complaints

* Translation updates:
 Basque
 British English
 Catalan
 Finnish
 Galician
 Georgian
 Hebrew
 Indonesian
 Kazakh
 Latvian
 Lithuanian
 Persian
 Polish
 Russian
 Slovenian
 Spanish
 Turkish
 Ukrainian


Overview of Changes in 4.13.8, 20-02-2024
=========================================

* Accessibility:
 - Add a GtkAccessibleText interface for allowing 3rd party
   text widgets (notably vte) to be accessible
 - Avoid duplicate accessible descriptions
 - Fix GetAccessibleAtPoint

* GSK:
 - Avoid offscreens for disjoint containers
 - Don't use the gpu renderers with llvmpipe
 - Fix various rendering issues found by tests
 - Allow unnormalized node bounds again
 - Fix a broken case of rounded-rect intersection
 - Fix handling of external textures in gpu renderers
 - Make gpu renderers work with WGL on Windows

* build:
 - Allow building without dmabuf support on (old) Linux

* X11:
 - Fix monitor enter/leave signals

* Translation updates:
 Basque
 Brazilian Portuguese
 Catalan
 Czech
 Galician
 Georgian
 Hebrew
 Lithuanian
 Persian
 Russian
 Turkish
 Ukrainian


Overview of Changes in 4.13.7, 11-02-2024
=========================================

* GtkFileChooser:
 - Speed up opening

* GtkCalendar:
 - Add some missing setters and getters

* Accessibility:
 - Add socket support for webkit accessibility
 - Implement AT-SPI text for GtkText
 - Implement AT-SPI component generically
 - Add an announce API

* GSK:
 - Make the ngl renderer work on macOS
 - Fix a crash in the vulkan renderer
 - Make nodeparser allow aliases for fonts again
 - Implement cache eviction for glyph and texture caches
 - Fix ngl shaders to work on GL < 4.0
 - Require GL 3.3 for the ngl renderer
 - Fix problems with scaled shadows
 - Fix problems with holes for underlaid subsurfaces
 - Improve handling of scales and glyph cache efficiency

* Media:
 - Support dmabufs in the gstreamer backend. This allows
   zero-copy video playback on Wayland when paired with
   hardware video decoding
 - Drop the experimental ffmpeg backend. It hasn't been
   building for a year

* Wayland:
 - Commit empty frames if and double-buffered state is pending
 - Fix monitor size information when using mutter without
   the scale-monitor-framebuffer setting
 - Clear the current tablet on tab leave, fixing a crash

* macOS:
 - Propagate unhandled input events back to the OS

* Tools:
 - Make the crash handling in gtk4-node-editor more robust

* Translation updates
 Galician
 Georgian
 Occitan
 Turkish


Overview of Changes in 4.13.6, 25-01-2024
=========================================

This release changes the ngl renderer to be the default renderer.

The intent of this change is to get wider testing and verify that
the new renderers are production-ready. If significant problems
show up, we will revert this change for 4.14.

You can still override the renderer choice using the GSK_RENDERER
environment variable.

Since ngl can handle fractional scaling much better than the old gl
renderer, we allow fractional scaling by default with gl now. If you
are using the old gl renderer (e.g. because your system is limited to
GLES2), you can disable fractional scaling by setting the GDK_DEBUG
environment variable to include the gl-no-fractional key.

* GtkColumnView:
 - Fix infinite loops in dispose
 - Fix problems with weak ref cycles in GtkExpression

* GtkListView:
 - Fix some corner cases with sections during insertions and deletions
 - Don't double-recycle widgets

* GtkStack:
 - Add automatic cleanup for GtkStackPage

* GDK:
 - Use standard cursor names for drag cursors
 - Enable fractional scaling with gl by default

* GSK:
 - Many fixes and improvements to the unified renderers:
   - Fix text rendering with the uber shader
   - Fix rounding issues with fractional scales
   - Fix some memory leaks
   - Many text rendering fixes
   - Implement subpixel positioning for glyphs
   - Support custom fonts in node files
   - Add tests for font rendering
   - Fix drawing of repeat nodes
   - Implement subpixels positioning
   - Evict stale textures, glyphs and atlases from the cache
 - Some fixes and improvements to the GL renderer:
   - Fix problems with GLES on Nvidia
   - Avoid a crash in the mask demo
   - Respect opacity of the first child node in containers
 - Some fixes and improvements to the fallback renderer:
   - Fix drawing of repeat nodes
 - Make ngl the default renderer

* Wayland:
 - Fix problems with tablet cursors
 - Fix problems without seats

* Accessibility:
 - Respect a separate "show-status-shapes setting
 - Fix change notification for accessible names on some widgets

* Inspector:
 - Show the git commit in devel builds

* Tools:
 - Make gtk4-node-editor autosave its contents
 - Add a benchmark command to gtk4-rendernode-tool

* Translation updates:
 French
 Galician
 Georgian
 Occitan
 Persian
 Russian
 Vietnamese


Overview of Changes in 4.13.5, 07-01-2024
=========================================

This release adds two new GSK renderers called vulkan and ngl,
that are built from the same sources. The new renderers can
handle many corner cases correctly that the current gl renderer
does not handle, and they offer advantages such as antialiasing
and supersampled gradients.

The new renderers are still considered experimental, and GTK
will only use them if they are explicitly selected using the
GSK_RENDERER environment variable.

As part of this work, the GSK include files have been rearranged.
It is no longer necessary to include renderer-specific headers for
ngl and vulkan (and doing so will trigger deprecation warnings),
and their constructors are always available.

The previously available experimental GdkVulkanContext APIs and
the old Vulkan renderer have been removed.

Vulkan is now enabled by default, and Linux distributions should
build GTK with Vulkan support. This requires the glslc shader
compiler as a new dependency.

Vulkan is now also used for dmabuf support.

* GtkDropdown:
 - Fix display of initial selection

* GtkShortcutsWindow:
 - Make the window adapt to smaller screen widths

* GtkTextView:
 - Fix a possible NULL dereference in history

* GDK:
 - Make the png loader safer against overflows

* GL:
 - Fix some errors in handling of texture formats and mipmaps


Overview of Changes in 4.13.4, 30-12-2023
=========================================

* GtkFileDialog:
 - Return an error if no file is selected

* GtkFileLauncher:
 - Add a writable property

* GtkFileChooserNative:
 - Make closing portal file dialogs work

* GtkEmojiChooser:
 - Update Emoji data to CLDR v43

* GtkStringList:
 - Add item-type and n-itmes properties

* Input:
 - Respect GTK grabs on DND events
 - Fix crossing event generation for enter/leave

* Wayland:
 - Avoid recreating wl_buffers needlessly
 - Be more careful when loading cursors

* Dmabuf:
 - Add support for all Dmabuf formats
 - Tweak the offload code a bit, allow offloading translucent
   textures, as long as they are raised. Decline to offload
   with fractional scales.

* Accessibility:
 - Add a few more accessible roles

* GL:
 - Use GLES by default
 - Tweak GDK_DEBUG values. The new values are
   gl-disable-gl, gl-disable-gles and gl-prefer-gl.
   The gl-legacy and nograbs values have been dropped.

* Css:
 - Reduce memory consumption during theme loading
 - Fix opacity handling

* Theme:
 - Refresh some of the included symbolic icons

* MacOs:
 - Silence secure-restore message

* Build:
 - Require Vulkan 1.3

* Translation updates:
 Chinese (China)
 Czech
 Hebrew
 Icelandic
 Polish
 Russian


Overview of Changes in 4.13.3, 15-11-2023
=========================================

* GtkGraphicsOffload: A new widget to support passthrough
  of dmabuf textures with subsurfaces on Wayland

* GtkListView:
 - reduce tree indentation

* GtkInspector:
 - Show more GL information
 - Add a subsurface overlay
 - Improve the fps overlay

* GDK
 - Allow implicit modifiers for dmabufs
 - Support more dmabuf formats: NV16, NV61, NV24, NV42
   and 3-plane YUV formats

* GSK
 - Fix padding of icons in the GL atlas
 - Fix handling of texture-scale nodes in cairo
 - Treat texture-scale nodes more faithfully in GL

* Accessibility:
 - Tweak the accessible name computation for corner cases

* The GTK/GDK/GSK_DEBUG environment variables now
  work in productions as well as in debug builds

* Translation updates
 Catalan
 French
 Russian


Overview of Changes in 4.13.2, 22-10-2023
=========================================

* GtkPrintdialog:
 - New async-style api to replace GtkPrintOperation

* GtkEmojiChooser:
 - Add more languages: Bengali, Hindi, Japanese, Finnish,
   Thai and Norwegian bokmål

* Accessibility:
 - Fix some utf8 handling issues

* GDK:
 - Add support for dmabuf textures, with GdkDmabufTextureBuilder
 - Add a few more supported memory formats for textures

* GSK:
 - Add a fast-path for masking color
 - Add support for importing dmabuf textures
 - Handle GLES better by using some extensions

* Translation updates:
 Catalan
 Russian
 Turkish


Overview of Changes in 4.13.1, 28-09-2023
=========================================

* GtkTooltip:
 - Don't cross native boundaries when looking for tooltips

* GtkCenterLayout, GtkEntry, GtkSearchEntry:
 - Fix some issues with baseline handling

* GtkColorButton, GtkFontButton:
 - Propagate focus-on-click

* GtkFileChooser:
 - Make "Visit file" scroll to the file

* GtkSwitch:
 - Respect text direction

* GtkWindow:
 - Don't assume titlebars are GtkHeaderBars

* Printing:
 - Fix some problems with the portal implementation
 - Add a new simple print API: GtkPrintDialog

* Paths:
 - GskPathMeasure performance has been improved
 - Add custom contours for circles, rounded rectangles and rectangles
 - Simplify GskPathPoint handling
 - gsk_path_point_get_closest_point now returns the distance as well
 - Make GskPathBuilder simplify curves

* Input:
 - Handle (some) single-key compose sequences
 - Fix active state tracking with sensitivity changes and grabs

* GSK:
 - Make the repeated gradients match between GL and cairo
 - Make rounded rect shrinking match between Vulkan, GL and cairo
 - Fix parsing of text nodes with color glyphs
 - Restrict an optimization to the cases where it is crrect
 - Fix rendering of shadows with opacity
 - The Vulkan renderer now requires Vulkan 1.2
 - GL: Transition gradients unpremultiplied
 - GL: Fix clipping of shadows
 - GL: Some optimizations
 - Broadway: Fix memory leaks in the renderer

* Wayland:
 - Make activation more reliable

* macOS:
 - Clamp damage regions to the surface size

* Tools:
 - gtk4-path-tool gained restrict and reverse commands
 - gtk4-path-tool show and render can show control points

* Demos:
 - Add a demo for hit testing with paths

* Build:
 - Fix build problems with C++ compilers

* Deprecations:
 - gtk_window_present_with_time

* Translation updates
 Brazilian Portuguese
 British English
 Catalan
 Chinese (China)
 Czech
 Danish
 Dutch
 Esperanto
 Galician
 Georgian
 Italian
 Korean
 Latvian
 Lithuanian
 Persian
 Polish
 Punjabi
 Slovenian
 Turkish


Overview of Changes in 4.13.0, 25-08-2023
=========================================

* GskPath, GskPathBuilder, GskPathMeasure:
  Data types and APIs for path rendering. These APIs are still
  considered experimental, and may change until 4.14. Please try
  them out and give us feedback. Documentation can be found
  here: https://docs.gtk.org/gsk4/paths.html

* GtkGridView:
 - Fix a crash when scrolling

* GtkColumnView:
 - Fix a refcounting issue in the new scroll_to api

* GtkTreeView
 - Fix style classes for sort arrows

* GtkEntry:
 - Improve tracking of user changes (for undo)

* GtkNotebook:
 - Fix a critical when switching pages

* GtkColor/FontDialogButton:
 - Make these widgets activatable

* GtkMenuButton:
 - Fix problems with focus handling
 - Fix problems with DND
 - Make flags a settable property

* GtkShortcutsWindow:
 - Add API to build shortcuts windows programmatically

* Printing
 - Fix the cpdb backend build

* MacOS:
 - Make file filters work again

* GSK:
 - Fix issues with color matrix nodes

* Wayland:
 - Fix a crash with compositors other than gnome-shell

* Deprecations:
 - Remaining GtkTreeModel-related types

* Demos:
 - Add a few path demos to gtk4-demo

* Tools:
 - gtk4-path-tool provides a commandline interface for paths

* Translation updates:
 Basque
 Catalan
 Finnish
 Galician
 Georgian
 German
 Greek
 Indonesian
 Kazakh
 Persian
 Polish
 Romanian
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.12.0, 05-08-2023
=========================================

* List widgets:
 - Add scroll_to APIs

* GtkFileLauncher:
 - Add an always-ask property

* GtkTextView:
 - Make backspace behavior match GtkEntry

* gsk:
 - Fix handling of luminance in mask nodes

* Text rendering:
 - Automate the setting of gtk-hint-font-metrics from the
   scale factor. This improves font rendering in flatpaks

* Wayland:
 - Fix behavior of stylus buttons
 - Support suspended window state

* Vulkan:
 - Many improvements

* Tools:
 - Add gtk4-rendernode-tool

* Debugging:
 - Drop the GTK_DEBUG_TOUCHSCREEN flag

* Build:
 - Some build options have been renamed:
     gtk_doc -> documentation
     update_screenshots -> screenshots
   The old names still work

* Translation updates:
 Georgian
 Greek
 Hebrew
 Persian
 Vietnamese

* Contributors:
 Aleksandr Melman
 Alexander Mikhaylenko
 Alexander Shopov
 Alexandre Franke
 Alice Mikhaylenko
 António Fernandes
 Arjan Molenaar
 Asier Sarasua Garmendia
 Balázs Meskó
 Balázs Úr
 Barnabás Pőcze
 Bart Jacobs
 Benjamin Otte
 Bilal Elmoussaoui
 Boyuan Yang
 Bruce Cowan
 Calvin Walton
 Cam Cook
 Chris Mayo
 Christian Hergert
 Christopher Davis
 Chun-wei Fan
 Corey Berla
 Danial Behzadi
 Daniel Boles
 Daniel Rusek
 Efstathios Iosifidis
 Ekaterine Papava
 Emin Tufan Çetin
 Emmanuele Bassi
 Erik Schilling
 Fabio Tomat
 FeRD (Frank Dana)
 Fina Wilke
 FineFindus
 Fran Dieguez
 G.Willems
 Georges Basile Stavracas Neto
 Guillaume Bernard
 Hugo Carvalho
 Ivan Molodetskikh
 Jason Francis
 Jonas Ådahl
 Jordan Petridis
 Jordi Mas
 José Expósito
 José Roberto de Souza
 Khalid Abu Shawarib
 Kévin Commaille
 Leônidas Araújo
 Luca Bacci
 Ludovico de Nittis
 Lukáš Tyrychtr
 Marc-André Lureau
 Marco Trevisan (Treviño)
 Matt Turner
 Matthias Clasen
 Maximiliano Sandoval R
 Michael Catanzaro
 Michel Dänzer
 Mohammed Sadiq
 Nathan Follens
 Nelson Benítez León
 Ngọc Quân Trần
 Niels De Graef
 Olivier Crête
 Patrick Griffis
 Piotr Drąg
 Sabri Ünal
 Sebastian Keller
 Sophie Herold
 Sébastien Le Roux
 Takao Fujiwara
 Thomas Lange
 Yiğit Burak
 Yosef Or Boczko
 Yuri Chornoivan
 Zander Brown
 al_SeveR
 dgsasha
 sumibi-yakitori
 tszymanski
 velsinki
 Алексей Шилин
 Арсений Засыпкин

Overview of Changes in 4.11.4, 03-07-2023
=========================================

* GtkFileChooser:
 - Default to sorting folders first
 - Fix a crash when visiting recent files

* GtkTextView:
 - Fix corner cases in word navigation

* GtkMenuButton:
 - Normalize label layout

* GtkDropDown:
 - Add support for sections

* GtkVideo:
 - Make the overlay icon clickable

* GtkWindow:
 - Clear the resize cursors to avoid artifacts

* GtkFileDialog:
 - Always set initial-folder

* GtkDropDown:
 - Update on expression changes

* GtkMapListModel:
 - Implement GtkSectionModel

* Accessibility:
 - Improvements all over the place: GtkButton, GtkPasswordEntry,
   GtkFontChooserDialog, GtkColorChooserDialog, GtkShortcutsWindow,
   GtkMenuButton, GtkAboutDialog, GtkFileChooserDialog, GtkStackSidebar,
   GtkStackSwitcher, GtkMediaControls, GtkColorDialogButton, GtkDropDown,
   GtkInfoBar, GtkNotebook, GtkPrintUnixDialog, GtkModelButton
 - Make name computation follow the ARIA spec more closely
 - Adapt name computation for the common 'nested button' scenario
 - Change many containers to use `generic` instead of `group`
 - Use `generic` as the default role
 - Use `application` instead of `window` for windows
 - Add properties for accessible names of not directly exposed
   widgets in GtkListView, GtkGridView and GtkColumnView

* DND:
 - Fix criticals when drops are rejected

* X11:
 - Fix regressions in GLX setup

* Windows:
 - Center newly created transient windows

* Vulkan:
 - Add antialiasing for gradients
 - Do less work on clipped away nodes
 - Redo image uploading
 - Support different image depths and formats
 - Add a pipeline cache

* Demos:
 - gtk4-demo: Improve window sizing
 - gtk4-demo: Improve focus behavior
 - gtk4-demo: Add many missing a11y properties

* Tools:
 - gtk4-builder-tool: Make render an alias screenshot

* Inspector:
 - Show more information in the a11y tab
 - Add an accessibility overlay with warnings and recommendations
 - Limit the width of the a11y tab

* Build:
 - Require GLib 2.76
 - Make asan builds work again
 - Fix the build if ld is not ld.bdf

* Translation updates:
 Brazilian Portuguese
 Catalan
 Czech
 Georgian


Overview of Changes in 4.11.3, 05-06-2023
=========================================

* GtkGridView:
 - Respect css border-spacing
 - Don't leak the factories

* GtkListView:
 - Don't leak the factories

* GtkColumnView:
 - Support displaying sections

* GtkNotebook:
 - Make the pages model implement GtkSelectionModel

* GtkScrolledWindow:
 - Propagate child measure size whenever possible

* GtkPopoverMenu:
 - Avoid unnecessary left padding

* GtkSearchEntry:
 - Improve size allocation for the clear icon

* GtkBoxLayout:
 - Fix a regression from recent baseline work

* CSS:
 - Add new binding-friendly css provider apis

* Theme:
 - Show focus in the shortcuts window

* GDK:
 - Support grayscale and alpha texture formats for loading
   and saving to png and tiff, and in GL
 - Fix some regressions in GL context initialization

* GSK:
 - Support grayscale and alpha texture formats in the GL renderer
 - Support straight alpha textures in the GL renderer
 - Many improvements to the experimental Vulkan renderer

* Wayland:
 - Make exporting surface handles more flexible

* X11:
 - Trap XRandr errors
 - Stop using passive grabs during DND

* Windows:
 - Many cleanups and simplifications

* Tests:
 - Improve test coverage

* Build:
 - Some build options have been renamed:
     demos -> build-demos
     profile -> demo-profile
   The old names still work

* Deprecations:
 - 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

* Translation updates:
 Basque
 Catalan
 Georgian
 Russian
 Turkish


Overview of Changes in 4.11.2, 09-05-2023
=========================================

* GtkGLArea:
 - Add an allowed-apis property

* GtkListBox:
 - Fix a problem with gtk_list_box_remove_all

* Add the GtkSectionModel interface, and implement it in most
  of our list models

* GtkListView:
 - Support displaying sections

* GtkCenterBox:
 - Add a shrink-center-last property

* GtkButton, GtkMenuButton:
 - Add a can-shrink property

* GtkPopover:
 - Fix problems with grabs

* GtkFileChooser:
 - Fix a problem with removing files
 - Make the date, time and location columns work
 - Fix filtering in the save entry popup
 - A few memory leak fixes
 - Handle webdav in the pathbar

* GtkBox:
 - Support baselines in vertical orientation with GtkBox:baseline-child

* Dialogs:
 - Destroy windows promptly when the async callback finishes
 - Detect absence of the OpenURI portal and fall back

* Theme:
 - Add explicit style classes to a number of widgets
 - Fix some contrast issues in the dark theme

* Accessibility:
 - Fix alert dialogs in the a11y tree
 - Improve accessibility of GtkShortcutsWindow

* Layout:
 - Some fixes to baseline alignment
 - Separate GTK_ALIGN_BASELINE_CENTER and _FILL

* CSS:
 - Fix a crash with color transitions

* GSK:
 - Fix problems with negative scales
 - Improve scaling of offscreens for (cross-fades, masks, blends)

* GL:
 - Add GdkGLTextureBuilder, a more flexible api for creating textures
 - Support setting update regions for GL textures
 - Ensure that we work with GLES 2

* Vulkan:
 - More fixes to the experimental Vulkan renderer
 - Rework glyph caching

* Wayland:
 - Don't destroy wl_surfaces on hide
 - Plug leaks of compositor-side resources

* X11:
 - Fix artifacts in gnome-shell frame decorations

* Windows:
 - Fix GL context initialization

* Inspector:
 - Improve the action list
 - Improve the accessibility pane
 - Fix a crash

* Tools:
 - gtk4-node-editor: Improve scaling
 - gtk4-node-editor: Preserve aspect ratio of textures
 - gtk4-node-editor: Add some smarter editing
 - gtk4-demo: Make the stylus demo work with mice

* Deprecations:
 - gtk_widget_get_allocated_width/height/baseline
 - GTK_ALIGN_BASELINE

* Translation updates
 Bulgarian
 Chinese (China)
 Friulian
 Galician
 Hebrew
 Persian
 Polish
 Portuguese
 `Russian
 Turkish


Overview of Changes in 4.11.1, 03-04-2023
=========================================

* GtkLabel, GtkLinkButton:
 - Make file:// uris work again

* GtkListView/GtkColumnView/GtkGridView:
 - Fix clipping issues
 - Handle focus movement better
 - Introduce ::tab-behavior properties
 - Introduce GtkListItem::focusable
 - Introduce GtkColumnViewCell
 - Introduce row factories in GtkColumnView
 - Make list grid and column views inert when not rendering

* Drag-and-Drop:
 - Support resizing drag surfaces, using the new
   GdkDragSurface::compute-size signal

* Theme:
 - Port .boxed-list style from Adwaita
 - Make insensitive pictures appear grayed out

* Accessibility:
 - Fix memory leaks
 - Fix a crash

* GDK:
 - Add gdk_surface_get_scale to get the fractional scale
 - Use fractional scales on Wayland with cairo
 - Use fractional scales on Wayland with GL if GDK_DEBUG=gl-fractional
   is set. This support is still experimental

* GSK:
 - Allow limiting texture sizes with GSK_MAX_TEXTURE_SIZE
 - Use samplers for GL texture filtering
 - Fix problems with texture slicing
 - Avoid re-uploading textures when possible
 - Use mipmaps when it is beneficial

* Wayland:
 - Fix handling of Drag hotspots
 - Fix a crash with cursor size 0
 - Support absolute paths in WAYLAND_DISPLAY
 - Use the fractional scale protocol
 - Use a viewporter to set buffer scale

* Windows:
 - Fix problems with WGL

* Vulkan:
 - Some fixes to the experimental Vulkan renderer
 - Support fractional scaling

* Debugging:
 - Show more Wayland-specific information in the inspector

* Deprecations:
 - gtk_widget_translate_coordinates
 - gdk_surface_create_similar_surface

* Documentation:
 - Add a section on coordinate systems

* Build:
 - Require wayland-protocols 1.31

* Translation updates
 - British English
 - Bulgarian
 - Chinese (China)
 - Dutch
 - French
 - Persian
 - Russian


Overview of Changes in 4.10.1, 14-03-2023
=========================================

* GtkFileChooser
 - Improve search performance
 - Be safe against pathless files
 - Fix memory leaks
 - Only show local files in recent files
 - Show most recent files first
 - Make files non-selectable in selet_folder mode

* GtkListView / GtkColumnView / GtkGridView
 - Fix scrolling problems
 - Support CSS border-spacing

* GtkComboBox
 - Fix a size allocation problem

* gtk
 - Size allocation fixes

* Accessibility
 - Miscellaneous property fixes and improvements

* Wayland
 - Fix an ordering problem in surface disposal

* Windows
 - Fix Visual Studio build with older GLib

* Translation updates
 Basque
 Bulgarian
 Catalan
 Czech
 Danish
 Finnish
 Friulian
 Galician
 Georgian
 Hungarian
 Lithuanian
 Polish
 Portuguese
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.10.0, 04-03-2023
=========================================

* GtkTextView
 - Document hanging indentation

* GtkListView
 - Fix a size allocation problem

* GtkFileChooser
 - Fix paned behavior
 - Fix a crash

* GtkText
 - Fix various problems with undo

* Accessibility
 - Make some getters transfer-full
 - Allow setting accessible parents and siblings
 - Add a role for toggle buttons
 - Miscellaneous property fixes and improvements

* gtk
 - Improve the handling resize-during-size-allocate

* gdk
 - Introduce GdkTextureDownloader and use it
 - Make gdk_texture_get_format public

* gsk
 - Make mask nodes more versatile
 - Improve the GL implementation for texture scale nodes

* X11
 - Fix key handling during DND

* Tools
 - gtk-builder-tool: Try harder to handle templates
 - gtk-builder-tool: Prefer properties over <child>

* Translation updates
 Basque
 Belarusian
 Bulgarian
 Indonesian
 Galician
 Georgian
 German
 Hebrew
 Lithuanian
 Portuguese
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.9.4, 12-02-2023
========================================

* Printing:
 - Add a CPDB backend
 - Drop the lpr backend

* GtkFileDialog:
 - Robustness fixes

* GtkScaleButton:
 - Add an 'active' property

* GtkSearchEntry:
 - Add placeholder text

* Fix conflicting type names between gtk and gio

* Gsk:
 - Settable filtering for scaled textures
 - Add mask nodes
 - Some robustness and crash fixes

* Wayland:
 - Handle dispatch failing in more places

* Deprecations:
 - GtkVolumeButton

* Translation updates:
 Belarusian
 Chinese (Taiwan)
 Georgian
 Turkish
 Ukrainian


Overview of Changes in 4.9.3, 04-02-2023
========================================

* Add GtkUriLauncher, as replacement for gtk_show_uri

* Add GdkMonitor::description

* Fix problems with tooltip sizing

* Deprecations:
 - GtkStatusbar
 - GtkAssistant
 - GtkLockButton
 - gtk_gesture_set_sequence_state

* GtkColumnView:
 - Only create widgets for visible columns

* GtkFileDialog:
 - Drop shortcut folders API

* GtkCalendar:
 - Make marked days work again

* GtkSwitch:
 - Make state and active independently settable

* GtkFileChooser:
 - Fix a crash with DND
 - Fix excessively wide sidebar
 - Make context menus work again

* Accessibility:
 - Make GtkAccessible public, so it can be implemented outside GTK
 - Support accessible implementation for editables

* CSS:
 - Fix randomly stopping CSS animations

* GL:
 - Fix synchronization with GStreamer
 - Fix problems with 3rd party GL in the same thread

* Wayland:
 - Fix startup notification with xdg_activation

* Broadway:
 - Implement modal windows

* macOS:
 - Make DND work

* Build:
 - Require graphene 1.10
 - Require gobject-introspection 1.72

* Translation updates
 Catalan
 Galician
 German
 Hebrew
 Indonesian
 Portuguese
 Russian
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.9.2, 26-12-2022
========================================

* GtkFileChooserWidget:
 - Add a grid view

* GtkText, GtkTextView:
 - Fix activation of the on-screen keyboard
 - Prevent unexpected text direction changes

* GtkCenterBox:
 - Add properties for children

* GtkTreeExpander:
 - Add a hide-expander property

* GtkStringList:
 - Add a construct-only strings property

* GtkBuilder:
 - Support parsing Pango attributes in string form

* GtkGestureStylus:
 - Add a stylus-only property

* GtkFileLauncher:
 - New async-style api to replace gtk_show_uri

* GtkColorDialog, GtkFontDialog, GtkFileDialog,
  GtkAlertDialog:
 - APIs have seen some tweaks
 - Prefer portals when available
 - Fixes for cancellation

* Add GDK_DEBUG=no-portals

* Improve file DND with remote files

* GtkInfoBar has been deprecated

* gtk_widget_show/hide have been deprecated

* gtk_show_uri has been deprecated

* Wayland:
 - Fix button mask handling
 - Fix problems with cursor size on hi-dpi screens
 - Support newer versions of some protocols
 - Fix handling of surrounding text in input methods

* X11:
 - Fix some ordering problems with surface destruction

* Windows:
 - Improved system settings integration
 - Fix window resizing work with native decorations
 - Include a full hicolor index.theme file as a resource

* Translation updates
 Croatian
 Dutch
 Hungarian
 Interlingua
 Persian
 Turkish
 Ukrainian


Overview of Changes in 4.9.1, 31-10-2022
========================================

Note that deprecations are an early outlook at changes
that will appear in an eventual GTK 5 release, which is
still far away. We are introducing deprecations in 4.10
as a way to give users time to adapt, and to provide
feedback on our plans.

* GtkTreeView, GtkIconView, GtkComboBox and
  auxiliary classes have been deprecated

* GtkEntryCompletion has been deprecated

* GtkStyleContext has been deprecated

* gtk_render_ and gtk_snapshot_render_ APIs
  have been deprecated

* GtkAppChooser widgets have been deprecated

* GtkMessageDialog has been deprecated and
  replaced by a new async dialog API

* GtkDialog has been deprecated

* GtkColorChooser, GtkFontChooser, GtkFileChooser
  interfaces and their implementations have been
  deprecated. A new family of async dialog APIs
  has been introduced to replace them

* GtkColorDialog, GtkFontDialog, GtkFileDialog
  and GtkAlertDialog are new dialog classes with
  a consistent and well-bindable API

* GtkMountOperation:
 - Fix the dialog to look reasonable
 - Make it work under non-X11

* GtkStringSorter:
 - Support different collation methods

* Accessibility:
 - Introduce GtkAccessibleRange and implement it

* Debugging:
 - Unify formatting for debug output
 - Make make debug options available in
   non-debug builds

* Increase the memory limit for the jpeg loader to 1G

* Translation updates:
 Abkhazian
 Basque
 Bulgarian
 Croatian
 Friulian
 Georgian
 German
 Hungarian
 Russian
 Turkish


Overview of Changes in 4.8.1, 16-09-2022
========================================

* Input:
 - Fix problems with input method interactions that caused
   dead keys not to work
 - Accept single-key compose sequences (these are used with
   some keyboard layouts)

* GtkColumnView:
 - Flip column order in right-to-left context

* GtkGridView:
 - Fix problems with rubberbanding

* GtkFileChooser:
 - Fix positioning of popovers in the places view
 - Make ~ and . keyboard shortcuts work again

* gsk:
 - Make glyph upload more similar to icons

* Make file transfer via portals work, this fixes file
  copy/paste and dnd in flatpaks

* Translation updates:
 Catalan
 Chinese (China)
 Chinese (Taiwan)
 Latvian


Overview of Changes in 4.8.0, 06-09-2022
========================================

* GtkTreeView:
 - Fix a problem with scrolling animations
 - Fix some event handling problems
 - Drop unreachable code

* GtkText:
 - Respect the no-emoji input hint fully

* GtkEmojiChooser:
 - Fix arrow key navigation

* GtkFontChooser:
 - Improve the handling of OpenType font features

* GtkTreeListModel:
 - Fix handling of collapsed child nodes

* GtkInscription:
 - Fix accessible name

* Theme:
 - Fix placeholder text in HighContrast

* Increase the memory limit for the jpeg loader to 300M

* Miscellaneous memory leak fixes

* Wayland:
 - Refator handling of text protocol client updates

* Windows:
 - Support high-resolution scroll wheel events
 - Generate GdkWin32.gir
 - Implement color picking

* Translation updates
 Abkhazian
 Basque
 Brazilian Portuguese
 Bulgarian
 Catalan
 Chinese (China)
 Croatian
 Czech
 Danish
 Dutch
 Galician
 Georgian
 German
 Hungarian
 Icelandic
 Indonesian
 Korean
 Latvian
 Lithuanian
 Persian
 Polish
 Portuguese
 Russian
 Serbian
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.7.2, 10-08-2022
========================================

* GtkTextView:
 - Fix child positioning with gutters

* GtkText:
 - Update placeholder visibility when necessary

* GtkPicture:
 - Add a content-fit property

* GtkPopover:
 - Fix a size allocation problem with the arrow

* GtkTreeView:
 - Fix a problem with DND

* GtkTreePopover:
 - Support scrolling

* GtkGridView:
 - Fix issues with rubberband selection

* GtkLabel:
 - Add a tabs property

* GtkSnapshot:
 - Make GtkSnapshot work from bindings

* GtkScrolledWindow:
 - Scroll at a reasonable speed

* GtkPaned:
 - Avoid an infinite loop

* GtkWindow:
 - Improve generation and handling of crossing events

* CSS:
 - Fix handling of certain transform values

* Media support:
 - Add audio support to the ffmpeg backend
 - Avoid oom with pathological jpeg images

* GDK:
 - Fix handling of touchpad hold events
 - Add support for hi-resolution scroll events

* X11:
 - Fix preferred action for DND

* Windows:
 - Fix DND

* List models:
 - Fix items-changed emission
 - Add more list model tests

* Demos:
 - Add a winning sound to game demos
 - Make app icons work uninstalled

* Translation updates:
 Abkhazian
 Basque
 Catalan
 Georgian
 German
 Indonesian
 Occitan
 Persian
 Portuguese
 Russian
 Spanish
 Ukrainian


Overview of Changes in 4.7.1, 12-07-2022
========================================

* GtkInscription:
 - A new label-like widget for use in list views

* GtkColorChooser:
 - Style improvements

* GtkFontChooser:
 - Improve support for OpenType features a bit

* GtkLabel:
 - Allow selectable labels to be activated via mnemonic

* GtkTextView:
 - Implement GetCharacterExtents for accessibility

* GtkStack:
 - Fix a poblem with stack page accessibility

* GtkListView:
 - Cull listitems that are out of view
 - Make all our list models implement ::n-items and
   ::item-type properties

* Translations:
 - Stop translating property nicks and blurbs
 - Fix extracting translations from ui files

* Debugging:
 - Support GTK_DEBUG=invert-text-dir
 - Allow inspecting inspectors
 - Replace GTK_USE_PORTAL with GDK_DEBUG=portals
 - Improve responsiveness of the inspector

* CSS:
 - Allow fractional letterspacing

* Theme:
 - Improve legibility of selectable labels

* Demos:
 - Improve the font features demo
 - Add demos for GtkInscription

* Wayland:
 - Freeze popups when hidden
 - Only send smooth scroll events for tablet tools
 - Make scaled cursor image have the right size
 - Fix problems with the activation protocol
 - Don't force the HighContrast icon theme
 - Support xdg_toplevel.bounds

* X11:
 - Always update the shadoe size

* Windows:
 - Improve touchpad support by using DirectManipulation
 - Add more directories to the builtin hicolor icon theme

* Translation updates:
 Basque
 Catalan
 Chinese (China)
 Galician
 German
 Lithuanian
 Nepali
 Occitan
 Persian
 Polish
 Portuguese
 Russian
 Serbian
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.7.0, 07-05-2022
========================================

* GtkTextView:
 - Reduce overdraws

* GtkViewport:
 - Default scroll-to-focus to TRUE

* GtkText:
 - Stop blinking when we lose focus

* GtkSearchEntry:
 - Make search delay configurable

* GtkPopoverMenu:
 - Fix RTL positioning of buttons

* GtkLabel:
 - Fix focus keynav with links

* GtkFileChooser:
 - Prevent undesirable completion popups
 - Fix a corner case in save mode
 - Keep the portal filechooser alive long enough

* GtkCheckButton:
 - Allow setting a custom child

* GtkEditableLabel:
 - Make the :editing property writable

* GtkColumnView:
 - Various optimizations to improve scrolling performance

* GtkTreeStore:
 - Allow populating tree stores from ui files

* GtkBoxLayout:
 - Avoid infinite loops

* CSS:
 - Optimize reordering within the same parent

* Emoji:
 - Update to CLDR v40 / Unicode 14
 - Add more locales

* Input:
 - Add scroll unit handling
 - Handle display changes in GtkIMMultiContext
 - Always populate GDK_AXIS_X/Y in event history
 - Don't crash for large compose tables

* Accessibility:
 - Fix a crash at start when orca is running

* Theme:
 - Refresh icons
 - Fix selection in vertical spin buttons
 - Fix selection in editable labels

* gdk:
 - Optimize pixel format conversions
 - Use EGL_KHR_swap_buffers_with_damage for NVidia

* gsk:
 - Handle large viewports
 - Prepare texture libraries for glyphy rendering
 - Don't leak big glyphs in the glyph cache
 - Align offscreen rendering with th pixel grid
 - Check for half-float support before using it

* Wayland:
 - Use xdg-activation protocol
 - Fix text caret coordinates
 - Fix on-screen keyboard activation

* MacOS:
 - Fix sluggish and reversed scrolling
 - Improve monitor detection
 - Event handling fixes
 - Fix keyboard input on popovers
 - Support OpenGL-based video playback
 - Support fullscreen
 - Improve native filechoooser size allocation
 - Use CALayer and IOSurface for rendering
 - Use a per-monitor CVDisplayLink
 - Fix kinetic scrolling
 - Improve window placement
 - Improve multi-monitor handling
 - Start applications in the foreground
 - Fix cursor blink time

* Windows:
 - Fix preedit window placement on HiDPI

* Tools:
 - gtk4-builder-tool: Don't require a display for all commands
 - gtk4-builder-tool: Add a screenshot command
 - gtk4-node-editor: Install this utility

* Debugging:
 - inspector: Show more application data
 - inspector: Allow viewing PangoAttrList properties

* Documentation:
 - Use the gtk-builder-tool to generate screenshots

* Build:
 - Fix cross-compilation
 - Fix build on aarch64
 - Fix build with gcc 12

* Translation updates
 Basque
 Brazilian Portuguese
 British English
 Catalan
 Chinese (China)
 Chinese (Taiwan)
 Croatian
 Czech
 Danish
 Finnish
 Galician
 Georgian
 German
 Hebrew
 Hungarian
 Indonesian
 Italian
 Kazakh
 Korean
 Latvian
 Lithuanian
 Norwegian Bokmål
 Persian
 Polish
 Portuguese
 Russian
 Serbian
 Slovak
 Slovenian
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.6.1, 11-02-2022
========================================

* GtkFontChooser:
 - Stop using PangoFc api
 - Fix a crash
 - Use new HarfBuzz api

* GtkMenuButton:
 - Update accessible description

* GtkTextView:
 - Fix intra-widget dnd

* Printing:
 - Fix an fd leak

* Input:
 - Make sure input methods get focus-in events
 - Always flush events to avoid scroll event pileup
 - Support hold events
 - Update keysyms from libxkbcommon

* Theme:
 - Improve text selection legibility

* Introspection:
 - Add missing nullable annotations everywhere

* Build:
 - Make stack noexec again
 - Avoid symbol leaks
 - Drop unneeded script data

* Windows:
 - Stop using WM_SYNCPAINT
 - Relax check for GL 3.x legacy contexts
 - Use native apis for language names
 - Rewrite the keymap code
 - Use the GL renderer by default

* Wayland:
 - Fix support for the new high-contrast setting
 - Avoid redundant scale changes
 - Fix DND hotspot handling
 - Don't always restore the saved size when floating

* MacOS:
 - Various performance improvements

* Translation updates:
 Brazilian Portuguese
 Catalan
 Chinese (China)
 Galician
 Hebrew
 Japanese
 Lithuanian
 Persian
 Polish
 Portuguese
 Russian
 Slovenian
 Spanish
 Ukrainian


Overview of Changes in 4.6.0, 30-12-2021
========================================

* GtkProgressBar:
 - Fix handling of "inverted"

* GtkLabel:
 - Add a "natural wrap mode" property to influence how
   natural width is determined

* GtkTextView
 - Scroll insertion on-screen after undo / redo

* gsk:
 - Abort region diffing when changes are too complex

* gdk:
 - Avoid compressing discrete scroll events
 - Fix problems with hiding windows
 - Improve GL and GLES version checks

* Wayland:
 - Support new high-contrast setting

* Inspector:
 - Add DND inspection support

* build:
 - Avoid deprecated meson apis

* Translation updates
 Galician
 Portuguese
 Ukrainian


Overview of Changes in 4.5.1, 16-12-2021
========================================

* GtkWidget sizing has been rewritten to implement
  width-for-height more properly. This had some fallout,
  and some widgets may still not react kindly to the
  new way of doing things.

  See https://blog.gtk.org/2021/12/03/sizable-news/
  for details, and please file issues if you notice fallout.

* Rename git `master` branch to `main`

* Css:
 - Fully support font-variant-caps
 - Fix a crash with gradients

* Make various widgets activatable:
 - GtkComboBox
 - GtkDropDown

* GtkPopover:
 - Make focus indicators not disappear

* GtkTextView:
 - Don't leave embedded children stranded when scrolling
 - Don't insert Emoji into non-editable textviews
 - Fix Emoji chooser positioning
 - Fix problems with pasting text
 - Improve scroll-to-mark behavior
 - Support right-aligned, centered and decimal tabs
 - Make child anchor replacement character settable
 - Provide more context to input methods

* GtkDragIcon:
 - Provide default icons for paintables and files

* GtkBuilder:
 - Speed up template precompilation

* Actions:
 - Reduce allocations during signal emissions
 - Avoid duplication and unnecessary recursion

* Inspector:
 - Show the selected im-module in the General tab
 - Add a clipboard viewer
 - Make the recorder record events too
 - Add a graph visualizing gtk_widget_measure()

* Gsk:
 - Fix hexbox rendering
 - Fix transformed linear gradient rendering

* Printing:
 - Fix dialog-less printing

* Windows:
 - Use the common EGL setup code
 - Respect GDK_DEBUG=gl-egl
 - Fix AeroSnap indicator and positioning

* X11:
 - Improve behavior of windows drags on headerbar controls
 - Trap errors for RANDR changes
 - Fix problems with drag icons

* Wayland:
 - Ensure we prefer the Wayland im-module over others

* Translation updates
 Basque
 Catalan
 Croatian
 Friulian
 Galician
 Hebrew
 Icelandic
 Italian
 Latvian
 Lithuanian
 Occitan
 Persian
 Portuguese
 Spanish
 Swedish
 Ukrainian

Overview of Changes in 4.5.0
============================

* gsk:
 - Drop the GL renderer in favor of NGL
 - Rename NGL to GL
 - Fix some coordinate overflow issues
 - Reimplement texture upload and download for better
   support of image formats and color spaces
 - New api:
   gsk_transform_skew
   gsk_transform_to_2d_components

* gdk:
 - Support HSL in gdk_rgba_parse
 - Use libpng, libjpeg and libtiff directly when loading
   textures, and support more image formats (including 16bit
   and float formats)
 - New apis:
   gdk_texture_new_from_bytes
   gdk_texture_new_from_filename
   gdk_texture_download_float
   gdk_texture_save_to_png_bytes
   gdk_texture_save_to_tiff
   gdk_texture_save_to_tiff_bytes
   gdk_display_create_gl_context
 - Implement GIcon and GLoadableIcon in GdkTexture
 - Move EGL initialization to the frontend
 - Use configless EGL contexts, if supported
 - Use >8bit pixel formats, if supported and requested

* css:
 - Add support for line-height
 - Add support for text-transform

* theme:
 - Fixes for buttons in toolbars

* input:
 - Update compose sequences from libX11 1.7.2
 - Accept replacement string longer than 20 characters

* text:
 - Implement sloped caret drawing
 - Add a gtk-hint-font-metrics setting to switch
   font rendering to be more similar to GTK3

* GtkTextView:
 - Add support for line height
 - Add support for text transforms
 - Misc fixes for css->pango attribute translations
 - Invalidate pango contexts when font settings change
 - Improve undo grouping when overwriting

* GtkListView:
 - Make tree indentation more flexible with
   GtkTreeExpander:indent-for-icon

* GtkMenuButton:
 - Support custom children

* GtkFlowBox:
 - Add prepend and append

* GtkCalendar:
 - Fix handling of weeks starting on Monday

* GtkWindow:
 - Add a titlebar property

* GtkDropDown:
 - Add a show-arrow property

* GtkPopoverMenu:
 - Support a use-markup attribute in menu models

* Add GtkSymbolicPaintable

* Tools:
 - Support DND in gtk4-node-editor and the inspector's recorder

* Demos:
 - Improve the font rendering demo

* Build:
 - Require Pango 1.49
 - Require libpng, libtiff and libjpeg
 - Speed up handling of resources during build

* X11:
 - Support touchpad gestures with XInput 2.4

* Windows:
 - Fix DND coordinates

* Translation updates:
 Basque
 Brazilian Portuguese
 Catalan
 Chinese (China)
 Croatian
 Czech
 Dutch
 Finnish
 French
 Galician
 German
 Hebrew
 Hungarian
 Icelandic
 Indonesian
 Kazakh
 Korean
 Latvian
 Lithuanian
 Persian
 Portuguese
 Romanian
 Serbian
 Slovak
 Spanish
 Swedish
 Turkish
 Ukrainian


Overview of Changes in 4.4.0
============================

* Input:
 - Match IBus for display of Compose sequences
 - Match IBus for handling of mismatches
 - Handle Escape in Compose sequences
 - Allow multiple dead keys
 - Support 32bit keysyms

* GtkCheckButton:
 - Activate when moving focus

* GtkLabel:
 - Properly ignore double underscores for mnemonics

* GtkPopoverMenu:
 - Fix focus cycling

* GtkTextView:
 - Improve word selection
 - Fix block cursors on empty lines

* GdkToplevel:
 - Support the gnome-shell titlebar gesture protocol

* GdkDropTarget:
 - Allow creating drop targets in ui files

* gsk:
 - Handle partial color fonts correctly
 - Use harfbuzz for color font information
 - Avoid pango for glyph cache rendering
 - Shrink shadow extents

* Settings:
 - Change the default for gtk-split-cursor to FALSE

* Demos:
 - Small improvements to widget-factory
 - gtk-demo: Improve the hypertext demo
 - gtk-dem: Improve the clipboard demo

* X11:
 - Set WM_CLASS on toplevels

* Wayland:
 - Support wl_seat v7

* Windows:
 - Drop the local DND protocol
 - Avoid WGL if shaders don't work
 - Use WinPointer API

* Translation updates:
 Belarusian
 Friulian
 Hebrew
 Khmer
 Persian
 Polish


Overview of Changes in 4.3.2
============================

* GtkToggleButton:
 - Fix the actionable implementation

* GtkCheckButton:
 - Fix the actionable implementation
 - Cancel activation on when the pointer leaves

* GtkMenuButton:
 - Make activatable again
 - Add a way to have an icon + arrow

* GtkColorButton:
 - Make activatable again

* GtkFontButton:
 - Make activatable again

* GtkAppChooserButton:
 - Make activatable again

* GtkColumnView:
 - Fix double activation

* GtkLabel:
 - Fix mnemonics without markup

* GtkTreeView:
 - Clip header buttons

* GtkTextView:
 - Add api to get the RTL and LTR contexts
 - Fix some errors in text history grouping

* GtkText:
 - Don't show placeholder text on top of entry text
 - Add api to compute the cursor extents
 - Fix y coordinates for text selection

* GtkFileChooser:
 - Don't show Trash in the side bar

* GtkPopoverMenu:
 - Add scrollbars to long menus

* GtkActionMuxer:
 - Fix propagation of accel changes

* Introspection:
 - Annotate all filename arguments
 - Rename GtkMediaStream apis to avoid name collisions
 - Rename GtkDropTarget properties to avoid name collisions
 - Make GtkPasswordEntryBuffer introspectable

* Printing:
 - Remove the Google Cloud Print backend

* Theme:
 - Sync included icons with the Adwaita icon theme

* GSK:
 - Avoid overflowing the vertex counter
 - Handle negative scales correctly in the ngl renderer

* GDK:
 - Cleanup and simplify OpenGL setup code
 - Add a GdkDisplay::init_gl vfunc and gdk_display_prepare_gl() api
 - Require EGL 1.4
 - Fix EGL + NVidia

* Build:
 - Enable gstreamer by default
 - Disable Vulkan by default
 - Remove the sassc option
 - Remove options and checks for X11 extensions

* X11:
 - Stop using XComposite
 - Remove the Visual cache

* Wayland:
 - Fix some DND corner cases
 - Work with version 2 of pointer-gestures-v1
 - Look for cursor themes in $HOME/.icons

* Windows:
 - Fix SIGILL on x64 due to popcnt
 - Fix popup placement
 - Fix drag icon placement
 - Clean up HiDPI and WGL support
 - Default to WGL

* MacOs:
 - Fix input method support
 - Register known clipboard types for drop targets
 - Add initial DND support

* Translation updates:
 Brazilian Portuguese
 Portuguese
 Romanian
 Turkish
 Ukrainian


Overview of Changes in 4.3.1
============================

* GtkEmojiChooser:
 - Update data from CLDR 39
 - Load Emoji data for both language and territory

* GtkCalendar:
 - Fix an off-by-one error in day numbers

* GtkListView:
 - Add .activatable style class to activatable items

* GtkCheckButton:
 - Don't allow unchecking grouped radio buttons

*GtkToggleButton:
 - Fix mnemonic activation propagation

* GtkLabel:
 - Make mnemonics work even when invisible
 - Fix mnemonic activation propagation

* GtkMenuButton:
 - Add a property to mark primary menus and make F10 work

* GtkApplication:
 - Fix initial screensaver state async

* GtkEntry:
 - Apply xalign to placeholder text (as it was in GTK 3)

* GtkSpinButton:
 - Fix swipe gestures

* GtkStackSwitcher:
 - Implement GtkOrientable (as it was in GTK 3)
 - Fix a use-after-free problem with drag timeouts

* GtkFileChooser:
 - Add support for (case-insensitive) suffix matches in GtkFileFilter

* GtkPasswordEntry:
 - Make GtkPasswordEntryBuffer public, to make it easier
   to write your own password entry widget

* Input:
 - Fix interference between various obscure XKB features
   (e.g. overlays) and Compose sequences

* Action support:
 - Fix submenu-action handling

* Theme:
 - Update icons from the Adwaita icon theme
 - Fix icon names for GtkSwitch
 - Fix switch-off icon

* GSK:
 - Improve transformed offscreen rendering
 - Add padding between cached glyphs

* Wayland:
 - Fix monitor sizes in the presence of transforms
 - Add a getter for the EGLDisplay
 - Fix click-drag-release sequences for popovers

* X11:
 - Support EGL for X11. Fall back to GLX if EGL isn't available
 - Always fall back to GLX on NVidia
 - Add a getter for the EGLDisplay

* Broadway:
 - Add a setter for display scale

* Windows:
 - Add a getter for the EGLDisplay
 - Make GL work for media playback

* MacOS:
 - Fix menubar appearance

* Tools:
 - gtk4-builder-tool: Replace can-focus with focusable in 3-to-4 conversion

* Introspection:
 - Add missing annotations in a few places (e.g. gtk_free_view_row_activated)

* Build:
 - Only build one source file with -mf16c
 - Fix devel styling for ci flatpak builds
 - Generate appdata for demo flatpaks

* Docs:
 - Numerous fixes and additions

* Translation updates:
 Friulian
 Nepali
 Norwegian Bokmål
 Ukrainian


Overview of Changes in 4.3.0
============================

* GtkVideo:
 - Detect stream metadata when using gstreamer

* GtkFileChooser:
 - Fix a crash

* GtkButton:
 - Add back visual feedback for keynav activation

* GtkFontChooser:
 - Fix initial font selection

* Text widgets:
 - Replace squiggly error underlines by dotted lines
 - Support translucent selections

* GtkTextView:
 - Various improvements to rendering performance

* GtkScrolledWindow:
 - Stop using scroll cursors

* GtkMenuButton:
 - Make focus-on-click work

* GtkToggleButton:
 - Make grouped buttons mutually exclusive

* GtkPasswordEntry:
 - Use MADV_DONTDUMP for secure memory

* GtkListBox:
 - Allow repeated selection extension for MULTIPLE

* Themes:
 - Reorganize and rename included themes. The theme is now
   called Default, with dark, hc and hc-dark variants.
   Visually, the themes are unchanged.
 - The theme variants are also available as standalone
   themes called Default-dark, etc.
 - The theme named Adwaita is moving to libadwaita
 - Fix resize border sizing
 - Fix solid-csd window decorations

* Input:
 - Revert some Compose sequence changes (mainly around dead
   acute and apostrophe)
 - Consume all key events during preedit, to avoid unexpected
   interactions
 - Ignore more modifiers during preedit, to allow using 3rd and
   5th level choosers
 - Fix handling of cursor positions in non-ASCII preedit text
 - Fix a problem with deferred focus setting

* GdkClipboard:
 - Ensure strings are nul-terminated

* GSK:
 - Improvements to the ngl renderer
   - Fix offscreen rendering with transforms
   - Fix downscaled textures
   - Avoid huge intermediate textures
   - Use fp16 for colors
   - Optimize handling of underlines in text
   - Fix corner cases of shadow rendering
 - Reorganize shader resources
 - Make shadow rendering match across renderers

* Accessibility:
 - Various fixes to get Orca to speak (still a work in progress)

* Wayland:
 - Improve font settings fallback
 - Avoid unintentional rendering freezes with popovers
 - Support the xdg_activation_v1 protocol

* X11:
 - Don't beep on untrusted displays
 - Don't crash when popovers are outside the workarea

* Windows:
 - Fix using GL rendering with Mesa drivers

* Tools:
 - Add support for copy/paste in gtk4-node-editor
 - Make syntax highlighting work in the gtk4-demo flatpak

* Inspector:
 - Enable the inspector by default, in all cases
 - Show keyboard layouts
 - Improve monitor information

* Translation updates:
 Catalan
 Chinese (Taiwan)
 Dutch
 Nepali
 Polish
 Swedish
 Ukrainian


Overview of Changes in 4.2.0
============================

* GtkFileChooser: Make the location entry work again

* GtlLabel: Fix tooltips on links

* GtkTextView: Make scrolling work better with renderers

* X11:
 - Fix damage handling
 - Trap errors from the COW

* Windows:
 - Use a visible scroll cursor
 - Include more icons for icon-theme-less situations

* Wayland: Fix key event matching with mismatched layouts.
  This was causing keyboard accelerators to trigger unexpectedly

* Inspector: Allow inspecting Unicode

* Input:
 - Improve dead key handling
 - Regenerate compose sequence table

* gsk:
 - Fix a crash in the ngl renderer
 - Fix a rounding error in subpixel glyph positioning
 - ngl: Implement glyph cache eviction
 - ngl: Improve the glyph cache effectiveness
 - ngl: Fix uniform key mapping on Windows
 - Make the ngl renderer the default

* build:
 - Fix build with cairo as subproject
 - Disable g_assert in release builds
 - Include gi-docgen as subproject
 - Include generated docs

* Translation updates:
 Hebrew
 Hungarian
 Italian
 Polish
 Portuguese
 Swedish
 Ukrainian


Overview of Changes in 4.1.2
============================

* Input:
 - Ensure preedit-start and preedit-end
   are emitted properly
 - Support the Wayland text protocol better
 - Delete the selection when preedit starts

* Label: Fix a small issue with markup parsing
  and mnemonics

* Spinbutton: Interpret localized digits

* Textview: Fix blinking block cursors

* Tooltips: Don't pop up erroneous on popovers

* Window: Add a way to disable F10 handling

* Theme:
 - Use a regular focus ring for sidebar rows

* GSK
 - ngl: Performance improvements
 - vulkan: Add visible fallback rendering
 - vukan: Handle simple transforms when clipping

* Wayland:
 - Don't force a full redraw for every frame
 - Don't leak buffers when rendering with cairo

* Demos:
 - iconbrowser: Make search more useful

* Documentation:
 - Switch to building docs from gir files with gi-docgen

* build:
 - Allow GTK to be used as meson subproject

* Translation updates
 Catalan
 Czech
 Finnish
 French
 Indonesian
 Kazakh
 Latvian
 Norwegian Bokmål
 Polish
 Serbian
 Turkish


Overview of Changes in 4.1.1
============================

* Popover:
 - Support shadows on popover > contents

* Input:
 - Show preedit for compose sequences
 - Support long compose sequences
 - Support compose sequences producing multiple characters

* Themes:
 - Allow suggested and destructive actions in lists
 - Disable shadows on maximized, fullscreen and tiled windows
 - Fine-tune scrollbar transitions and size

* CSS:
 - Support drop-shadow filters
 - Correct blur filter spread interpretation

* Documentation:
 - Improvements and updates for dialogs and native dialog

* Printing:
 - Support Avahi-discovered printers better

* GSK:
 - Add another OpenGL render. It is not the default yet.
   To try it, use GSK_RENDERER=ngl

* Build:
 - Lots of static analysis fixes found by pvs
 - Add a -Dprofile=devel option for devel styling and
   use it for nightly flatpaks

* X11:
 - Fix DND of X11-specific types

* Wayland:
 - Fix lookup of font settings in flatpaks

* Windows:
 - Fix window resizing
 - Avoid UAC for gtk-update-icon-cache

* MacOs:
 - Use correct module file extension
 - Make OpenGL context opaque when possible
 - Fix window resizing

* Translation updates:
 British English
 Czech
 Danish
 Galician
 Hungarian
 Turkish


Overview of Changes in 4.1.0
============================

* GtkCheckButton:
 - Add back an activate signal

* GtkSearchBar, GtkSearchEntry:
 - Capture events in the bubble phase

* GtkEmojiChooser:
 - Adapt to small screen sizes

* GtkVideo:
 - Fix issues with GL support

* Themes:
 - Set sort arrows in CSS
 - Set menu button arrows in CSS
 - Make scrollbars larger
 - Support circular menubuttons

* CSS:
 - Implement transform-origin
 - Support overlines on text
 - Support colors in cross-fade()
 - More complete text-decoration-line support

* Text layout:
 - Use subpixel positioning with new enough cairo

* Inspector:
 - Fix slowness in navigation
 - Redo the controllers and shortcuts pages

* Accessibility:
 - Create AT context objects lazily

* Wayland:
 - Fix decoration negotiation under kwin

* GSK:
 - Optimize gradient shaders
 - Implement repeating gradients in shaders

* Translation updates
 - Czech
 - Greek
 - Hungarian
 - Persian
 - Punjabi
 - Romanian
 - Swedish
 - Ukrainian


Overview of Changes in 4.0.2
============================

* GtkAboutDialog:
 - Set icon size for the logo
 - Fix initial focus to be the same as in GTK 3

* GtkImage:
 - Update icons on scale change

* Wayland: Fix crashes with touch and tablet events

* Windows:
 - Fix surface and geometry computation
 - Remove layered window usage

* MacOS: Support stylus devices

* Themes:
 - Adwaita: Remove edge highlights
 - Adwaita: Update image assets
 - Make Adwaita-dark available as standalone theme
 - Make HighContrastInverse the dark variant of HighContrast

* Docs:
 - Complete GtkAspectFrame docs
 - Clarify migration docs for widget signals

* Inspector:
 - Fix a critical with the recorder
 - Fix a crash with treeviews
 - Show overlay layout properties
 - Add a legend for the layout overlay

* Build:
 - Fix build with gcc 11
 - Support building without sassc

* Translation updates:
 Basque
 Czech
 Friulian
 Polish
 Romanian
 Spanish
 Swedish
 Ukrainian


Overview of Changes in 4.0.1
============================

* GtkPopover
 - Center titles
 - Fix menu item alignment with submenus

* GtkVideo
 - Fix up autoplay semantics
 - Respect pixel aspect ratio
 - Get GL textures from gstreamer

* GtkCenterLayout
 - Fix handling of expanding center child

* GtkSettings
 - Change gtk-cursor-aspect-ratio to double
 - Fix the default value of gtk-print-backends

* GtkGestureStylus
 - Convert motion history to surface coordinates

* GL renderer
 - Various optimizations
 - Avoid leaking shader objects

* Adwaita
 - Fine-tune flat buttons
 - Improve contrast of dim-label
 - Improve contrast of controls in headers

* Docs
 - Add various missing types
 - Add DND examples
 - Correct css docs for several widgets
 - Improve GtkVideo docs
 - Update migration docs for GtkClipboard
 - Improve migration docs for event controllers
 - Add migration docs for GtkBuilder

* gtk4-builder-tool
 - Remove GtkCheckButton::draw-indicator
 - Fix a buffer overrun
 - Remove GtkToolbar::toolbar-style

* Demos
 - Don't put the search bar in the scroll area
 - Make the OpenGL demos work with OpenGL ES

* X11
 - Fix a possible crash

* Build
 - Fix vulkan reference in pc file
 - Fix build with certain Vulkan versions

* Windows:
 - Fix build with Visual Studio 2013

* OS X:
 - Fix build on OS X
 - Fix crash on Mojave
 - Fix a window sizing issue
 - Fix build on OS X 10.12
 - Add a CI build

* Translation updates:
 Basque
 Brazilian Portuguese
 Catalan
 Galician
 German
 Japanese
 Lithuanian
 Persian
 Punjabi
 Romanian
 Ukrainian
