mirror of
https://github.com/neovim/neovim.git
synced 2025-10-26 12:27:24 +00:00
fix(tui): make disabling title restore old title from stack
This makes setting 'notitle' in Nvim behave more like Vim in terminals
that support title stacking.
(cherry picked from commit c0bce603d3)
This commit is contained in:
committed by
github-actions[bot]
parent
59e63b455b
commit
3ea6c5e7ba
@@ -106,6 +106,7 @@ struct TUIData {
|
||||
bool bce;
|
||||
bool mouse_enabled;
|
||||
bool mouse_move_enabled;
|
||||
bool title_enabled;
|
||||
bool busy, is_invisible, want_invisible;
|
||||
bool cork, overflow;
|
||||
bool set_cursor_color_as_str;
|
||||
@@ -325,8 +326,6 @@ static void terminfo_start(TUIData *tui)
|
||||
// Enter alternate screen, save title, and clear.
|
||||
// NOTE: Do this *before* changing terminal settings. #6433
|
||||
unibi_out(tui, unibi_enter_ca_mode);
|
||||
// Save title/icon to the "stack". #4063
|
||||
unibi_out_ext(tui, tui->unibi_ext.save_title);
|
||||
unibi_out(tui, unibi_keypad_xmit);
|
||||
unibi_out(tui, unibi_clear_screen);
|
||||
// Ask the terminal to send us the background color.
|
||||
@@ -383,8 +382,7 @@ static void terminfo_stop(TUIData *tui)
|
||||
// Disable extended keys before exiting alternate screen.
|
||||
unibi_out_ext(tui, tui->unibi_ext.disable_extended_keys);
|
||||
unibi_out(tui, unibi_exit_ca_mode);
|
||||
// Restore title/icon from the "stack". #4063
|
||||
unibi_out_ext(tui, tui->unibi_ext.restore_title);
|
||||
tui_set_title(tui, (String)STRING_INIT);
|
||||
if (tui->cursor_color_changed) {
|
||||
unibi_out_ext(tui, tui->unibi_ext.reset_cursor_color);
|
||||
}
|
||||
@@ -1361,13 +1359,24 @@ void tui_suspend(TUIData *tui)
|
||||
|
||||
void tui_set_title(TUIData *tui, String title)
|
||||
{
|
||||
if (!(title.data && unibi_get_str(tui->ut, unibi_to_status_line)
|
||||
if (!(unibi_get_str(tui->ut, unibi_to_status_line)
|
||||
&& unibi_get_str(tui->ut, unibi_from_status_line))) {
|
||||
return;
|
||||
}
|
||||
unibi_out(tui, unibi_to_status_line);
|
||||
out(tui, title.data, title.size);
|
||||
unibi_out(tui, unibi_from_status_line);
|
||||
if (title.size > 0) {
|
||||
if (!tui->title_enabled) {
|
||||
// Save title/icon to the "stack". #4063
|
||||
unibi_out_ext(tui, tui->unibi_ext.save_title);
|
||||
tui->title_enabled = true;
|
||||
}
|
||||
unibi_out(tui, unibi_to_status_line);
|
||||
out(tui, title.data, title.size);
|
||||
unibi_out(tui, unibi_from_status_line);
|
||||
} else if (tui->title_enabled) {
|
||||
// Restore title/icon from the "stack". #4063
|
||||
unibi_out_ext(tui, tui->unibi_ext.restore_title);
|
||||
tui->title_enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
void tui_set_icon(TUIData *tui, String icon)
|
||||
|
||||
Reference in New Issue
Block a user