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);