IME: support multiple IME popups

We didn't support multiple IME popups since input-method-v2 protocol
has no way to position them individually, but we should support it to
provide IME developers with more programming flexibility.
This commit is contained in:
tokyo4j 2024-05-16 14:57:31 +09:00 committed by Hiroaki Yamamoto
parent 1c334cc918
commit 2f1fcb4468
2 changed files with 55 additions and 48 deletions

View file

@ -29,7 +29,7 @@ struct input_method_relay {
*/
struct text_input *active_text_input;
struct wlr_input_popup_surface_v2 *popup_surface;
struct wl_list popups; /* input_method_popup.link */
struct wlr_scene_tree *popup_tree;
struct wl_listener new_text_input;
@ -40,13 +40,20 @@ struct input_method_relay {
struct wl_listener input_method_destroy;
struct wl_listener input_method_new_popup_surface;
struct wl_listener popup_surface_destroy;
struct wl_listener popup_surface_commit;
struct wl_listener keyboard_grab_destroy;
struct wl_listener focused_surface_destroy;
};
struct input_method_popup {
struct wlr_input_popup_surface_v2 *popup_surface;
struct wlr_scene_tree *tree;
struct input_method_relay *relay;
struct wl_list link; /* input_method_relay.popups */
struct wl_listener destroy;
struct wl_listener commit;
};
struct text_input {
struct input_method_relay *relay;
struct wlr_text_input_v3 *input;