Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix key-nav for List/Matrix-View; add examples/times-tables.rs #282

Merged
merged 35 commits into from
Feb 10, 2022
Merged

Conversation

dhardy
Copy link
Collaborator

@dhardy dhardy commented Feb 9, 2022

The List/Matrix View widgets now construct child keys from data entries, thus making navigation targets persistent when a view widget is scrolled.

The make_layout macro now supports align(top), etc. (bottom, left, right, default).

Add WidgetId::iter

New times-tables example for testing MatrixView:
Screenshot_20220209_162651

Initial size of ListView and MatrixView is now determined using data: if any child widgets already exist, use them as-is; otherwise load initial data entries up to ideal-size and use that. The result still isn't perfect, but it's a lot better than without. It isn't obvious how to improve further (other than by loading even more data in advance).

Simplify SizeRules::solve_seq by removing "squashing" behaviour if target < min-required-size; instead use the minimum. In practice we never see this behaviour anyway, but it was messing up width-for-height calculations with view widgets.

Several fixes to MatrixView and a few tweaks to ListView (to keep things consistent).

Also rename nomenclature: WidgetId is a path over keys
This will become impossible to support for generic keys.
ListData: add make_id and reconstruct_key
In practice we never allow sizes below the minimum, but this
was causing issues with width-for-height text-wrapping logic.
Behaviour when min>max differed from the libstd clamp fns.
Uses data from the first few rows/columns to work out ideal
size requirements of cells. Not perfect, but better.
Before this, lag is demonstrable in the times-table example
by setting count = 30, enlarging view (while still not all)
and scrolling to near the right edge.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant