diff options
-rw-r--r-- | src/nvim/screen.c | 4 | ||||
-rw-r--r-- | src/nvim/window.c | 7 | ||||
-rw-r--r-- | test/functional/ui/float_spec.lua | 43 |
3 files changed, 51 insertions, 3 deletions
diff --git a/src/nvim/screen.c b/src/nvim/screen.c index d14e0c83a6..07cd8549a6 100644 --- a/src/nvim/screen.c +++ b/src/nvim/screen.c @@ -5655,7 +5655,9 @@ static void win_redr_border(win_T *wp) int ic = (i == 0 && !adj[3] && chars[6][0]) ? 6 : 5; grid_put_schar(grid, irow+adj[0], i+adj[3], chars[ic], attrs[ic]); } - grid_put_schar(grid, irow+adj[0], icol+adj[3], chars[4], attrs[4]); + if (adj[1]) { + grid_put_schar(grid, irow+adj[0], icol+adj[3], chars[4], attrs[4]); + } grid_puts_line_flush(false); } } diff --git a/src/nvim/window.c b/src/nvim/window.c index be49d3e574..ff5b39eb84 100644 --- a/src/nvim/window.c +++ b/src/nvim/window.c @@ -723,8 +723,11 @@ void win_config_float(win_T *wp, FloatConfig fconfig) bool has_border = wp->w_floating && wp->w_float_config.border; for (int i = 0; i < 4; i++) { - wp->w_border_adj[i] = - has_border && wp->w_float_config.border_chars[2 * i+1][0]; + int new_adj = has_border && wp->w_float_config.border_chars[2 * i + 1][0]; + if (new_adj != wp->w_border_adj[i]) { + change_border = true; + wp->w_border_adj[i] = new_adj; + } } if (!ui_has(kUIMultigrid)) { diff --git a/test/functional/ui/float_spec.lua b/test/functional/ui/float_spec.lua index 6c2c4b398a..b6d80616b4 100644 --- a/test/functional/ui/float_spec.lua +++ b/test/functional/ui/float_spec.lua @@ -1194,6 +1194,49 @@ describe('float window', function() ]]} end + meths.win_set_config(win, {border={"", "_", "", "", "", "-", "", ""}}) + if multigrid then + screen:expect{grid=[[ + ## grid 1 + [2:----------------------------------------]| + [2:----------------------------------------]| + [2:----------------------------------------]| + [2:----------------------------------------]| + [2:----------------------------------------]| + [2:----------------------------------------]| + [3:----------------------------------------]| + ## grid 2 + ^ | + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + {0:~ }| + ## grid 3 + | + ## grid 5 + {5:_________}| + {1: halloj! }| + {1: BORDAA }| + {5:---------}| + ]], float_pos={ + [5] = { { id = 1002 }, "NW", 1, 2, 5, true } + }, win_viewport={ + [2] = {win = {id = 1000}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 1}; + [5] = {win = {id = 1002}, topline = 0, botline = 2, curline = 0, curcol = 0, linecount = 2}; + }} + else + screen:expect{grid=[[ + ^ | + {0:~ }| + {0:~ }{5:_________}{0: }| + {0:~ }{1: halloj! }{0: }| + {0:~ }{1: BORDAA }{0: }| + {0:~ }{5:---------}{0: }| + | + ]]} + end + insert [[ neeed some dummy background text |