Add a focus change signal for wl_pointer and wl_keyboard
authorKristian Høgsberg <krh@bitplanet.net>
Tue, 5 Jun 2012 13:56:42 +0000 (09:56 -0400)
committerKristian Høgsberg <krh@bitplanet.net>
Tue, 5 Jun 2012 13:56:42 +0000 (09:56 -0400)
src/wayland-server.c
src/wayland-server.h

index ec0d0e8..ed9f001 100644 (file)
@@ -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
index fc38cd1..a447c6d 100644 (file)
@@ -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;