aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/ui_compositor.c
diff options
context:
space:
mode:
authorbfredl <bjorn.linse@gmail.com>2022-06-23 12:01:27 +0200
committerGitHub <noreply@github.com>2022-06-23 12:01:27 +0200
commita3ce03bef1d54d67ad5dff4b35691e7f9b31cafa (patch)
tree47e1498a2523e88f0184a6e7958d24cca3a13d93 /src/nvim/ui_compositor.c
parente694e564220acc58b1cb4132ad3c8a0fa02067d9 (diff)
parent9f28eddfab368697c21e6628fdf55af5ec4f4c39 (diff)
downloadrneovim-a3ce03bef1d54d67ad5dff4b35691e7f9b31cafa.tar.gz
rneovim-a3ce03bef1d54d67ad5dff4b35691e7f9b31cafa.tar.bz2
rneovim-a3ce03bef1d54d67ad5dff4b35691e7f9b31cafa.zip
Merge pull request #19020 from echasnovski/screenchar-float
fix(float): make `screen*()` functions respect floating windows
Diffstat (limited to 'src/nvim/ui_compositor.c')
-rw-r--r--src/nvim/ui_compositor.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/nvim/ui_compositor.c b/src/nvim/ui_compositor.c
index 3ce2b80ea9..5df70d0d8e 100644
--- a/src/nvim/ui_compositor.c
+++ b/src/nvim/ui_compositor.c
@@ -300,6 +300,19 @@ ScreenGrid *ui_comp_mouse_focus(int row, int col)
return NULL;
}
+/// Compute which grid is on top at supplied screen coordinates
+ScreenGrid *ui_comp_get_grid_at_coord(int row, int col)
+{
+ for (ssize_t i = (ssize_t)kv_size(layers) - 1; i > 0; i--) {
+ ScreenGrid *grid = kv_A(layers, i);
+ if (row >= grid->comp_row && row < grid->comp_row + grid->rows
+ && col >= grid->comp_col && col < grid->comp_col + grid->cols) {
+ return grid;
+ }
+ }
+ return &default_grid;
+}
+
/// Baseline implementation. This is always correct, but we can sometimes
/// do something more efficient (where efficiency means smaller deltas to
/// the downstream UI.)