mirror of
https://github.com/neovim/neovim.git
synced 2025-09-28 14:08:32 +00:00
feat(float): allow enabling mouse for non-focusable window (#30844)
Problem: Cannot allow mouse interaction for non-focusable float window. Solution: Add a "mouse" field to float window config.
This commit is contained in:
@@ -119,6 +119,7 @@ typedef struct {
|
||||
Array bufpos;
|
||||
Boolean external;
|
||||
Boolean focusable;
|
||||
Boolean mouse;
|
||||
Boolean vertical;
|
||||
Integer zindex;
|
||||
Object border;
|
||||
|
@@ -102,7 +102,7 @@ void win_pos(Integer grid, Window win, Integer startrow, Integer startcol, Integ
|
||||
Integer height)
|
||||
FUNC_API_SINCE(6) FUNC_API_REMOTE_ONLY;
|
||||
void win_float_pos(Integer grid, Window win, String anchor, Integer anchor_grid, Float anchor_row,
|
||||
Float anchor_col, Boolean focusable, Integer zindex)
|
||||
Float anchor_col, Boolean mouse_enabled, Integer zindex)
|
||||
FUNC_API_SINCE(6) FUNC_API_REMOTE_ONLY;
|
||||
void win_external_pos(Integer grid, Window win)
|
||||
FUNC_API_SINCE(6) FUNC_API_REMOTE_ONLY;
|
||||
|
@@ -129,7 +129,12 @@
|
||||
/// fractional.
|
||||
/// - focusable: Enable focus by user actions (wincmds, mouse events).
|
||||
/// Defaults to true. Non-focusable windows can be entered by
|
||||
/// |nvim_set_current_win()|.
|
||||
/// |nvim_set_current_win()|, or, when the `mouse` field is set to true,
|
||||
/// by mouse events.
|
||||
/// - mouse: Specify how this window interacts with mouse events.
|
||||
/// Defaults to `focusable` value.
|
||||
/// - If false, mouse events pass through this window.
|
||||
/// - If true, mouse events interact with this window normally.
|
||||
/// - external: GUI should display the window as an external
|
||||
/// top-level window. Currently accepts no other positioning
|
||||
/// configuration together with this.
|
||||
@@ -714,6 +719,7 @@ Dict(win_config) nvim_win_get_config(Window window, Arena *arena, Error *err)
|
||||
PUT_KEY_X(rv, focusable, config->focusable);
|
||||
PUT_KEY_X(rv, external, config->external);
|
||||
PUT_KEY_X(rv, hide, config->hide);
|
||||
PUT_KEY_X(rv, mouse, config->mouse);
|
||||
|
||||
if (wp->w_floating) {
|
||||
PUT_KEY_X(rv, width, config->width);
|
||||
@@ -1202,6 +1208,11 @@ static bool parse_win_config(win_T *wp, Dict(win_config) *config, WinConfig *fco
|
||||
|
||||
if (HAS_KEY_X(config, focusable)) {
|
||||
fconfig->focusable = config->focusable;
|
||||
fconfig->mouse = config->focusable;
|
||||
}
|
||||
|
||||
if (HAS_KEY_X(config, mouse)) {
|
||||
fconfig->mouse = config->mouse;
|
||||
}
|
||||
|
||||
if (HAS_KEY_X(config, zindex)) {
|
||||
|
Reference in New Issue
Block a user