diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2023-02-02 09:36:28 +0100 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2023-03-14 10:40:04 +0100 |
commit | 5d68a6c4b5c6e1a753d4bf055f341131d6b26e35 (patch) | |
tree | c5ca30714ffcde88846272a8206e79cdc80a9e75 /ivi-shell/ivi-layout-shell.h | |
parent | ad2c014ef37e7fc918d584d2ac3ef747ccaa2ce8 (diff) |
ivi-shell: add input panel support
Input panels are used for complex text composition for CJK alphabets and for
onscreen keyboards. Support for this is already implemented in libweston and
the desktop shell.
This adds extends the IVI shell to add support for input panels as well. The
low-level parts are implemented in the IVI shell. The positioning of the input
panels is delegated to the controller.
Support for input panels and the relevant protocols is only enabled if the
controller attaches a listener to the new signals.
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'ivi-shell/ivi-layout-shell.h')
-rw-r--r-- | ivi-shell/ivi-layout-shell.h | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/ivi-shell/ivi-layout-shell.h b/ivi-shell/ivi-layout-shell.h index ee275162..83762fc0 100644 --- a/ivi-shell/ivi-layout-shell.h +++ b/ivi-shell/ivi-layout-shell.h @@ -27,6 +27,8 @@ #define IVI_LAYOUT_SHELL_H #include <stdint.h> +#include <stdbool.h> +#include <pixman.h> /* * This is the interface that ivi-layout exposes to ivi-shell. @@ -38,6 +40,7 @@ struct weston_compositor; struct weston_view; struct weston_surface; struct ivi_layout_surface; +struct ivi_shell; void ivi_layout_desktop_surface_configure(struct ivi_layout_surface *ivisurf, @@ -48,6 +51,28 @@ ivi_layout_desktop_surface_create(struct weston_surface *wl_surface, struct weston_desktop_surface *surface); void +ivi_layout_input_panel_surface_configure(struct ivi_layout_surface *ivisurf, + int32_t width, int32_t height); + +void +ivi_layout_update_text_input_cursor(pixman_box32_t *cursor_rectangle); + +void +ivi_layout_show_input_panel(struct ivi_layout_surface *ivisurf, + struct ivi_layout_surface *target_ivisurf, + bool overlay_panel); + +void +ivi_layout_hide_input_panel(struct ivi_layout_surface *ivisurf); + +void +ivi_layout_update_input_panel(struct ivi_layout_surface *ivisurf, + bool overlay_panel); + +struct ivi_layout_surface* +ivi_layout_input_panel_surface_create(struct weston_surface *wl_surface); + +void ivi_layout_surface_configure(struct ivi_layout_surface *ivisurf, int32_t width, int32_t height); @@ -56,7 +81,7 @@ ivi_layout_surface_create(struct weston_surface *wl_surface, uint32_t id_surface); void -ivi_layout_init_with_compositor(struct weston_compositor *ec); +ivi_layout_init(struct weston_compositor *ec, struct ivi_shell *shell); void ivi_layout_fini(void); |