You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Found porting Deslan Studio's 4d drum panel (step sequencer on lib/ui grid) — the next entry in the lib/ui gap series (#561–#570).
Two frictions in ui_w_data.eigs's grid:
The widget owns a second copy of the pattern._mousedown_grid flips cells[r][c]itself and only then calls on_cell. An app whose model is the source of truth (DeslanStudio's DrumMachine — patterns live in the model, with undo history) must overwrite grid.cells from the model after every click, and after every model-side change (undo/redo, pattern switch, randomize), or the two drift. A cells-is-read-only mode — mousedown reports (row, col) and lets on_cell decide — would remove the double bookkeeping. (Same class as lib/ui: set_theme has no effect on widgets or renderers — sibling fragments keep the stale _theme binding #562's set_theme staleness: lib/ui state that shadows app state.)
row_labels render at ax - 60, scale 1, unconditionally (_render_grid). The gutter width is not configurable, long labels overflow left or clip at the window edge if the grid sits at x < 60, and the labels are outside the widget's own bounds (so any future clipping of the widget rect would erase them). DeslanStudio positions the grid at x=76 to make the hardcoded gutter land inside its panel.
Neither blocks the port (workarounds above are in src/client/drum_view.eigs); filing per the forcing-function rule.
Found porting Deslan Studio's 4d drum panel (step sequencer on lib/ui
grid) — the next entry in the lib/ui gap series (#561–#570).Two frictions in
ui_w_data.eigs'sgrid:The widget owns a second copy of the pattern.
_mousedown_gridflipscells[r][c]itself and only then callson_cell. An app whose model is the source of truth (DeslanStudio's DrumMachine — patterns live in the model, with undo history) must overwritegrid.cellsfrom the model after every click, and after every model-side change (undo/redo, pattern switch, randomize), or the two drift. Acells-is-read-only mode — mousedown reports(row, col)and letson_celldecide — would remove the double bookkeeping. (Same class as lib/ui: set_theme has no effect on widgets or renderers — sibling fragments keep the stale _theme binding #562's set_theme staleness: lib/ui state that shadows app state.)row_labelsrender atax - 60, scale 1, unconditionally (_render_grid). The gutter width is not configurable, long labels overflow left or clip at the window edge if the grid sits at x < 60, and the labels are outside the widget's own bounds (so any future clipping of the widget rect would erase them). DeslanStudio positions the grid at x=76 to make the hardcoded gutter land inside its panel.Neither blocks the port (workarounds above are in
src/client/drum_view.eigs); filing per the forcing-function rule.