diff options
author | Björn Linse <bjorn.linse@gmail.com> | 2021-03-25 09:42:26 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-25 09:42:26 +0100 |
commit | 095f5da79cb8f108b67824039952c6b225cb3dac (patch) | |
tree | 71ac44607a08e59f8b41e4b837032838e3970149 /src | |
parent | 9481310c264fd9943148f5b82f799badad8730c5 (diff) | |
parent | 3000f6c56b8adeb1ce4b447c04221076112ec351 (diff) | |
download | rneovim-095f5da79cb8f108b67824039952c6b225cb3dac.tar.gz rneovim-095f5da79cb8f108b67824039952c6b225cb3dac.tar.bz2 rneovim-095f5da79cb8f108b67824039952c6b225cb3dac.zip |
Merge pull request #14210 from bfredl/bordaa2
floats: handle interaction with popupmenu and border correctly
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/popupmnu.c | 4 | ||||
-rw-r--r-- | src/nvim/ui_compositor.c | 15 |
2 files changed, 11 insertions, 8 deletions
diff --git a/src/nvim/popupmnu.c b/src/nvim/popupmnu.c index 69c614fff9..68abf57413 100644 --- a/src/nvim/popupmnu.c +++ b/src/nvim/popupmnu.c @@ -140,7 +140,9 @@ void pum_display(pumitem_T *array, int size, int selected, bool array_changed, } pum_anchor_grid = (int)curwin->w_grid.target->handle; - if (!ui_has(kUIMultigrid)) { + pum_win_row += curwin->w_grid.row_offset; + cursor_col += curwin->w_grid.col_offset; + if (!ui_has(kUIMultigrid) && curwin->w_grid.target != &default_grid) { pum_anchor_grid = (int)default_grid.handle; pum_win_row += curwin->w_winrow; cursor_col += curwin->w_wincol; diff --git a/src/nvim/ui_compositor.c b/src/nvim/ui_compositor.c index 946215d957..a2e9266fbb 100644 --- a/src/nvim/ui_compositor.c +++ b/src/nvim/ui_compositor.c @@ -184,14 +184,12 @@ bool ui_comp_put_grid(ScreenGrid *grid, int row, int col, int height, int width, insert_at--; } // not found: new grid - kv_push(layers, grid); - if (insert_at < kv_size(layers)-1) { - for (size_t i = kv_size(layers)-1; i > insert_at; i--) { - kv_A(layers, i) = kv_A(layers, i-1); - kv_A(layers, i)->comp_index = i; - } - kv_A(layers, insert_at) = grid; + kv_pushp(layers); + for (size_t i = kv_size(layers)-1; i > insert_at; i--) { + kv_A(layers, i) = kv_A(layers, i-1); + kv_A(layers, i)->comp_index = i; } + kv_A(layers, insert_at) = grid; grid->comp_row = row; grid->comp_col = col; @@ -280,6 +278,9 @@ static void ui_comp_grid_cursor_goto(UI *ui, Integer grid_handle, // should configure all grids before entering win_update() if (curgrid != &default_grid) { size_t new_index = kv_size(layers)-1; + if (kv_A(layers, new_index) == &msg_grid) { + new_index--; + } if (kv_A(layers, new_index) == &pum_grid) { new_index--; } |