summaryrefslogtreecommitdiff
path: root/include/sway/input/text_input.h
diff options
context:
space:
mode:
authorZephyr Lykos <[email protected]>2024-08-14 04:39:55 +0000
committerGitHub <[email protected]>2024-08-14 00:39:55 -0400
commit19f76f3dcd0dfb19826c6f5ea55a0d6c37e2bcd8 (patch)
tree5d0ddf468570562be56d92a945584e0032ce8820 /include/sway/input/text_input.h
parentc861623887ca88fdbf4752a3623f4b5b146b1995 (diff)
text_input: Implement input-method popups (#315)
Diffstat (limited to 'include/sway/input/text_input.h')
-rw-r--r--include/sway/input/text_input.h25
1 files changed, 25 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