A row part says what it is worth, and the terminal drops by it
Part gains a priority, Option so that "the description did not say" stays
distinct from "the description said Secondary". There is no global default
worth having: Optional would make every part droppable and Essential would make
the ladder inert, and only the role knows which a part meant. Part::worth is
what a renderer reads, and Row::worth is how a call site overrules the role.
quasi-tui drops by it, least valuable first, and only when dropping earns
something. If the run still does not fit with every droppable part gone, the
whole run comes back and the cap cuts it: dropping a badge to make room for a
title that overflows on its own changes nothing a reader can see, since the
badge was past the cut either way.
A control is never dropped whatever it is worth. Focus is claimed per part
before layout, so removing an Act would leave a claim pointing at something
nobody drew.
The kept set is indices into row.parts rather than a filtered vector, so focus
stays keyed to the part it was claimed for. The height pass and the draw pass
compute it the same way at the same width, or a row draws over the one under
it.
quasi-immediate does not drop by worth, and that is a statement about the
renderer rather than a deferral: its parts are a horizontal strip where each
elides itself, so nothing is lost to the run being too tall. What is lost is
whatever sits past the right edge, which is position rather than worth. The
width budget that would fix that is 8311401e.
15 files changed,
+257 insertions,
-75 deletions
| 2367 |
2367 |
|
|
| 2368 |
2368 |
|
[[package]]
|
| 2369 |
2369 |
|
name = "makeover-layout"
|
| 2370 |
|
- |
version = "0.28.1"
|
|
2370 |
+ |
version = "0.28.2"
|
| 2371 |
2371 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 2372 |
|
- |
checksum = "6f8f1e53e2d0f15249d4ba3c59b52df57af38a956488c1c43c1d3d7bbb31d59b"
|
|
2372 |
+ |
checksum = "23a39310f0553033a02c056725a24295519e4d28ecb5597796fbfc7b2aa81dfa"
|
| 2373 |
2373 |
|
|
| 2374 |
2374 |
|
[[package]]
|
| 2375 |
2375 |
|
name = "makeover-touch"
|
| 3100 |
3100 |
|
|
| 3101 |
3101 |
|
[[package]]
|
| 3102 |
3102 |
|
name = "quasi"
|
| 3103 |
|
- |
version = "0.22.0"
|
|
3103 |
+ |
version = "0.23.0"
|
| 3104 |
3104 |
|
|
| 3105 |
3105 |
|
[[package]]
|
| 3106 |
3106 |
|
name = "quasi-axum"
|
| 3107 |
|
- |
version = "0.22.0"
|
|
3107 |
+ |
version = "0.23.0"
|
| 3108 |
3108 |
|
dependencies = [
|
| 3109 |
3109 |
|
"axum",
|
| 3110 |
3110 |
|
"http",
|
| 3118 |
3118 |
|
|
| 3119 |
3119 |
|
[[package]]
|
| 3120 |
3120 |
|
name = "quasi-basics"
|
| 3121 |
|
- |
version = "0.22.0"
|
|
3121 |
+ |
version = "0.23.0"
|
| 3122 |
3122 |
|
dependencies = [
|
| 3123 |
3123 |
|
"makeover-layout",
|
| 3124 |
3124 |
|
"quasi-http",
|
| 3128 |
3128 |
|
|
| 3129 |
3129 |
|
[[package]]
|
| 3130 |
3130 |
|
name = "quasi-bench"
|
| 3131 |
|
- |
version = "0.22.0"
|
|
3131 |
+ |
version = "0.23.0"
|
| 3132 |
3132 |
|
dependencies = [
|
| 3133 |
3133 |
|
"dhat",
|
| 3134 |
3134 |
|
"makeover",
|
| 3143 |
3143 |
|
|
| 3144 |
3144 |
|
[[package]]
|
| 3145 |
3145 |
|
name = "quasi-http"
|
| 3146 |
|
- |
version = "0.22.0"
|
|
3146 |
+ |
version = "0.23.0"
|
| 3147 |
3147 |
|
dependencies = [
|
| 3148 |
3148 |
|
"form_urlencoded",
|
| 3149 |
3149 |
|
"http",
|
| 3152 |
3152 |
|
|
| 3153 |
3153 |
|
[[package]]
|
| 3154 |
3154 |
|
name = "quasi-immediate"
|
| 3155 |
|
- |
version = "0.22.0"
|
|
3155 |
+ |
version = "0.23.0"
|
| 3156 |
3156 |
|
dependencies = [
|
| 3157 |
3157 |
|
"docengine",
|
| 3158 |
3158 |
|
"egui",
|
| 3162 |
3162 |
|
|
| 3163 |
3163 |
|
[[package]]
|
| 3164 |
3164 |
|
name = "quasi-router"
|
| 3165 |
|
- |
version = "0.22.0"
|
|
3165 |
+ |
version = "0.23.0"
|
| 3166 |
3166 |
|
dependencies = [
|
| 3167 |
3167 |
|
"makeover-layout",
|
| 3168 |
3168 |
|
]
|
| 3179 |
3179 |
|
|
| 3180 |
3180 |
|
[[package]]
|
| 3181 |
3181 |
|
name = "quasi-tauri"
|
| 3182 |
|
- |
version = "0.22.0"
|
|
3182 |
+ |
version = "0.23.0"
|
| 3183 |
3183 |
|
dependencies = [
|
| 3184 |
3184 |
|
"http",
|
| 3185 |
3185 |
|
"quasi-http",
|
| 3190 |
3190 |
|
|
| 3191 |
3191 |
|
[[package]]
|
| 3192 |
3192 |
|
name = "quasi-tui"
|
| 3193 |
|
- |
version = "0.22.0"
|
|
3193 |
+ |
version = "0.23.0"
|
| 3194 |
3194 |
|
dependencies = [
|
| 3195 |
3195 |
|
"docengine",
|
| 3196 |
3196 |
|
"makeover",
|
| 3202 |
3202 |
|
|
| 3203 |
3203 |
|
[[package]]
|
| 3204 |
3204 |
|
name = "quasi-webview"
|
| 3205 |
|
- |
version = "0.22.0"
|
|
3205 |
+ |
version = "0.23.0"
|
| 3206 |
3206 |
|
dependencies = [
|
| 3207 |
3207 |
|
"docengine",
|
| 3208 |
3208 |
|
"makeover-layout",
|
| 5632 |
5632 |
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
| 5633 |
5633 |
|
checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b"
|
| 5634 |
5634 |
|
|
|
5635 |
+ |
[[patch.unused]]
|
|
5636 |
+ |
name = "quasi-type"
|
|
5637 |
+ |
version = "0.1.0"
|
|
5638 |
+ |
|
| 5635 |
5639 |
|
[[patch.unused]]
|
| 5636 |
5640 |
|
name = "synckit-client"
|
| 5637 |
5641 |
|
version = "0.8.0"
|
| 5640 |
5644 |
|
name = "synckit-config"
|
| 5641 |
5645 |
|
version = "0.2.0"
|
| 5642 |
5646 |
|
|
| 5643 |
|
- |
[[patch.unused]]
|
| 5644 |
|
- |
name = "quasi-type"
|
| 5645 |
|
- |
version = "0.1.0"
|
| 5646 |
|
- |
|
| 5647 |
5647 |
|
[[patch.unused]]
|
| 5648 |
5648 |
|
name = "kberg"
|
| 5649 |
5649 |
|
version = "0.1.0"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-axum"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
description = "The axum host adapter for quasi-router: an HTTP request in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.22.0" }
|
| 17 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.22.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.23.0" }
|
|
17 |
+ |
quasi-http = { path = "../quasi-http", version = "0.23.0" }
|
| 18 |
18 |
|
axum = "0.8.8"
|
| 19 |
19 |
|
http = "1.3.1"
|
| 20 |
20 |
|
tokio = { version = "1.50.0", features = ["rt"] }
|
| 21 |
21 |
|
|
| 22 |
22 |
|
[dev-dependencies]
|
| 23 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.22.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.23.0" }
|
| 24 |
24 |
|
tokio = { version = "1.50.0", features = ["macros", "rt-multi-thread"] }
|
| 25 |
25 |
|
tower = { version = "0.5.3", features = ["util"] }
|
| 26 |
26 |
|
http-body-util = "0.1.3"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-basics"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
description = "The first-party widget set: named assemblies of primitives, shared across our apps"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.22.0" }
|
| 17 |
|
- |
makeover-layout = "0.28.1"
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.23.0" }
|
|
17 |
+ |
makeover-layout = "0.28.2"
|
| 18 |
18 |
|
|
| 19 |
19 |
|
[dev-dependencies]
|
| 20 |
20 |
|
# A widget's guarantees are claims about what a renderer draws, so they are
|
| 21 |
21 |
|
# tested against a real one rather than by walking the tree the assembly just
|
| 22 |
22 |
|
# built. The webview is the renderer that recognises names today.
|
| 23 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.22.0" }
|
| 24 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.22.0" }
|
|
23 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.23.0" }
|
|
24 |
+ |
quasi-http = { path = "../quasi-http", version = "0.23.0" }
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-bench"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
description = "What a described screen costs to render, in time and in allocations"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 22 |
22 |
|
count = ["dep:dhat"]
|
| 23 |
23 |
|
|
| 24 |
24 |
|
[dependencies]
|
| 25 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.22.0" }
|
| 26 |
|
- |
quasi-webview = { path = "../quasi-webview", version = "0.22.0" }
|
| 27 |
|
- |
quasi-tui = { path = "../quasi-tui", version = "0.22.0" }
|
|
25 |
+ |
quasi-router = { path = "../quasi-router", version = "0.23.0" }
|
|
26 |
+ |
quasi-webview = { path = "../quasi-webview", version = "0.23.0" }
|
|
27 |
+ |
quasi-tui = { path = "../quasi-tui", version = "0.23.0" }
|
| 28 |
28 |
|
# `Serves` is the trait carrying `screen` and `fragment`, which is what the
|
| 29 |
29 |
|
# webview is measured through. Taken directly rather than through quasi-webview
|
| 30 |
30 |
|
# because a bench calling a trait method should name the trait it calls.
|
| 31 |
|
- |
quasi-http = { path = "../quasi-http", version = "0.22.0" }
|
| 32 |
|
- |
makeover-layout = "0.28.1"
|
|
31 |
+ |
quasi-http = { path = "../quasi-http", version = "0.23.0" }
|
|
32 |
+ |
makeover-layout = "0.28.2"
|
| 33 |
33 |
|
makeover-tui = { version = "0.27.0", features = ["theme"] }
|
| 34 |
34 |
|
# Only to load a bundled theme file. `makeover_tui::Theme` is `#[non_exhaustive]`,
|
| 35 |
35 |
|
# so `Theme::from_theme` is the one way to get one, the same reason quasi-tui's
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-http"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
description = "The http-shaped seam quasi's webview host adapters share: decoding in, a rendered description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.22.0" }
|
|
16 |
+ |
quasi-router = { path = "../quasi-router", version = "0.23.0" }
|
| 17 |
17 |
|
http = "1.3.1"
|
| 18 |
18 |
|
form_urlencoded = "1.2.2"
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-immediate"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
edition = "2024"
|
| 5 |
5 |
|
description = "The immediate-mode renderer for quasi-router: a described screen in, an egui frame out. Immediate mode is the constraint that matters, not the library."
|
| 6 |
6 |
|
license = "MIT"
|
| 12 |
12 |
|
categories = ["gui"]
|
| 13 |
13 |
|
|
| 14 |
14 |
|
[dependencies]
|
| 15 |
|
- |
quasi-router = { path = "../quasi-router", version = "0.22.0" }
|
|
15 |
+ |
quasi-router = { path = "../quasi-router", version = "0.23.0" }
|
| 16 |
16 |
|
# The node drawing, which is the makeover layer's and not this crate's. Every
|
| 17 |
17 |
|
# widget here that is not a container comes from it: a screen walk that painted
|
| 18 |
18 |
|
# its own meter would be the divergence the suite exists to end, one copy per
|
| 1 |
1 |
|
[package]
|
| 2 |
2 |
|
name = "quasi-router"
|
| 3 |
|
- |
version = "0.22.0"
|
|
3 |
+ |
version = "0.23.0"
|
| 4 |
4 |
|
description = "Host-agnostic router: a request in, a renderer-agnostic description out"
|
| 5 |
5 |
|
edition.workspace = true
|
| 6 |
6 |
|
rust-version.workspace = true
|
| 13 |
13 |
|
workspace = true
|
| 14 |
14 |
|
|
| 15 |
15 |
|
[dependencies]
|
| 16 |
|
- |
makeover-layout = "0.28.1"
|
|
16 |
+ |
makeover-layout = "0.28.2"
|