summaryrefslogtreecommitdiff
path: root/ivi-shell/ivi-layout-shell.h
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2023-02-02 09:36:28 +0100
committerMichael Olbrich <m.olbrich@pengutronix.de>2023-03-14 10:40:04 +0100
commit5d68a6c4b5c6e1a753d4bf055f341131d6b26e35 (patch)
treec5ca30714ffcde88846272a8206e79cdc80a9e75 /ivi-shell/ivi-layout-shell.h
parentad2c014ef37e7fc918d584d2ac3ef747ccaa2ce8 (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.h27
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);