fix(tui): reset active attr ID when OSC 8 sequence is terminated (#29960)

When the cursor is moved we terminate any active OSC 8 sequences to
prevent the sequence from inadvertently spanning regions it is not meant
to span. However, if we do not also reset the TUI's active attr id
(print_attr_id) then the TUI does not "know" that it's current attribute
set has changed. When cursor_goto is called to wrap a line, the TUI does
not recompute the attributes so the OSC 8 sequence is not restarted
again.

When we terminate an OSC 8 sequence before moving the cursor, also reset
the active attr id so that the attributes are recomputed for URLs.

(cherry picked from commit f32557ca67)
This commit is contained in:
Gregory Anders
2024-08-02 13:00:04 -05:00
committed by Christian Clason
parent dd0f6afa00
commit ee57bb5a8e

View File

@ -876,6 +876,7 @@ static void cursor_goto(TUIData *tui, int row, int col)
if (tui->url >= 0) {
out(tui, S_LEN("\x1b]8;;\x1b\\"));
tui->url = -1;
tui->print_attr_id = -1;
}
if (0 == row && 0 == col) {