src/handlers.c File Reference

#include <time.h>
#include <limits.h>
#include <xcb/randr.h>
#include <X11/XKBlib.h>
#include "all.h"
Include dependency graph for handlers.c:

Go to the source code of this file.

Data Structures

struct  property_handler_t

Defines

#define COPY_MASK_MEMBER(mask_member, event_member)
#define NUM_HANDLERS   (sizeof(property_handlers) / sizeof(struct property_handler_t))

Typedefs

typedef bool(* cb_property_handler_t )(void *data, xcb_connection_t *c, uint8_t state, xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *property)

Functions

static SLIST_HEAD (ignore_head, Ignore_Event)
bool event_is_ignored (const int sequence, const int response_type)
 Checks if the given sequence is ignored and returns true if so.
static int handle_key_press (xcb_key_press_event_t *event)
static void check_crossing_screen_boundary (uint32_t x, uint32_t y)
static int handle_enter_notify (xcb_enter_notify_event_t *event)
static int handle_motion_notify (xcb_motion_notify_event_t *event)
static int handle_mapping_notify (xcb_mapping_notify_event_t *event)
static int handle_map_request (xcb_map_request_event_t *event)
static int handle_configure_request (xcb_configure_request_event_t *event)
static int handle_screen_change (xcb_generic_event_t *e)
static int handle_unmap_notify_event (xcb_unmap_notify_event_t *event)
static int handle_destroy_notify_event (xcb_destroy_notify_event_t *event)
static bool handle_windowname_change (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *prop)
static bool handle_windowname_change_legacy (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *prop)
static int handle_expose_event (xcb_expose_event_t *event)
static int handle_client_message (xcb_client_message_event_t *event)
static bool handle_normal_hints (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t name, xcb_get_property_reply_t *reply)
static bool handle_hints (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t name, xcb_get_property_reply_t *reply)
static bool handle_transient_for (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t name, xcb_get_property_reply_t *prop)
static bool handle_clientleader_change (void *data, xcb_connection_t *conn, uint8_t state, xcb_window_t window, xcb_atom_t name, xcb_get_property_reply_t *prop)
static int handle_focus_in (xcb_focus_in_event_t *event)
void property_handlers_init ()
 Sets the appropriate atoms for the property handlers after the atoms were received from X11.
static void property_notify (uint8_t state, xcb_window_t window, xcb_atom_t atom)
void handle_event (int type, xcb_generic_event_t *event)
 Takes an xcb_generic_event_t and calls the appropriate handler, based on the event type.

Variables

int randr_base = -1
static struct property_handler_t property_handlers []

Define Documentation

#define COPY_MASK_MEMBER ( mask_member,
event_member   ) 
Value:
do { \
        if (event->value_mask & mask_member) { \
            mask |= mask_member; \
            values[c++] = event->event_member; \
        } \
} while (0)

Referenced by handle_configure_request().

#define NUM_HANDLERS   (sizeof(property_handlers) / sizeof(struct property_handler_t))

Definition at line 955 of file handlers.c.


Typedef Documentation

typedef bool(* cb_property_handler_t)(void *data, xcb_connection_t *c, uint8_t state, xcb_window_t window, xcb_atom_t atom, xcb_get_property_reply_t *property)

Definition at line 939 of file handlers.c.


Function Documentation

static void check_crossing_screen_boundary ( uint32_t  x,
uint32_t  y 
) [static]
bool event_is_ignored ( const int  sequence,
const int  response_type 
)

Checks if the given sequence is ignored and returns true if so.

Definition at line 46 of file handlers.c.

References Ignore_Event::added, Ignore_Event::response_type, Ignore_Event::sequence, SLIST_END, SLIST_FIRST, SLIST_FOREACH, SLIST_NEXT, and SLIST_REMOVE.

Referenced by handle_enter_notify(), and xcb_check_cb().

static int handle_client_message ( xcb_client_message_event_t *  event  )  [static]

Definition at line 624 of file handlers.c.

References _NET_WM_STATE_ADD, _NET_WM_STATE_REMOVE, _NET_WM_STATE_TOGGLE, con_by_window_id(), con_toggle_fullscreen(), croot, DLOG, ELOG, Con::fullscreen_mode, LOG, tree_render(), and x_push_changes().

Referenced by handle_event().

Here is the call graph for this function:

static bool handle_clientleader_change ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  name,
xcb_get_property_reply_t *  prop 
) [static]

Definition at line 882 of file handlers.c.

References con_by_window_id(), Con::window, and window_update_leader().

Here is the call graph for this function:

static int handle_configure_request ( xcb_configure_request_event_t *  event  )  [static]
static int handle_destroy_notify_event ( xcb_destroy_notify_event_t *  event  )  [static]

