Commit 98e62d5
committed
Move displaced output out of the band when a resize shrinks onto it
A terminal that shrinks can leave the command's cursor, and the line it is
writing, on a row the new toolbar band takes. Skipping recovery during a
command kept that cursor where it was, so the band was painted over the
unfinished line and the next write landed inside the toolbar row.
reconfigure() now treats a size change as the transition it is: it resets
to full-screen margins, clears a grown terminal's stale band row, and makes
room for the new band -- indexing at the bottom scrolls the displaced
output up into the usable region and moves the cursor with it, column
intact -- before installing the region. The band is then painted over rows
that hold nothing the command still needs.
The emulated terminal used by these tests gains a shrink that keeps the
cursor's row on screen, as xterm and VTE do; pyte's own clips inside the
scroll margins and drops that row, which is not what a real terminal
shows. The regression test writes past the point the new band will take,
resizes, and checks the line, its cursor column, the toolbar row and the
absence of output in the band.
Validation: 2605 passed, 6 skipped with coverage, twice; the reserved
modules at 100% line coverage; removing the room-making step fails the
new test. Harness acceptance and dynamic gates PASS at 12, 24 and 40 rows,
23/23 observer controls. make check, make test and make docs-test passed.1 parent 974290b commit 98e62d5
4 files changed
Lines changed: 67 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
16 | 18 | | |
17 | 19 | | |
18 | 20 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
465 | 465 | | |
466 | 466 | | |
467 | 467 | | |
468 | | - | |
469 | | - | |
470 | | - | |
471 | | - | |
472 | | - | |
473 | | - | |
474 | | - | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
475 | 485 | | |
476 | 486 | | |
477 | 487 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
37 | 54 | | |
38 | 55 | | |
39 | 56 | | |
| |||
336 | 353 | | |
337 | 354 | | |
338 | 355 | | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
339 | 382 | | |
340 | 383 | | |
341 | 384 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
298 | 298 | | |
299 | 299 | | |
300 | 300 | | |
301 | | - | |
302 | | - | |
303 | | - | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
304 | 305 | | |
305 | 306 | | |
306 | 307 | | |
| |||
0 commit comments