mirror of
https://github.com/neovim/neovim.git
synced 2024-09-17 20:58:20 -04:00
fix(float): make bufpos work properly with resized parent grid
This commit is contained in:
parent
26cc946226
commit
03e8b5fc91
@ -966,18 +966,18 @@ void textpos2screenpos(win_T *wp, pos_T *pos, int *rowp, int *scolp, int *ccolp,
|
||||
// similar to what is done in validate_cursor_col()
|
||||
colnr_T col = scol;
|
||||
col += off;
|
||||
int width = wp->w_width - off + win_col_off2(wp);
|
||||
int width = wp->w_width_inner - off + win_col_off2(wp);
|
||||
|
||||
// long line wrapping, adjust row
|
||||
if (wp->w_p_wrap && col >= (colnr_T)wp->w_width && width > 0) {
|
||||
if (wp->w_p_wrap && col >= (colnr_T)wp->w_width_inner && width > 0) {
|
||||
// use same formula as what is used in curs_columns()
|
||||
rowoff = visible_row ? ((col - wp->w_width) / width + 1) : 0;
|
||||
rowoff = visible_row ? ((col - wp->w_width_inner) / width + 1) : 0;
|
||||
col -= rowoff * width;
|
||||
}
|
||||
|
||||
col -= wp->w_leftcol;
|
||||
|
||||
if (col >= 0 && col < wp->w_width && row + rowoff <= wp->w_height) {
|
||||
if (col >= 0 && col < wp->w_width_inner && row + rowoff <= wp->w_height_inner) {
|
||||
coloff = col - scol + (local ? 0 : wp->w_wincol + wp->w_wincol_off) + 1;
|
||||
row += local ? 0 : wp->w_winrow + wp->w_winrow_off;
|
||||
} else {
|
||||
|
@ -37,6 +37,8 @@ describe('ext_multigrid', function()
|
||||
[18] = {bold = true, foreground = Screen.colors.Magenta},
|
||||
[19] = {foreground = Screen.colors.Brown},
|
||||
[20] = {background = Screen.colors.LightGrey},
|
||||
[21] = {background = Screen.colors.LightMagenta},
|
||||
[22] = {background = Screen.colors.LightMagenta, bold = true, foreground = Screen.colors.Blue},
|
||||
})
|
||||
end)
|
||||
|
||||
@ -1060,6 +1062,107 @@ describe('ext_multigrid', function()
|
||||
|
|
||||
]]}
|
||||
end)
|
||||
|
||||
it('anchored float window "bufpos"', function()
|
||||
insert(('c'):rep(1111))
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccc^c |
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
]]}
|
||||
local float_buf = meths.create_buf(false, false)
|
||||
meths.open_win(float_buf, false, {
|
||||
relative = 'win',
|
||||
win = curwin(),
|
||||
bufpos = {0, 1018},
|
||||
anchor = 'SE',
|
||||
width = 5,
|
||||
height = 5,
|
||||
})
|
||||
screen:expect{grid=[[
|
||||
## grid 1
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
[2:-----------------------------------------------------]|
|
||||
{11:[No Name] [+] }|
|
||||
[3:-----------------------------------------------------]|
|
||||
## grid 2
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc|
|
||||
cccccccccccccccccccccccccccccc^c |
|
||||
{1:~ }|
|
||||
## grid 3
|
||||
|
|
||||
## grid 4
|
||||
{21: }|
|
||||
{22:~ }|
|
||||
{22:~ }|
|
||||
{22:~ }|
|
||||
{22:~ }|
|
||||
]], float_pos={
|
||||
[4] = {{id = 1001}, "SE", 2, 16, 58, true, 50};
|
||||
}}
|
||||
end)
|
||||
end)
|
||||
|
||||
it('multiline messages scroll over windows', function()
|
||||
|
Loading…
Reference in New Issue
Block a user