mirror of
https://github.com/neovim/neovim.git
synced 2025-09-06 03:18:16 +00:00
fix(tui): make disabling title restore old title from stack (#23585)
This makes setting 'notitle' in Nvim behave more like Vim in terminals that support title stacking.
This commit is contained in:
@@ -106,6 +106,7 @@ struct TUIData {
|
|||||||
bool bce;
|
bool bce;
|
||||||
bool mouse_enabled;
|
bool mouse_enabled;
|
||||||
bool mouse_move_enabled;
|
bool mouse_move_enabled;
|
||||||
|
bool title_enabled;
|
||||||
bool busy, is_invisible, want_invisible;
|
bool busy, is_invisible, want_invisible;
|
||||||
bool cork, overflow;
|
bool cork, overflow;
|
||||||
bool set_cursor_color_as_str;
|
bool set_cursor_color_as_str;
|
||||||
@@ -325,8 +326,6 @@ static void terminfo_start(TUIData *tui)
|
|||||||
// Enter alternate screen, save title, and clear.
|
// Enter alternate screen, save title, and clear.
|
||||||
// NOTE: Do this *before* changing terminal settings. #6433
|
// NOTE: Do this *before* changing terminal settings. #6433
|
||||||
unibi_out(tui, unibi_enter_ca_mode);
|
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_keypad_xmit);
|
||||||
unibi_out(tui, unibi_clear_screen);
|
unibi_out(tui, unibi_clear_screen);
|
||||||
// Ask the terminal to send us the background color.
|
// 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.
|
// Disable extended keys before exiting alternate screen.
|
||||||
unibi_out_ext(tui, tui->unibi_ext.disable_extended_keys);
|
unibi_out_ext(tui, tui->unibi_ext.disable_extended_keys);
|
||||||
unibi_out(tui, unibi_exit_ca_mode);
|
unibi_out(tui, unibi_exit_ca_mode);
|
||||||
// Restore title/icon from the "stack". #4063
|
tui_set_title(tui, (String)STRING_INIT);
|
||||||
unibi_out_ext(tui, tui->unibi_ext.restore_title);
|
|
||||||
if (tui->cursor_color_changed) {
|
if (tui->cursor_color_changed) {
|
||||||
unibi_out_ext(tui, tui->unibi_ext.reset_cursor_color);
|
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)
|
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))) {
|
&& unibi_get_str(tui->ut, unibi_from_status_line))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
unibi_out(tui, unibi_to_status_line);
|
if (title.size > 0) {
|
||||||
out(tui, title.data, title.size);
|
if (!tui->title_enabled) {
|
||||||
unibi_out(tui, unibi_from_status_line);
|
// 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)
|
void tui_set_icon(TUIData *tui, String icon)
|
||||||
|
Reference in New Issue
Block a user