summaryrefslogtreecommitdiff
path: root/include
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
parentc861623887ca88fdbf4752a3623f4b5b146b1995 (diff)
text_input: Implement input-method popups (#315)
Diffstat (limited to 'include')
-rw-r--r--include/sway/input/text_input.h25
-rw-r--r--include/sway/output.h4
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);