summaryrefslogtreecommitdiff
path: root/clients/keyboard.c
diff options
context:
space:
mode:
authorJan Arne Petersen <jpetersen@openismus.com>2013-04-18 16:47:29 +0200
committerKristian Høgsberg <krh@bitplanet.net>2013-05-02 16:41:47 -0400
commit7cd29e199ac3fca57c84be021c36f9019cfa7b92 (patch)
treeb163ebe4da5d819cd44be6903ba0b8acf127d28a /clients/keyboard.c
parent14da96bf81b5fdf720698b633de2a742c4f644dd (diff)
downloadweston-7cd29e199ac3fca57c84be021c36f9019cfa7b92.tar.gz
text: Add output argument to set_toplevel
Allow to specify an output for a toplevel input panel surface. Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
Diffstat (limited to 'clients/keyboard.c')
-rw-r--r--clients/keyboard.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/clients/keyboard.c b/clients/keyboard.c
index 2f28a8f1..17fb6837 100644
--- a/clients/keyboard.c
+++ b/clients/keyboard.c
@@ -39,6 +39,7 @@ struct virtual_keyboard {
struct input_method *input_method;
struct input_method_context *context;
struct display *display;
+ struct output *output;
char *preedit_string;
uint32_t preedit_style;
struct {
@@ -768,7 +769,7 @@ keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard
struct keyboard *keyboard;
const struct layout *layout;
struct input_panel_surface *ips;
-
+
layout = get_current_layout(virtual_keyboard);
keyboard = malloc(sizeof *keyboard);
@@ -795,27 +796,18 @@ keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard
ips = input_panel_get_input_panel_surface(virtual_keyboard->input_panel,
window_get_wl_surface(keyboard->window));
- input_panel_surface_set_toplevel(ips, INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM);
-}
-
-static void
-handle_output_configure(struct output *output, void *data)
-{
- struct virtual_keyboard *virtual_keyboard = data;
+ input_panel_surface_set_toplevel(ips,
+ output_get_wl_output(output),
+ INPUT_PANEL_SURFACE_POSITION_CENTER_BOTTOM);
- /* skip existing outputs */
- if (output_get_user_data(output))
- return;
-
- output_set_user_data(output, virtual_keyboard);
-
- keyboard_create(output, virtual_keyboard);
+ fprintf(stderr, "%s, %p\n", __FUNCTION__, output_get_wl_output(output));
}
int
main(int argc, char *argv[])
{
struct virtual_keyboard virtual_keyboard;
+ struct output *output;
memset(&virtual_keyboard, 0, sizeof virtual_keyboard);
@@ -827,7 +819,9 @@ main(int argc, char *argv[])
display_set_user_data(virtual_keyboard.display, &virtual_keyboard);
display_set_global_handler(virtual_keyboard.display, global_handler);
- display_set_output_configure_handler(virtual_keyboard.display, handle_output_configure);
+
+ output = display_get_output(virtual_keyboard.display);
+ keyboard_create(output, &virtual_keyboard);
display_run(virtual_keyboard.display);