Definition at line 531 of file handlers.c.

References DLOG, and handle_unmap_notify_event().

Referenced by handle_event().

Here is the call graph for this function:

static int handle_enter_notify ( xcb_enter_notify_event_t *  event  )  [static]
void handle_event ( int  type,
xcb_generic_event_t *  event 
)
static int handle_expose_event ( xcb_expose_event_t *  event  )  [static]

Definition at line 598 of file handlers.c.

References con_by_frame_id(), DLOG, LOG, and x_deco_recurse().

Referenced by handle_event().

Here is the call graph for this function:

static int handle_focus_in ( xcb_focus_in_event_t *  event  )  [static]

Definition at line 906 of file handlers.c.

References con_by_window_id(), con_focus(), croot, DLOG, focused_id, Con::name, Con::window, and x_push_changes().

Referenced by handle_event().

Here is the call graph for this function:

static bool handle_hints ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  name,
xcb_get_property_reply_t *  reply 
) [static]
static int handle_key_press ( xcb_key_press_event_t *  event  )  [static]

Definition at line 83 of file handlers.c.

References BIND_MODE_SWITCH, Binding::command, DLOG, ELOG, get_binding(), parse_cmd(), xcb_numlock_mask, and xkb_current_group.

Referenced by handle_event().

Here is the call graph for this function:

static int handle_map_request ( xcb_map_request_event_t *  event  )  [static]

Definition at line 291 of file handlers.c.

References add_ignore_event(), conn, croot, DLOG, manage_window(), and x_push_changes().

Referenced by handle_event().

Here is the call graph for this function:

static int handle_mapping_notify ( xcb_mapping_notify_event_t *  event  )  [static]

Definition at line 270 of file handlers.c.

References conn, DLOG, grab_all_keys(), keysyms, translate_keysyms(), ungrab_all_keys(), and xcb_get_numlock_mask().

Referenced by handle_event().

Here is the call graph for this function:

static int handle_motion_notify ( xcb_motion_notify_event_t *  event  )  [static]
static bool handle_normal_hints ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  name,
xcb_get_property_reply_t *  reply 
) [static]
static int handle_screen_change ( xcb_generic_event_t *  e  )  [static]

Definition at line 434 of file handlers.c.

References DLOG, ipc_send_event(), and randr_query_outputs().

Referenced by handle_event().

Here is the call graph for this function:

static bool handle_transient_for ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  name,
xcb_get_property_reply_t *  prop 
) [static]

Definition at line 848 of file handlers.c.

References con_by_window_id(), DLOG, toggle_floating_mode(), Con::window, and window_update_transient_for().

Here is the call graph for this function:

static int handle_unmap_notify_event ( xcb_unmap_notify_event_t *  event  )  [static]
static bool handle_windowname_change ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  atom,
xcb_get_property_reply_t *  prop 
) [static]

Definition at line 546 of file handlers.c.

References con_by_window_id(), croot, Con::window, window_update_name(), and x_push_changes().

Here is the call graph for this function:

static bool handle_windowname_change_legacy ( void *  data,
xcb_connection_t *  conn,
uint8_t  state,
xcb_window_t  window,
xcb_atom_t  atom,
xcb_get_property_reply_t *  prop 
) [static]

Definition at line 564 of file handlers.c.

References con_by_window_id(), croot, Con::window, window_update_name_legacy(), and x_push_changes().

Here is the call graph for this function:

void property_handlers_init (  ) 

Sets the appropriate atoms for the property handlers after the atoms were received from X11.

Definition at line 962 of file handlers.c.

References property_handler_t::atom.

Referenced by main().

static void property_notify ( uint8_t  state,
xcb_window_t  window,
xcb_atom_t  atom 
) [static]

Definition at line 971 of file handlers.c.

References property_handler_t::cb, DLOG, FREE, and property_handler_t::long_len.

Referenced by handle_event().

static SLIST_HEAD ( ignore_head  ,
Ignore_Event   
) [static]

Definition at line 22 of file handlers.c.

References SLIST_INSERT_HEAD, and smalloc().

Here is the call graph for this function:


Variable Documentation

Initial value:
 {
    { 0, 128, handle_windowname_change },
    { 0, UINT_MAX, handle_hints },
    { 0, 128, handle_windowname_change_legacy },
    { 0, UINT_MAX, handle_normal_hints },
    { 0, UINT_MAX, handle_clientleader_change },
    { 0, UINT_MAX, handle_transient_for }
}

Definition at line 947 of file handlers.c.

int randr_base = -1

Definition at line 17 of file handlers.c.

Referenced by handle_event(), and main().


Generated on 6 Aug 2011 for i3 by  doxygen 1.6.1