void loop(){ loop: xcb_flush(gui.conn); event = xcb_wait_for_event(conn); switch(event.response_type){ case XCB_BUTTON_PRESS: xcb_button_press_event_t* e = cast(xcb_button_press_event_t* )event; if(e.event in buttons) buttons[e.event].onPress(); free(e); break; case XCB_BUTTON_RELEASE: xcb_button_release_event_t* e = cast(xcb_button_release_event_t* )event; if(e.event in buttons) buttons[e.event].onRelease(); free(e); break; case XCB_RESIZE_REQUEST://FIX xcb_resize_request_event_t* e = cast(xcb_resize_request_event_t* )event; windows[e.window].refresh(Geometry(e.width,e.height)); free(e); //free(xcb_get_input_focus_reply(conn, xcb_get_input_focus(conn), null)); break; default: break; } goto loop; free(event); }