]> git.lizzy.rs Git - bspwm.git/blob - events.c
EWMH status embryo
[bspwm.git] / events.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <xcb/xcb.h>
4 #include <xcb/xcb_event.h>
5 #include "helpers.h"
6 #include "types.h"
7 #include "bspwm.h"
8 #include "utils.h"
9 #include "events.h"
10
11 void handle_event(xcb_generic_event_t *evt)
12 {
13     switch (XCB_EVENT_RESPONSE_TYPE(evt)) {
14         case XCB_MAP_REQUEST:
15             PUTS("received a map request\n");
16             map_request(evt);
17             break;
18         case XCB_CONFIGURE_REQUEST:
19             PUTS("received a configure request\n");
20             break;
21         case XCB_UNGRAB_KEY:
22             /* PUTS("ungrab key received"); */
23             break;
24         case XCB_KEY_PRESS:
25             PUTS("keypress received");
26             break;
27         case XCB_KEY_RELEASE:
28             PUTS("keyrelease received");
29             break;
30         case XCB_BUTTON_PRESS:
31         case XCB_BUTTON_RELEASE:
32             PUTS("button event");
33             break;
34         default:
35             PRINTF("received event %i\n", XCB_EVENT_RESPONSE_TYPE(evt));
36     }
37 }
38
39 void map_request(xcb_generic_event_t *evt)
40 {
41     xcb_map_request_event_t *e = (xcb_map_request_event_t *) evt;
42     xcb_get_window_attributes_reply_t  *wa;
43     xcb_window_t win = e->window;
44     wa = xcb_get_window_attributes_reply(dpy, xcb_get_window_attributes(dpy, win), NULL);
45     if ((wa != NULL && wa->override_redirect) || win_to_node(win) != NULL)
46         return;
47     free(wa);
48     client_t *c = make_client();
49     c->window = win;
50     num_clients++;
51     node_t *focus = desk->focus;
52     if (focus == NULL) {
53         focus = make_node();
54         focus->client = c;
55     } else {
56         switch (split_mode) {
57             case MODE_AUTOMATIC:
58                 break;
59             case MODE_MANUAL:
60                 break;
61         }
62     }
63 }