Add a focus change signal for wl_pointer and wl_keyboard

This commit is contained in:
Kristian Høgsberg 2012-06-05 09:56:42 -04:00
parent 3fd1e128e9
commit aa792ad3d6
2 changed files with 6 additions and 0 deletions

View file

@ -565,6 +565,7 @@ wl_pointer_init(struct wl_pointer *pointer)
pointer->default_grab.interface = &default_pointer_grab_interface; pointer->default_grab.interface = &default_pointer_grab_interface;
pointer->default_grab.pointer = pointer; pointer->default_grab.pointer = pointer;
pointer->grab = &pointer->default_grab; pointer->grab = &pointer->default_grab;
wl_signal_init(&pointer->focus_signal);
/* FIXME: Pick better co-ords. */ /* FIXME: Pick better co-ords. */
pointer->x = wl_fixed_from_int(100); 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.interface = &default_keyboard_grab_interface;
keyboard->default_grab.keyboard = keyboard; keyboard->default_grab.keyboard = keyboard;
keyboard->grab = &keyboard->default_grab; keyboard->grab = &keyboard->default_grab;
wl_signal_init(&keyboard->focus_signal);
} }
WL_EXPORT void 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_resource = resource;
pointer->focus = surface; pointer->focus = surface;
pointer->default_grab.focus = surface; pointer->default_grab.focus = surface;
wl_signal_emit(&pointer->focus_signal, pointer);
} }
WL_EXPORT void 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_resource = resource;
keyboard->focus = surface; keyboard->focus = surface;
wl_signal_emit(&keyboard->focus_signal, keyboard);
} }
WL_EXPORT void WL_EXPORT void

View file

@ -247,6 +247,7 @@ struct wl_pointer {
struct wl_resource *focus_resource; struct wl_resource *focus_resource;
struct wl_listener focus_listener; struct wl_listener focus_listener;
uint32_t focus_serial; uint32_t focus_serial;
struct wl_signal focus_signal;
struct wl_pointer_grab *grab; struct wl_pointer_grab *grab;
struct wl_pointer_grab default_grab; struct wl_pointer_grab default_grab;
@ -270,6 +271,7 @@ struct wl_keyboard {
struct wl_resource *focus_resource; struct wl_resource *focus_resource;
struct wl_listener focus_listener; struct wl_listener focus_listener;
uint32_t focus_serial; uint32_t focus_serial;
struct wl_signal focus_signal;
struct wl_keyboard_grab *grab; struct wl_keyboard_grab *grab;
struct wl_keyboard_grab default_grab; struct wl_keyboard_grab default_grab;