aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-07 20:19:41 +0200
committerblasty <blasty@local>2026-08-07 20:19:41 +0200
commit2a37022b3ae92f8853b2e4a014868fcdc3eeeb79 (patch)
treef1902f8af4fc254f6fe491d2f180a3bb6774662c /docs
parentSyntax-highlight the struct editor's C definitions (diff)
downloadida-tui-2a37022b3ae92f8853b2e4a014868fcdc3eeeb79.tar.gz
ida-tui-2a37022b3ae92f8853b2e4a014868fcdc3eeeb79.tar.xz
ida-tui-2a37022b3ae92f8853b2e4a014868fcdc3eeeb79.zip
Modal chrome: thin round borders, titles in the border
Diffstat (limited to 'docs')
-rw-r--r--docs/TEXTUAL_NOTES.md14
1 files changed, 14 insertions, 0 deletions
diff --git a/docs/TEXTUAL_NOTES.md b/docs/TEXTUAL_NOTES.md
index 9970416..83d385c 100644
--- a/docs/TEXTUAL_NOTES.md
+++ b/docs/TEXTUAL_NOTES.md
@@ -53,6 +53,20 @@ Hard-won Textual behaviour and the patterns this app relies on. Pairs with
`build_byte_to_codepoint_dict`, so character offsets smear on non-ASCII), and
a `TextAreaTheme` that sets `base_style` overrides the widget's CSS colours —
ours sets only `syntax_styles` so the editor keeps the app's background.
+- **Modal chrome lives in ONE grouped CSS rule** (`#quit-box, #help-box, …` in
+ `IdaTui.CSS`): `border: round`, title colour, subtitle colour. Per-box rules
+ carry only size. Dialog titles are `border_title`/`border_subtitle` on the box,
+ not a docked `Static` — but **`border_title` parses Textual markup** when you
+ give it a `str` (`render_str`), so a title like `symbols [this binary]: 128`
+ loses or breaks on the `[…]`. Pass a `rich.text.Text` and it's taken literally.
+ Also note it keeps only the FIRST line of a multi-line title.
+- **Widgets inside a dialog bring their own frames.** `OptionList` defaults to
+ `border: tall $border-blurred` + `background: $surface`, which inside a bordered
+ dialog reads as a second panel; the modal rule clears both so the dialog has one
+ edge. Focus still reads from the highlight bar (bright focused / dim blurred).
+- **Look at chrome with `experiments/modal_shot.py`** (no IDA, no worker, any
+ python3 with textual): it renders each dialog over a fake background at a size
+ you choose. A tiled pane is the worst possible place to judge a dialog.
- **A modal's `Input` messages bubble to the App.** `SymbolPalette` (the Ctrl+N
fuzzy finder) has its own `Input`; its `Input.Changed`/`Input.Submitted` bubble
up to the app's handlers (which would run the `#search`/`#func-filter` logic and