Agenda
- GTK topics
- layout: do we want to add max-width/height to CSS ? Draft: css: Add max-width/max-height (!9768) · Merge requests · GNOME / gtk · GitLab
- ‘ucd for keys’: this came up several times recently: helper functions to associate semantic information to keyvals: directions for arrows, ‘activate’ for enter variants and space, etc widgets: Add missing GDK_KEY_KP_Space for activation (!9881) · Merge requests · GNOME / gtk · GitLab Draft: direction: Add function for returning the corresponding physical direction based on keyval (!9794) · Merge requests · GNOME / gtk · GitLab
- perhaps they can be triggers:
Gtk.DirectionTriggerandGtk.ActivateTrigger - Should we add “flags” like ASCII/Unicode does with
isspace(),isalnum(),isleft(),isright()etc?
- perhaps they can be triggers:
- scrolling rework
- can it happen in GTK 4, or do we wait for GTK 5?
- make scrolling an event sequence (
Gtk.GestureScroll?) - it’s too hard to implement a custom scrolling view if one can’t use
Gtk.ScrolledWindowGtk.ScrolledWindowusesGtk.GestureDrag+Gtk.GesturePan+Gtk.GestureSwipe+Gtk.GestureLongPress+ 2 xGtk.EventControllerMotion+ 2 xGtk.EventControllerScroll, plus the privateGtk.KineticScrollingAPI- could all those kinds of input be handled by a single event controller (
Gtk.GestureScroll?) and easily consumable by custom widgets?
- nested scrolling
- pull to refresh
- are there any cases where we want to propagate a fling to an outer scrollable, like Android’s
AppBarLayoutdoes?AppBarLayoutimplements header bars that get scrolled out when the user scrolls the content down, but instantly revealed (scrolled back in) when the user starts scrolling back up- requires parent and child to cooperate on handling parts of the same scroll fling while preserving velocity/momentum
- API to disable overscroll on a specific edge?
- via insets?
- Gtk.Scrollable
- get_border is a broken API (measure or get allocated? minimum/natural? for_size?)
- replace get_border with insets?
- infinite scrolling
- drop adjustments?
- handle overshoot? see https://my.devsuite.app/@chergert/116628871258166000
- scrolling multiple things as a single unit
- a header widget, then a list, then a footer widget
- several lists in a chain
- Draft: Add GtkScrollableBox (!9934) · Merge requests · GNOME / gtk · GitLab
- Other topics
- Accessibility: what do we do about newton? Is there any interest in pushing it forward? In this context, Get the a11y code out of the rendering code (#8219) · Issues · GNOME / gtk · GitLab is relevant
- Question about the future of Pango and the potential merge into GTK (?)
Minutes
-
Layout
- Support for CSS max width/height is relatively easy in the parser
- How do we integrate with the layout implementation
- Are they mandatory?
- How do CSS max size interact with min size
- Enforcement inside GtkWidget
- How do we take it into account when measuring a widget?
- We discussed something like this for GtkLabel size computation (max width chars)
- Label behaviour is not mandatory in 4.x, but it started off as mandatory; it was removed because people could not change it and it was unexpected
- Label/text interactions between max-width-chars/max-width
- Original case: cells of known max size/aspect ratio, used to limit the maximum size
- Needs additional reftest cases (especially with ListView)
-
UCD for keys and navigation
- motivation: adding semantic grouping for activation and navigation
- should live near the key definitions
- should we allow applications to define their own grouping?
- should we add trigger objects for keys?
- GTK hackfest topic: a navigation event controller would remove some of the direct key handling, and integrate with the trigger API
- potential for conflicts between low level controllers set up by applications, and high level ones provided by GTK
- maybe a separate hierarchy for high level controllers
-
Scrolling
- original motivation: have different scrolling regions within the same scrollable widget
- scrolledwindow is very, very complex (lots of event controllers, lots of toggles/policies)
- If we invent a new interface and a new scrolling widget, can it be done within GTK4 or do we need GTK5?
- What happens with widgets that implement
GtkScrollabletoday?- Custom widgets that implement a scrolling area without using
GtkScrolledWindow
- Custom widgets that implement a scrolling area without using
- Add a private interface/private widget for internal use?
- Add multiple scrolling container widgets instead of putting everything into a single one
- Keeps complexity manageable
- Out of tree experiments are kind of hacky
- Interaction with input: rotation/scale transformations
- Maybe isolate some core functionality into a base object?
- More experiments in tree
- Possible overlaps with existing API:
- Everybody hates
GtkAdjustment - No clear separation of roles, various layering violations
- Multiple components try to set the values
- Everybody hates
- Possible approach inside gtk4: new GtkScrollArea to live next to GtkScrolledWindow
- Set up a call for designing Scrolling: suggestion: In a week
- 2026-06-05 13:00 UTC
-
AccessKit/Newton
- Unknown state upstream; some work is still happening
- AccessKit works on macOS/Windows (we got bug reports and merge requests to fix issues there)
- Some missing functionality for AT-SPI; our current backend has the most coverage
- Needs some proper investigation on what’s missing and who would be willing to work on it
- Possible idea for a round of funding
-
Pango
- Maybe “dissolve” it into GTK5
- Discussion may happen at GUADEC 2026
- Backward compatibility in the API and assumptions on the environment, like font loading
- “Pango 2” branch breaks backward compatibility, but needs more maintenance resources
- Lack of users driving features outside of GTK
- Text rendering
- Text stack is currently driven by HarfBuzz; the only thing that HB does not do is paragraph layout, which is what we need in GTK
- Switching to “Pango 2” internally to GTK would require an API break in GTK itself because of the Pango types in the API
- Next to Pango the plan is to phase-put Cairo, as well.