Skip to content

Commit 40afbc1

Browse files
committed
Let Neovim determine the mouse grid when composition is supported
1 parent 5ad3878 commit 40afbc1

File tree

1 file changed

+17
-8
lines changed

1 file changed

+17
-8
lines changed

src/window/mouse_manager.rs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ struct DragDetails {
5151
struct EditorState<'a> {
5252
grid_scale: &'a GridScale,
5353
window_regions: &'a Vec<WindowDrawDetails>,
54+
full_region: WindowDrawDetails,
5455
window: &'a Window,
5556
keyboard_manager: &'a KeyboardManager,
5657
}
@@ -104,14 +105,17 @@ impl MouseManager {
104105
editor_state: &'a EditorState<'a>,
105106
) -> Option<&'a WindowDrawDetails> {
106107
let position = self.window_position;
107-
108-
// the rendered window regions are sorted by draw order, so the earlier windows in the
109-
// list are drawn under the later ones
110-
editor_state
111-
.window_regions
112-
.iter()
113-
.filter(|details| details.region.contains(&position))
114-
.last()
108+
if self.use_composition {
109+
Some(&editor_state.full_region)
110+
} else {
111+
// the rendered window regions are sorted by draw order, so the earlier windows in the
112+
// list are drawn under the later ones
113+
editor_state
114+
.window_regions
115+
.iter()
116+
.filter(|details| details.region.contains(&position))
117+
.last()
118+
}
115119
}
116120

117121
fn get_relative_position(
@@ -395,9 +399,14 @@ impl MouseManager {
395399
renderer: &Renderer,
396400
window: &Window,
397401
) {
402+
let full_region = WindowDrawDetails {
403+
id: 0,
404+
region: renderer.window_regions.first().map_or(PixelRect::ZERO, |v| v.region)
405+
};
398406
let editor_state = EditorState {
399407
grid_scale: &renderer.grid_renderer.grid_scale,
400408
window_regions: &renderer.window_regions,
409+
full_region,
401410
window,
402411
keyboard_manager,
403412
};

0 commit comments

Comments
 (0)