Change prototype of handlers to static void, remove a bit of old code

This commit is contained in:
Michael Stapelberg 2011-12-30 11:30:56 +01:00
parent 019347b14c
commit fca57ed077
1 changed files with 50 additions and 105 deletions

View File

@ -82,7 +82,7 @@ bool event_is_ignored(const int sequence, const int response_type) {
* the bound action to parse_command(). * the bound action to parse_command().
* *
*/ */
static int handle_key_press(xcb_key_press_event_t *event) { static void handle_key_press(xcb_key_press_event_t *event) {
last_timestamp = event->time; last_timestamp = event->time;
@ -114,13 +114,13 @@ static int handle_key_press(xcb_key_press_event_t *event) {
if ((bind = get_binding(state_filtered, event->detail)) == NULL) { if ((bind = get_binding(state_filtered, event->detail)) == NULL) {
ELOG("Could not lookup key binding (modifiers %d, keycode %d)\n", ELOG("Could not lookup key binding (modifiers %d, keycode %d)\n",
state_filtered, event->detail); state_filtered, event->detail);
return 1; return;
} }
} }
char *json_result = parse_cmd(bind->command); char *json_result = parse_cmd(bind->command);
FREE(json_result); FREE(json_result);
return 1; return;
} }
/* /*
@ -163,7 +163,7 @@ static void check_crossing_screen_boundary(uint32_t x, uint32_t y) {
* When the user moves the mouse pointer onto a window, this callback gets called. * When the user moves the mouse pointer onto a window, this callback gets called.
* *
*/ */
static int handle_enter_notify(xcb_enter_notify_event_t *event) { static void handle_enter_notify(xcb_enter_notify_event_t *event) {
Con *con; Con *con;
last_timestamp = event->time; last_timestamp = event->time;
@ -173,13 +173,13 @@ static int handle_enter_notify(xcb_enter_notify_event_t *event) {
DLOG("coordinates %d, %d\n", event->event_x, event->event_y); DLOG("coordinates %d, %d\n", event->event_x, event->event_y);
if (event->mode != XCB_NOTIFY_MODE_NORMAL) { if (event->mode != XCB_NOTIFY_MODE_NORMAL) {
DLOG("This was not a normal notify, ignoring\n"); DLOG("This was not a normal notify, ignoring\n");
return 1; return;
} }
/* Some events are not interesting, because they were not generated /* Some events are not interesting, because they were not generated
* actively by the user, but by reconfiguration of windows */ * actively by the user, but by reconfiguration of windows */
if (event_is_ignored(event->sequence, XCB_ENTER_NOTIFY)) { if (event_is_ignored(event->sequence, XCB_ENTER_NOTIFY)) {
DLOG("Event ignored\n"); DLOG("Event ignored\n");
return 1; return;
} }
bool enter_child = false; bool enter_child = false;
@ -193,12 +193,12 @@ static int handle_enter_notify(xcb_enter_notify_event_t *event) {
if (con == NULL) { if (con == NULL) {
DLOG("Getting screen at %d x %d\n", event->root_x, event->root_y); DLOG("Getting screen at %d x %d\n", event->root_x, event->root_y);
check_crossing_screen_boundary(event->root_x, event->root_y); check_crossing_screen_boundary(event->root_x, event->root_y);
return 1; return;
} }
if (con->parent->type == CT_DOCKAREA) { if (con->parent->type == CT_DOCKAREA) {
DLOG("Ignoring, this is a dock client\n"); DLOG("Ignoring, this is a dock client\n");
return 1; return;
} }
/* see if the user entered the window on a certain window decoration */ /* see if the user entered the window on a certain window decoration */
@ -224,7 +224,7 @@ static int handle_enter_notify(xcb_enter_notify_event_t *event) {
#endif #endif
if (config.disable_focus_follows_mouse) if (config.disable_focus_follows_mouse)
return 1; return;
/* Get the currently focused workspace to check if the focus change also /* Get the currently focused workspace to check if the focus change also
* involves changing workspaces. If so, we need to call workspace_show() to * involves changing workspaces. If so, we need to call workspace_show() to
@ -236,7 +236,7 @@ static int handle_enter_notify(xcb_enter_notify_event_t *event) {
con_focus(con_descend_focused(con)); con_focus(con_descend_focused(con));
tree_render(); tree_render();
return 1; return;
} }
/* /*
@ -245,26 +245,26 @@ static int handle_enter_notify(xcb_enter_notify_event_t *event) {
* and crossing virtual screen boundaries), this callback gets called. * and crossing virtual screen boundaries), this callback gets called.
* *
*/ */
static int handle_motion_notify(xcb_motion_notify_event_t *event) { static void handle_motion_notify(xcb_motion_notify_event_t *event) {
last_timestamp = event->time; last_timestamp = event->time;
/* Skip events where the pointer was over a child window, we are only /* Skip events where the pointer was over a child window, we are only
* interested in events on the root window. */ * interested in events on the root window. */
if (event->child != 0) if (event->child != 0)
return 1; return;
Con *con; Con *con;
if ((con = con_by_frame_id(event->event)) == NULL) { if ((con = con_by_frame_id(event->event)) == NULL) {
check_crossing_screen_boundary(event->root_x, event->root_y); check_crossing_screen_boundary(event->root_x, event->root_y);
return 1; return;
} }
if (config.disable_focus_follows_mouse) if (config.disable_focus_follows_mouse)
return 1; return;
if (con->layout != L_DEFAULT) if (con->layout != L_DEFAULT)
return 1; return;
/* see over which rect the user is */ /* see over which rect the user is */
Con *current; Con *current;
@ -274,14 +274,14 @@ static int handle_motion_notify(xcb_motion_notify_event_t *event) {
/* We found the rect, lets see if this window is focused */ /* We found the rect, lets see if this window is focused */
if (TAILQ_FIRST(&(con->focus_head)) == current) if (TAILQ_FIRST(&(con->focus_head)) == current)
return 1; return;
con_focus(current); con_focus(current);
x_push_changes(croot); x_push_changes(croot);
return 1; return;
} }
return 1; return;
} }
/* /*
@ -289,10 +289,10 @@ static int handle_motion_notify(xcb_motion_notify_event_t *event) {
* we need to update our key bindings then (re-translate symbols). * we need to update our key bindings then (re-translate symbols).
* *
*/ */
static int handle_mapping_notify(xcb_mapping_notify_event_t *event) { static void handle_mapping_notify(xcb_mapping_notify_event_t *event) {
if (event->request != XCB_MAPPING_KEYBOARD && if (event->request != XCB_MAPPING_KEYBOARD &&
event->request != XCB_MAPPING_MODIFIER) event->request != XCB_MAPPING_MODIFIER)
return 0; return;
DLOG("Received mapping_notify for keyboard or modifier mapping, re-grabbing keys\n"); DLOG("Received mapping_notify for keyboard or modifier mapping, re-grabbing keys\n");
xcb_refresh_keyboard_mapping(keysyms, event); xcb_refresh_keyboard_mapping(keysyms, event);
@ -303,14 +303,14 @@ static int handle_mapping_notify(xcb_mapping_notify_event_t *event) {
translate_keysyms(); translate_keysyms();
grab_all_keys(conn, false); grab_all_keys(conn, false);
return 0; return;
} }
/* /*
* A new window appeared on the screen (=was mapped), so lets manage it. * A new window appeared on the screen (=was mapped), so lets manage it.
* *
*/ */
static int handle_map_request(xcb_map_request_event_t *event) { static void handle_map_request(xcb_map_request_event_t *event) {
xcb_get_window_attributes_cookie_t cookie; xcb_get_window_attributes_cookie_t cookie;
cookie = xcb_get_window_attributes_unchecked(conn, event->window); cookie = xcb_get_window_attributes_unchecked(conn, event->window);
@ -320,16 +320,18 @@ static int handle_map_request(xcb_map_request_event_t *event) {
manage_window(event->window, cookie, false); manage_window(event->window, cookie, false);
x_push_changes(croot); x_push_changes(croot);
return 1; return;
} }
/* /*
* Configure requests are received when the application wants to resize windows on their own. * Configure requests are received when the application wants to resize windows
* on their own.
* *
* We generate a synthethic configure notify event to signalize the client its "new" position. * We generate a synthethic configure notify event to signalize the client its
* "new" position.
* *
*/ */
static int handle_configure_request(xcb_configure_request_event_t *event) { static void handle_configure_request(xcb_configure_request_event_t *event) {
Con *con; Con *con;
DLOG("window 0x%08x wants to be at %dx%d with %dx%d\n", DLOG("window 0x%08x wants to be at %dx%d with %dx%d\n",
@ -361,7 +363,7 @@ static int handle_configure_request(xcb_configure_request_event_t *event) {
xcb_configure_window(conn, event->window, mask, values); xcb_configure_window(conn, event->window, mask, values);
xcb_flush(conn); xcb_flush(conn);
return 1; return;
} }
DLOG("Configure request!\n"); DLOG("Configure request!\n");
@ -402,7 +404,7 @@ static int handle_configure_request(xcb_configure_request_event_t *event) {
DLOG("Container is a floating leaf node, will do that.\n"); DLOG("Container is a floating leaf node, will do that.\n");
floating_reposition(floatingcon, newrect); floating_reposition(floatingcon, newrect);
return 1; return;
} }
/* Dock windows can be reconfigured in their height */ /* Dock windows can be reconfigured in their height */
@ -418,7 +420,7 @@ static int handle_configure_request(xcb_configure_request_event_t *event) {
fake_absolute_configure_notify(con); fake_absolute_configure_notify(con);
return 1; return;
} }
#if 0 #if 0
@ -442,14 +444,14 @@ int handle_configure_event(void *prophs, xcb_connection_t *conn, xcb_configure_n
* changes the screen configuration in any way (mode, position, ) * changes the screen configuration in any way (mode, position, )
* *
*/ */
static int handle_screen_change(xcb_generic_event_t *e) { static void handle_screen_change(xcb_generic_event_t *e) {
DLOG("RandR screen change\n"); DLOG("RandR screen change\n");
randr_query_outputs(); randr_query_outputs();
ipc_send_event("output", I3_IPC_EVENT_OUTPUT, "{\"change\":\"unspecified\"}"); ipc_send_event("output", I3_IPC_EVENT_OUTPUT, "{\"change\":\"unspecified\"}");
return 1; return;
} }
/* /*
@ -457,7 +459,7 @@ static int handle_screen_change(xcb_generic_event_t *e) {
* now, so we better clean up before. * now, so we better clean up before.
* *
*/ */
static int handle_unmap_notify_event(xcb_unmap_notify_event_t *event) { static void handle_unmap_notify_event(xcb_unmap_notify_event_t *event) {
/* If the client (as opposed to i3) destroyed or unmapped a window, an /* If the client (as opposed to i3) destroyed or unmapped a window, an
* EnterNotify event will follow (indistinguishable from an EnterNotify * EnterNotify event will follow (indistinguishable from an EnterNotify
* event caused by moving your mouse), causing i3 to set focus to whichever * event caused by moving your mouse), causing i3 to set focus to whichever
@ -481,63 +483,24 @@ static int handle_unmap_notify_event(xcb_unmap_notify_event_t *event) {
con = con_by_frame_id(event->window); con = con_by_frame_id(event->window);
if (con == NULL) { if (con == NULL) {
LOG("Not a managed window, ignoring UnmapNotify event\n"); LOG("Not a managed window, ignoring UnmapNotify event\n");
return 1; return;
} }
if (con->ignore_unmap > 0) if (con->ignore_unmap > 0)
con->ignore_unmap--; con->ignore_unmap--;
DLOG("ignore_unmap = %d for frame of container %p\n", con->ignore_unmap, con); DLOG("ignore_unmap = %d for frame of container %p\n", con->ignore_unmap, con);
return 1; return;
} }
if (con->ignore_unmap > 0) { if (con->ignore_unmap > 0) {
DLOG("ignore_unmap = %d, dec\n", con->ignore_unmap); DLOG("ignore_unmap = %d, dec\n", con->ignore_unmap);
con->ignore_unmap--; con->ignore_unmap--;
return 1; return;
} }
tree_close(con, DONT_KILL_WINDOW, false, false); tree_close(con, DONT_KILL_WINDOW, false, false);
tree_render(); tree_render();
x_push_changes(croot); x_push_changes(croot);
return 1; return;
#if 0
if (client == NULL) {
DLOG("not a managed window. Ignoring.\n");
/* This was most likely the destroyed frame of a client which is
* currently being unmapped, so we add this sequence (again!) to
* the ignore list (enter_notify events will get sent for both,
* the child and its frame). */
add_ignore_event(event->sequence);
return 0;
}
#endif
#if 0
/* Lets see how many clients there are left on the workspace to delete it if its empty */
bool workspace_empty = SLIST_EMPTY(&(client->workspace->focus_stack));
bool workspace_focused = (c_ws == client->workspace);
Client *to_focus = (!workspace_empty ? SLIST_FIRST(&(client->workspace->focus_stack)) : NULL);
/* If this workspace is currently visible, we dont delete it */
if (workspace_is_visible(client->workspace))
workspace_empty = false;
if (workspace_empty) {
client->workspace->output = NULL;
ipc_send_event("workspace", I3_IPC_EVENT_WORKSPACE, "{\"change\":\"empty\"}");
}
/* Remove the urgency flag if set */
client->urgent = false;
workspace_update_urgent_flag(client->workspace);
render_layout(conn);
#endif
return 1;
} }
/* /*
@ -549,7 +512,7 @@ static int handle_unmap_notify_event(xcb_unmap_notify_event_t *event) {
* important fields in the event data structure). * important fields in the event data structure).
* *
*/ */
static int handle_destroy_notify_event(xcb_destroy_notify_event_t *event) { static void handle_destroy_notify_event(xcb_destroy_notify_event_t *event) {
DLOG("destroy notify for 0x%08x, 0x%08x\n", event->event, event->window); DLOG("destroy notify for 0x%08x, 0x%08x\n", event->event, event->window);
xcb_unmap_notify_event_t unmap; xcb_unmap_notify_event_t unmap;
@ -557,7 +520,7 @@ static int handle_destroy_notify_event(xcb_destroy_notify_event_t *event) {
unmap.event = event->event; unmap.event = event->event;
unmap.window = event->window; unmap.window = event->window;
return handle_unmap_notify_event(&unmap); handle_unmap_notify_event(&unmap);
} }
/* /*
@ -631,14 +594,14 @@ static int handle_windowclass_change(void *data, xcb_connection_t *conn, uint8_t
* Expose event means we should redraw our windows (= title bar) * Expose event means we should redraw our windows (= title bar)
* *
*/ */
static int handle_expose_event(xcb_expose_event_t *event) { static void handle_expose_event(xcb_expose_event_t *event) {
Con *parent; Con *parent;
DLOG("window = %08x\n", event->window); DLOG("window = %08x\n", event->window);
if ((parent = con_by_frame_id(event->window)) == NULL) { if ((parent = con_by_frame_id(event->window)) == NULL) {
LOG("expose event for unknown window, ignoring\n"); LOG("expose event for unknown window, ignoring\n");
return 1; return;
} }
/* Since we render to our pixmap on every change anyways, expose events /* Since we render to our pixmap on every change anyways, expose events
@ -650,7 +613,7 @@ static int handle_expose_event(xcb_expose_event_t *event) {
event->width, event->height); event->width, event->height);
xcb_flush(conn); xcb_flush(conn);
return 1; return;
} }
/* /*
@ -882,16 +845,6 @@ static bool handle_hints(void *data, xcb_connection_t *conn, uint8_t state, xcb_
tree_render(); tree_render();
#if 0
/* If the workspace this client is on is not visible, we need to redraw
* the workspace bar */
if (!workspace_is_visible(client->workspace)) {
Output *output = client->workspace->output;
render_workspace(conn, output, output->current_workspace);
xcb_flush(conn);
}
#endif
FREE(reply); FREE(reply);
return true; return true;
} }
@ -921,14 +874,6 @@ static bool handle_transient_for(void *data, xcb_connection_t *conn, uint8_t sta
window_update_transient_for(con->window, prop); window_update_transient_for(con->window, prop);
// TODO: put window in floating mode if con->window->transient_for != XCB_NONE:
#if 0
if (client->floating == FLOATING_AUTO_OFF) {
DLOG("This is a popup window, putting into floating\n");
toggle_floating_mode(conn, client, true);
}
#endif
return true; return true;
} }
@ -961,33 +906,33 @@ static bool handle_clientleader_change(void *data, xcb_connection_t *conn, uint8
* decorations accordingly. * decorations accordingly.
* *
*/ */
static int handle_focus_in(xcb_focus_in_event_t *event) { static void handle_focus_in(xcb_focus_in_event_t *event) {
DLOG("focus change in, for window 0x%08x\n", event->event); DLOG("focus change in, for window 0x%08x\n", event->event);
Con *con; Con *con;
if ((con = con_by_window_id(event->event)) == NULL || con->window == NULL) if ((con = con_by_window_id(event->event)) == NULL || con->window == NULL)
return 1; return;
DLOG("That is con %p / %s\n", con, con->name); DLOG("That is con %p / %s\n", con, con->name);
if (event->mode == XCB_NOTIFY_MODE_GRAB || if (event->mode == XCB_NOTIFY_MODE_GRAB ||
event->mode == XCB_NOTIFY_MODE_UNGRAB) { event->mode == XCB_NOTIFY_MODE_UNGRAB) {
DLOG("FocusIn event for grab/ungrab, ignoring\n"); DLOG("FocusIn event for grab/ungrab, ignoring\n");
return 1; return;
} }
if (event->detail == XCB_NOTIFY_DETAIL_POINTER) { if (event->detail == XCB_NOTIFY_DETAIL_POINTER) {
DLOG("notify detail is pointer, ignoring this event\n"); DLOG("notify detail is pointer, ignoring this event\n");
return 1; return;
} }
if (focused_id == event->event) { if (focused_id == event->event) {
DLOG("focus matches the currently focused window, not doing anything\n"); DLOG("focus matches the currently focused window, not doing anything\n");
return 1; return;
} }
/* Skip dock clients, they cannot get the i3 focus. */ /* Skip dock clients, they cannot get the i3 focus. */
if (con->parent->type == CT_DOCKAREA) { if (con->parent->type == CT_DOCKAREA) {
DLOG("This is a dock client, not focusing.\n"); DLOG("This is a dock client, not focusing.\n");
return 1; return;
} }
DLOG("focus is different, updating decorations\n"); DLOG("focus is different, updating decorations\n");
@ -1003,7 +948,7 @@ static int handle_focus_in(xcb_focus_in_event_t *event) {
/* We update focused_id because we dont need to set focus again */ /* We update focused_id because we dont need to set focus again */
focused_id = event->event; focused_id = event->event;
x_push_changes(croot); x_push_changes(croot);
return 1; return;
} }
/* Returns false if the event could not be processed (e.g. the window could not /* Returns false if the event could not be processed (e.g. the window could not