GTK team meeting - 2019-05-06

Topics for May 6th, 2019

Meeting minutes

3.96 snapshot (mclasen)

  • originally planned for April, didn’t work out
  • goals
    • show current progress
    • validate some of the API design
  • current regressions:
    • menu overflow scrolling
    • event translation code prevents discarding menus by clicking outside
  • menu scrolling: Benjamin looking into it after render node work
  • event translation: Carlos bumping priority
  • mitigations
    • we can still release a developer snapshot with overflow scrolling broken
    • revert event translation and push it back for the next snapshot, after popover work lands

Popovers (mclasen)

  • current state: wip/matthiasc/popup5
  • diffstat: +3000 -6000
    • removed code mostly in GDK, added code mostly in popovers
  • size negotiation problem solved
    • each top level has its own frame clock, which could fire out of order
    • changed popups to inherit their relative top level frame clock and things started to work
    • except on X11, which expects all top levels to have different frame clocks, so the X11 backend needs to be fixed
  • related work
    • default widgets use GAction instead of custom code (landed in master)
    • key events are always propagated from the top level
    • single focus location per top level
    • no more child surfaces
    • dropped a lot of x11-specific apis
    • removed used of global coordinates
    • popup surface type
  • to do
    • frame clock issue on X11
    • fix win32 backend
    • look at event handling issues
  • menus are still messy
    • lots of dead code from years of refactoring that hasn’t been removed
    • menu bars expect to be menus while still part of the widget hierarchy
    • menu items/sub-menus split

Constraints (ebassi)

  • current state: wip/ebassi/constraint-layout
  • landed the constraint solver into the branch
  • documented on how the thing works
  • solver API is private, so it can be changed during review
  • GtkLayoutManager subclass in progress, less problematic
  • one solver per GtkRoot, so widgets can share constraint targets and sources across the hierarchy
    • results will still be affected by style, so padding/margins/borders will influence widgets in different sub-graphs
    • constraint layouts get attached to a solver once the widgets are rooted; measuring before that is going to yield (0, 0) positions and 0×0 sizes; styles are also going to be invalid, so it’s not something unexpected, but worth documenting and warning about
  • related work
    • added a way to specify the layout manager for a class of widgets
    • used by widgets with a specific layout manager bound to their class/API: GtkGrid/GtkGridLayout; GtkBox/GtkBoxLayout; GtkOverlay/GtkOverlayLayout; …
    • useful for inspecting widget classes for layout properties (Inspector, gtk-builder-tool, Glade) without instantiating one
    • GtkWidget creates layout manager by itself
    • validation on the layout manager you set manually

New CSS parser (Company)

  • new CSS parser landed in master
  • proper tokenizer, follows CSS3 syntax rules
  • found a bunch of bugs
  • Inspector auto-saves CSS; useful for writing new test cases for the reftests suite

Render node parser (Company, baedert)

  • new serialization syntax for render node tests
  • simple node editor GUI
    • shows all available backends (Cairo, GL, Vulkan)
  • added a bunch of new tests to the CI suite
  • suggestion: run tests in a tight loop to get FPS limits
  • GVariant-based serialization has been dropped
  • goal of the new tests is to ensure correctness first, and then performance
2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.