diff options
Diffstat (limited to 'features.txt')
| -rw-r--r-- | features.txt | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/features.txt b/features.txt index d035648a..fa1c0f6b 100644 --- a/features.txt +++ b/features.txt @@ -173,10 +173,15 @@ renderHeaderLayer the pane and column tags use, as a TagLayer of the new `.notic offset and its border for free -- none of which a body-grid row can have just by wearing a tagline font. The text is right aligned. The prompt stays on the canonical grid because it owns a cursor, which has to sit on a real cell. -The body starts BELOW the bands rather than under them: Pane.body_offset is the number of rows they take, and every painter and hit test derives the body's -first row from Pardes.bodyTop(pane, rect). That replaced fifteen copies of `if (tag_bottom) r.y else r.y + BOX_H` scattered across the paint and pointer paths, -which is what let the bands and the text they sit over come adrift in the first place. renderBodyLayer zeroes the offset around its own render, because it -paints into a surface of its own that carries no bands. +A notice is an OVERLAY, which is the one place it is NOT like the tree-sitter context: it takes no row from the body and moves no text. It is a chip as wide +as its own message plus a blank cell either side, anchored to the pane's right edge on the body's top rows, and the rest of each of those rows is ordinary +body text that still reads and still answers a click -- Notices.left records where each chip starts and the hit test refuses only the cells it covers. The +chip is measured in GRID columns rather than scaled into the tagline face it is drawn in, because the canonical grid is what a terminal client draws and a +chip narrower than its own text there would clip it; the narrower tagline face simply leaves a little more room inside the chip. The tag layer takes the +geometry the grid pass already chose, so the two cannot disagree and the GUI's "skip the cells a tag layer covers" leaves no stub behind. + +Pardes.bodyTop(rect) is now the single answer to "where does the body begin", replacing fifteen copies of `if (tag_bottom) r.y else r.y + BOX_H` scattered +across the paint, hit-test, scroll, PDF and image paths -- which is what let the bands and the text under them come adrift in the first place. Every notice is ALSO painted on the canonical grid, because the grid is what a terminal client draws and a band it cannot see is a message it never gets. The GUI skips grid cells a tag layer covers, so nothing is drawn twice there. |
