commit f2138d7

Michael Forney  ·  2013-11-20 02:42:54 +0000 UTC
parent 4151e5a
Implement window enter events
3 files changed,  +24, -0
+2, -0
1@@ -38,6 +38,8 @@ const struct swc_manager * swc_manager;
2 static void setup_compositor()
3 {
4     swc.compositor.seat.keyboard.handler = swc_binding_handler;
5+    wl_signal_add(&swc.compositor.seat.pointer.focus.event_signal,
6+                  swc_window_enter_listener);
7 }
8 
9 bool swc_initialize(struct wl_display * display,
+20, -0
 1@@ -31,6 +31,26 @@
 2 #include <stdlib.h>
 3 #include <string.h>
 4 
 5+static void handle_window_enter(struct wl_listener * listener, void * data)
 6+{
 7+    struct swc_event * event = data;
 8+    struct swc_input_focus_event_data * event_data = event->data;
 9+    struct swc_window * window;
10+
11+    if (event->type != SWC_INPUT_FOCUS_EVENT_CHANGED)
12+        return;
13+
14+    if (!event_data->new || !(window = swc_window_get(event_data->new)))
15+        return;
16+
17+    swc_send_event(&window->event_signal, SWC_WINDOW_ENTERED, NULL);
18+}
19+
20+static struct wl_listener window_enter_listener = {
21+    .notify = &handle_window_enter
22+};
23+struct wl_listener * swc_window_enter_listener = &window_enter_listener;
24+
25 void swc_window_show(struct swc_window * window)
26 {
27     swc_compositor_surface_show(INTERNAL(window)->surface);
+2, -0
1@@ -43,6 +43,8 @@ struct swc_window_internal
2     const struct swc_window_impl * impl;
3 };
4 
5+extern struct wl_listener * swc_window_enter_listener;
6+
7 bool swc_window_initialize(struct swc_window * window,
8                            const struct swc_window_impl * impl,
9                            struct swc_surface * surface);