diff options
author | Thiago de Arruda <tpadilha84@gmail.com> | 2015-02-17 17:55:09 -0300 |
---|---|---|
committer | Thiago de Arruda <tpadilha84@gmail.com> | 2015-02-17 23:09:36 -0300 |
commit | 7ea91de054e482644add9f8954a8cbade9fd5b6d (patch) | |
tree | 75baaec6b5908f0c624bd8f4cc710255536b6cd1 | |
parent | 66a03a7385dfd11503d22d8cc9dc6a972e27dcc2 (diff) | |
download | rneovim-7ea91de054e482644add9f8954a8cbade9fd5b6d.tar.gz rneovim-7ea91de054e482644add9f8954a8cbade9fd5b6d.tar.bz2 rneovim-7ea91de054e482644add9f8954a8cbade9fd5b6d.zip |
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.
-rw-r--r-- | src/nvim/tui/tui.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 720970c424..d67e7b8035 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -208,6 +208,12 @@ static bool attrs_differ(HlAttrs a1, HlAttrs a2) static void update_attrs(UI *ui, HlAttrs attrs) { TUIData *data = ui->data; + + if (!attrs_differ(attrs, data->print_attrs)) { + return; + } + + data->print_attrs = attrs; unibi_out(ui, unibi_exit_attribute_mode, NULL); 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) { - TUIData *data = ui->data; - if (attrs_differ(ptr->attrs, data->print_attrs)) { - update_attrs(ui, ptr->attrs); - data->print_attrs = ptr->attrs; - } + update_attrs(ui, ptr->attrs); 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; clear_attrs.foreground = data->fg; clear_attrs.background = data->bg; + update_attrs(ui, clear_attrs); bool cleared = false; if (refresh && data->bg == -1 && right == ui->width -1) { |