diff options
author | Zephyr Lykos <[email protected]> | 2024-08-14 04:39:55 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2024-08-14 00:39:55 -0400 |
commit | 19f76f3dcd0dfb19826c6f5ea55a0d6c37e2bcd8 (patch) | |
tree | 5d0ddf468570562be56d92a945584e0032ce8820 /include | |
parent | c861623887ca88fdbf4752a3623f4b5b146b1995 (diff) |
text_input: Implement input-method popups (#315)
Diffstat (limited to 'include')
-rw-r--r-- | include/sway/input/text_input.h | 25 | ||||
-rw-r--r-- | include/sway/output.h | 4 |
2 files changed, 29 insertions, 0 deletions
diff --git a/include/sway/input/text_input.h b/include/sway/input/text_input.h index 214e61d1..f583af7a 100644 --- a/include/sway/input/text_input.h +++ b/include/sway/input/text_input.h @@ -4,6 +4,7 @@ #include <wlr/types/wlr_text_input_v3.h> #include <wlr/types/wlr_input_method_v2.h> #include <wlr/types/wlr_compositor.h> +#include <wlr/types/wlr_fractional_scale_v1.h> /** * The relay structure manages the relationship between text-input and @@ -21,18 +22,37 @@ struct sway_input_method_relay { struct sway_seat *seat; struct wl_list text_inputs; // sway_text_input::link + struct wl_list input_popups; // sway_input_popup::link struct wlr_input_method_v2 *input_method; // doesn't have to be present struct wl_listener text_input_new; struct wl_listener input_method_new; struct wl_listener input_method_commit; + struct wl_listener input_method_new_popup_surface; struct wl_listener input_method_grab_keyboard; struct wl_listener input_method_destroy; struct wl_listener input_method_keyboard_grab_destroy; }; +struct sway_input_popup { + struct sway_input_method_relay *relay; + struct wlr_input_popup_surface_v2 *popup_surface; + + int x, y; + bool visible; + + struct wl_list link; + + struct wl_listener popup_map; + struct wl_listener popup_unmap; + struct wl_listener popup_destroy; + struct wl_listener popup_surface_commit; + + struct wl_listener focused_surface_unmap; +}; + struct sway_text_input { struct sway_input_method_relay *relay; @@ -65,4 +85,9 @@ struct sway_text_input *sway_text_input_create( struct sway_input_method_relay *relay, struct wlr_text_input_v3 *text_input); +bool sway_input_popup_get_position( + struct sway_input_popup *popup, int *lx, int *ly); + +void sway_input_popup_damage(struct sway_input_popup *popup); + #endif diff --git a/include/sway/output.h b/include/sway/output.h index a60ddec8..0e9e27c9 100644 --- a/include/sway/output.h +++ b/include/sway/output.h @@ -178,6 +178,10 @@ void output_unmanaged_for_each_surface(struct sway_output *output, void *user_data); #endif +void output_input_popups_for_each_surface(struct sway_output *output, + struct wl_list *input_popups, sway_surface_iterator_func_t iterator, + void *user_data); + void output_drag_icons_for_each_surface(struct sway_output *output, struct wl_list *drag_icons, sway_surface_iterator_func_t iterator, void *user_data); |