From aa792ad3d657853a24faa5a6d5ae09830490087f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 5 Jun 2012 09:56:42 -0400 Subject: [PATCH] Add a focus change signal for wl_pointer and wl_keyboard --- src/wayland-server.c | 4 ++++ src/wayland-server.h | 2 ++ 2 files changed, 6 insertions(+) diff --git a/src/wayland-server.c b/src/wayland-server.c index ec0d0e87..ed9f001a 100644 --- a/src/wayland-server.c +++ b/src/wayland-server.c @@ -565,6 +565,7 @@ wl_pointer_init(struct wl_pointer *pointer) pointer->default_grab.interface = &default_pointer_grab_interface; pointer->default_grab.pointer = pointer; pointer->grab = &pointer->default_grab; + wl_signal_init(&pointer->focus_signal); /* FIXME: Pick better co-ords. */ pointer->x = wl_fixed_from_int(100); @@ -589,6 +590,7 @@ wl_keyboard_init(struct wl_keyboard *keyboard) keyboard->default_grab.interface = &default_keyboard_grab_interface; keyboard->default_grab.keyboard = keyboard; keyboard->grab = &keyboard->default_grab; + wl_signal_init(&keyboard->focus_signal); } WL_EXPORT void @@ -747,6 +749,7 @@ wl_pointer_set_focus(struct wl_pointer *pointer, struct wl_surface *surface, pointer->focus_resource = resource; pointer->focus = surface; pointer->default_grab.focus = surface; + wl_signal_emit(&pointer->focus_signal, pointer); } WL_EXPORT void @@ -778,6 +781,7 @@ wl_keyboard_set_focus(struct wl_keyboard *keyboard, struct wl_surface *surface) keyboard->focus_resource = resource; keyboard->focus = surface; + wl_signal_emit(&keyboard->focus_signal, keyboard); } WL_EXPORT void diff --git a/src/wayland-server.h b/src/wayland-server.h index fc38cd1d..a447c6d7 100644 --- a/src/wayland-server.h +++ b/src/wayland-server.h @@ -247,6 +247,7 @@ struct wl_pointer { struct wl_resource *focus_resource; struct wl_listener focus_listener; uint32_t focus_serial; + struct wl_signal focus_signal; struct wl_pointer_grab *grab; struct wl_pointer_grab default_grab; @@ -270,6 +271,7 @@ struct wl_keyboard { struct wl_resource *focus_resource; struct wl_listener focus_listener; uint32_t focus_serial; + struct wl_signal focus_signal; struct wl_keyboard_grab *grab; struct wl_keyboard_grab default_grab;