mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
tui: Fix background clear for some terminals
Some terminals will perform clearing functions using the current attributes. Ensure the default attributes are set before clearing.
This commit is contained in:
parent
66a03a7385
commit
7ea91de054
@ -208,6 +208,12 @@ static bool attrs_differ(HlAttrs a1, HlAttrs a2)
|
|||||||
static void update_attrs(UI *ui, HlAttrs attrs)
|
static void update_attrs(UI *ui, HlAttrs attrs)
|
||||||
{
|
{
|
||||||
TUIData *data = ui->data;
|
TUIData *data = ui->data;
|
||||||
|
|
||||||
|
if (!attrs_differ(attrs, data->print_attrs)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
data->print_attrs = attrs;
|
||||||
unibi_out(ui, unibi_exit_attribute_mode, NULL);
|
unibi_out(ui, unibi_exit_attribute_mode, NULL);
|
||||||
|
|
||||||
data->params[0].i = attrs.foreground != -1 ? attrs.foreground : data->fg;
|
data->params[0].i = attrs.foreground != -1 ? attrs.foreground : data->fg;
|
||||||
@ -236,11 +242,7 @@ static void update_attrs(UI *ui, HlAttrs attrs)
|
|||||||
|
|
||||||
static void print_cell(UI *ui, Cell *ptr)
|
static void print_cell(UI *ui, Cell *ptr)
|
||||||
{
|
{
|
||||||
TUIData *data = ui->data;
|
update_attrs(ui, ptr->attrs);
|
||||||
if (attrs_differ(ptr->attrs, data->print_attrs)) {
|
|
||||||
update_attrs(ui, ptr->attrs);
|
|
||||||
data->print_attrs = ptr->attrs;
|
|
||||||
}
|
|
||||||
out(ui, ptr->data);
|
out(ui, ptr->data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -251,6 +253,7 @@ static void clear_region(UI *ui, int top, int bot, int left, int right,
|
|||||||
HlAttrs clear_attrs = EMPTY_ATTRS;
|
HlAttrs clear_attrs = EMPTY_ATTRS;
|
||||||
clear_attrs.foreground = data->fg;
|
clear_attrs.foreground = data->fg;
|
||||||
clear_attrs.background = data->bg;
|
clear_attrs.background = data->bg;
|
||||||
|
update_attrs(ui, clear_attrs);
|
||||||
|
|
||||||
bool cleared = false;
|
bool cleared = false;
|
||||||
if (refresh && data->bg == -1 && right == ui->width -1) {
|
if (refresh && data->bg == -1 && right == ui->width -1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user