#481

Canvas and macOS host improvements

Openrdevopened 1mo ago

Sup, everyone!

I'm porting ProUI, to Native SDK and I bring SDK improvements that were required to make it work. This issue is to keep track of stuff and explain the PR shotgun.

Matching ProUI's designs and the density of the demo apps built with it required some updates to the SDK in a few of places. I made those changes in a fork I could develop with, but it'd be nice to have them in the SDK as it'll benefit everyone using it, not just ProUI

Some of the fixes:

  • Rounded clip_content surfaces cut their children square on every backend.
  • Drop shadows on macOS rendered at about 1% strength and pointed the wrong way vertically.
  • ProMotion displays were capped at 60 Hz.
  • A dropped scroll report could leave the native scroller and the canvas content permanently out of step.
  • An open accordion containing a closed one never became interactive.
  • Wrapped paragraphs could be measured at the wrong width and overlap the next sibling.

I've also added general mechanisms for things ProUI needed that would be beneficial to other projects using Native SDK: widget painters, app-level input hooks, SliderRange, side-anchored overlays, and composed tooltips.

PRWhat
#471Canvas fixes: paragraph and overlay measurement, container borders, nested accordions, animation transforms
#472Letter spacing, authored text size and line height, rounded content clips on every backend (wire format v6)
#473Widget painters and custom-control seams (cursor override, automation hover)
#474Slider source ranges, vertical flush button groups, app input hooks
#475Side-anchored overlays, docked modals, modal dismissal, menu safe triangle, composed tooltips, checked native menu items
#476Layout memoization, desktop budgets, virtual-list row reuse, animation continuity
#477File path dialogs for Zig apps, app-owned pixels, real-time audio output
#478macOS shadow, stroke, font, and accessibility fixes
#479macOS scrolling reliability, display-rate pacing, GPU compositing
#480GPU scenes rendered into registered images (builds on #479)

The fixes (#471, #478, and most of #479) should be uncontroversial and I welcome design feedback on:

  • the painter API in #473 (a function pointer plus a fixed [8]f32 payload)
  • the SliderRange model in #474
  • the overlay placement additions in #475
  • whether real-time audio output (#477) and GPU scenes (#480) belong in the SDK at all. I feel like it's neat, but idk

Everything is split so it can be merged independently except #480, which builds on #479

Thx, see you tomorrow ▲

Activity

0

No activity yet.