|
i3
|
#include "all.h"#include <sys/time.h>#include <time.h>#include <xcb/randr.h>#include <libsn/sn-monitor.h>
Go to the source code of this file.
Data Structures | |
| struct | property_handler_t |
Macros | |
| #define | SN_API_NOT_YET_FROZEN 1 |
| #define | COPY_MASK_MEMBER(mask_member, event_member) |
| #define | _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 |
| #define | _NET_WM_MOVERESIZE_SIZE_TOP 1 |
| #define | _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 |
| #define | _NET_WM_MOVERESIZE_SIZE_RIGHT 3 |
| #define | _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 |
| #define | _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 |
| #define | _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 |
| #define | _NET_WM_MOVERESIZE_SIZE_LEFT 7 |
| #define | _NET_WM_MOVERESIZE_MOVE 8 /* movement only */ |
| #define | _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */ |
| #define | _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */ |
| #define | _NET_WM_MOVERESIZE_CANCEL 11 /* cancel operation */ |
| #define | _NET_MOVERESIZE_WINDOW_X (1 << 8) |
| #define | _NET_MOVERESIZE_WINDOW_Y (1 << 9) |
| #define | _NET_MOVERESIZE_WINDOW_WIDTH (1 << 10) |
| #define | _NET_MOVERESIZE_WINDOW_HEIGHT (1 << 11) |
| #define | NUM_HANDLERS (sizeof(property_handlers) / sizeof(struct property_handler_t)) |
Typedefs | |
| typedef bool(* | cb_property_handler_t) (Con *con, 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. More... | |
| static void | check_crossing_screen_boundary (uint32_t x, uint32_t y) |
| static void | handle_enter_notify (xcb_enter_notify_event_t *event) |
| static void | handle_motion_notify (xcb_motion_notify_event_t *event) |
| static void | handle_mapping_notify (xcb_mapping_notify_event_t *event) |
| static void | handle_map_request (xcb_map_request_event_t *event) |
| static void | handle_configure_request (xcb_configure_request_event_t *event) |
| static void | handle_screen_change (xcb_generic_event_t *e) |
| static void | handle_unmap_notify_event (xcb_unmap_notify_event_t *event) |
| static void | handle_destroy_notify_event (xcb_destroy_notify_event_t *event) |
| static bool | window_name_changed (i3Window *window, char *old_name) |
| static bool | handle_windowname_change (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_windowname_change_legacy (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_windowrole_change (Con *con, xcb_get_property_reply_t *prop) |
| static void | handle_expose_event (xcb_expose_event_t *event) |
| static void | handle_client_message (xcb_client_message_event_t *event) |
| static bool | handle_window_type (Con *con, xcb_get_property_reply_t *reply) |
| static bool | handle_normal_hints (Con *con, xcb_get_property_reply_t *reply) |
| static bool | handle_hints (Con *con, xcb_get_property_reply_t *reply) |
| static bool | handle_transient_for (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_clientleader_change (Con *con, xcb_get_property_reply_t *prop) |
| static void | handle_focus_in (xcb_focus_in_event_t *event) |
| static void | handle_focus_out (xcb_focus_in_event_t *event) |
| static void | handle_configure_notify (xcb_configure_notify_event_t *event) |
| static void | handle_selection_clear (xcb_selection_clear_event_t *event) |
| static bool | handle_class_change (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_machine_change (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_motif_hints_change (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_strut_partial_change (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_i3_floating (Con *con, xcb_get_property_reply_t *prop) |
| static bool | handle_windowicon_change (Con *con, xcb_get_property_reply_t *prop) |
| void | property_handlers_init (void) |
| Sets the appropriate atoms for the property handlers after the atoms were received from X11. More... | |
| 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. More... | |
Variables | |
| int | randr_base = -1 |
| int | xkb_base = -1 |
| int | xkb_current_group |
| int | shape_base = -1 |
| static struct property_handler_t | property_handlers [] |
| #define _NET_MOVERESIZE_WINDOW_HEIGHT (1 << 11) |
Definition at line 649 of file handlers.c.
| #define _NET_MOVERESIZE_WINDOW_WIDTH (1 << 10) |
Definition at line 648 of file handlers.c.
| #define _NET_MOVERESIZE_WINDOW_X (1 << 8) |
Definition at line 646 of file handlers.c.
| #define _NET_MOVERESIZE_WINDOW_Y (1 << 9) |
Definition at line 647 of file handlers.c.
| #define _NET_WM_MOVERESIZE_CANCEL 11 /* cancel operation */ |
Definition at line 644 of file handlers.c.
| #define _NET_WM_MOVERESIZE_MOVE 8 /* movement only */ |
Definition at line 641 of file handlers.c.
| #define _NET_WM_MOVERESIZE_MOVE_KEYBOARD 10 /* move via keyboard */ |
Definition at line 643 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_BOTTOM 5 |
Definition at line 638 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_BOTTOMLEFT 6 |
Definition at line 639 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_BOTTOMRIGHT 4 |
Definition at line 637 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_KEYBOARD 9 /* size via keyboard */ |
Definition at line 642 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_LEFT 7 |
Definition at line 640 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_RIGHT 3 |
Definition at line 636 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_TOP 1 |
Definition at line 634 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_TOPLEFT 0 |
Definition at line 633 of file handlers.c.
| #define _NET_WM_MOVERESIZE_SIZE_TOPRIGHT 2 |
Definition at line 635 of file handlers.c.
| #define COPY_MASK_MEMBER | ( | mask_member, | |
| event_member | |||
| ) |
| #define NUM_HANDLERS (sizeof(property_handlers) / sizeof(struct property_handler_t)) |
Definition at line 1308 of file handlers.c.
| #define SN_API_NOT_YET_FROZEN 1 |
Definition at line 17 of file handlers.c.
| typedef bool(* cb_property_handler_t) (Con *con, xcb_get_property_reply_t *property) |
Definition at line 1285 of file handlers.c.
|
static |
Definition at line 90 of file handlers.c.
References xoutput::con, con_descend_focused(), con_focus(), con_get_workspace(), config, Config::disable_focus_follows_mouse, ELOG, focused, get_output_containing(), output_get_content(), tree_render(), workspace_show(), and y.
Referenced by handle_enter_notify(), and handle_motion_notify().

| 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 52 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(), handle_event(), and xcb_prepare_cb().
|
static |
Definition at line 1170 of file handlers.c.
References remanage_window(), Con::window, and window_update_class().

|
static |
Definition at line 655 of file handlers.c.
References _NET_MOVERESIZE_WINDOW_HEIGHT, _NET_MOVERESIZE_WINDOW_WIDTH, _NET_MOVERESIZE_WINDOW_X, _NET_MOVERESIZE_WINDOW_Y, _NET_WM_MOVERESIZE_MOVE, _NET_WM_MOVERESIZE_SIZE_LEFT, _NET_WM_MOVERESIZE_SIZE_TOPLEFT, _NET_WM_STATE_ADD, _NET_WM_STATE_REMOVE, _NET_WM_STATE_TOGGLE, CF_NONE, CF_OUTPUT, con_activate_unblock(), con_by_window_id(), con_get_workspace(), con_is_floating(), con_is_internal(), con_move_to_workspace(), con_set_urgency(), con_toggle_fullscreen(), config, conn, Config::default_border_width, DLOG, ELOG, ewmh_get_workspace_by_index(), ewmh_update_sticky(), ewmh_update_wm_desktop(), Con::floating, floating_drag_window(), floating_enable(), floating_resize_window(), Config::focus_on_window_activation, focused, focused_id, FREE, Con::fullscreen_mode, handle_configure_request(), Window::id, KILL_WINDOW, last_timestamp, LOG, Con::name, NET_WM_DESKTOP_ALL, output_push_sticky_windows(), Con::parent, Con::rect, render_deco_height(), scalloc(), scratchpad_show(), sndisplay, Con::sticky, sync_respond(), tree_close_internal(), tree_render(), Con::urgent, Con::window, workspace_get(), workspace_is_visible(), workspace_show(), Rect::x, and Rect::y.
Referenced by handle_event().

|
static |
Definition at line 1002 of file handlers.c.
References Con::window, and window_update_leader().

|
static |
Definition at line 1136 of file handlers.c.
References DLOG, force_xinerama, ipc_send_event(), randr_query_outputs(), and root.
Referenced by handle_event().

|
static |
Definition at line 277 of file handlers.c.
References Con::border_style, Con::border_width, BS_NORMAL, xoutput::con, con_activate_unblock(), con_attach(), con_border_style_rect(), con_by_window_id(), con_detach(), con_for_window(), con_get_fullscreen_covering_ws(), con_get_output(), con_get_workspace(), con_is_floating(), con_is_leaf(), con_set_urgency(), config, conn, COPY_MASK_MEMBER, Con::deco_rect, DLOG, fake_absolute_configure_notify(), floating_reposition(), Config::focus_on_window_activation, Con::geometry, get_output_containing(), Rect::height, Con::name, output_primary_name(), Con::parent, Con::rect, tree_render(), Con::type, Rect::width, Con::window, workspace_is_visible(), workspace_show(), Rect::x, Rect::y, and y.
Referenced by handle_client_message(), and handle_event().

|
static |
Definition at line 535 of file handlers.c.
References DLOG, and handle_unmap_notify_event().
Referenced by handle_event().

|
static |
Definition at line 124 of file handlers.c.
References check_crossing_screen_boundary(), con_by_frame_id(), con_by_window_id(), con_descend_focused(), con_focus(), con_get_workspace(), config, Con::deco_rect, Config::disable_focus_follows_mouse, DLOG, event_is_ignored(), focused, focused_id, L_DEFAULT, last_timestamp, Con::layout, LOG, Con::name, Con::parent, rect_contains(), TAILQ_FOREACH_REVERSE, tree_render(), Con::type, and workspace_show().
Referenced by handle_event().

| 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.
Definition at line 1378 of file handlers.c.
References add_ignore_event(), con_by_window_id(), conn, DLOG, event_is_ignored(), grab_all_keys(), handle_button_press(), handle_client_message(), handle_configure_notify(), handle_configure_request(), handle_destroy_notify_event(), handle_enter_notify(), handle_expose_event(), handle_focus_in(), handle_focus_out(), handle_key_press(), handle_map_request(), handle_mapping_notify(), handle_motion_notify(), handle_screen_change(), handle_selection_clear(), handle_unmap_notify_event(), keysyms, last_timestamp, load_keymap(), LOG, property_notify(), randr_base, shape_base, shape_supported, state, translate_keysyms(), ungrab_all_keys(), x_set_shape(), xkb_base, and xkb_current_group.
Referenced by drain_drag_events(), main(), and xcb_prepare_cb().

|
static |
Definition at line 616 of file handlers.c.
References con_by_frame_id(), conn, DLOG, draw_util_copy_surface(), Con::frame, Con::frame_buffer, Rect::height, LOG, Con::rect, and Rect::width.
Referenced by handle_event().

|
static |
Definition at line 1013 of file handlers.c.
References con_activate_unblock(), con_by_window_id(), con_focus(), con_inside_floating(), croot, DLOG, focused, focused_id, Con::name, Con::parent, root, tree_render(), Con::type, Con::window, and x_push_changes().
Referenced by handle_event().

|
static |
Definition at line 1065 of file handlers.c.
References con_by_window_id(), DLOG, Con::name, and root.
Referenced by handle_event().

|
static |
Definition at line 977 of file handlers.c.
References con_set_urgency(), tree_render(), Con::window, and window_update_hints().

|
static |
Definition at line 1267 of file handlers.c.
References DLOG, and remanage_window().

|
static |
Definition at line 1180 of file handlers.c.
References remanage_window(), Con::window, and window_update_machine().

|
static |
Definition at line 258 of file handlers.c.
References add_ignore_event(), conn, DLOG, and manage_window().
Referenced by handle_event().

|
static |
Definition at line 239 of file handlers.c.
References aio_get_mod_mask_for(), conn, DLOG, grab_all_keys(), keysyms, translate_keysyms(), ungrab_all_keys(), XCB_NUM_LOCK, and xcb_numlock_mask.
Referenced by handle_event().

|
static |
Definition at line 1190 of file handlers.c.
References Con::border_style, BS_NORMAL, con_set_border_style(), croot, Con::current_border_width, DLOG, Con::window, window_update_motif_hints(), and x_push_changes().

|
static |
Definition at line 197 of file handlers.c.
References check_crossing_screen_boundary(), con_by_frame_id(), con_focus(), config, croot, Con::deco_rect, Config::disable_focus_follows_mouse, DLOG, L_DEFAULT, L_SPLITH, L_SPLITV, last_timestamp, Con::layout, rect_contains(), TAILQ_FIRST, TAILQ_FOREACH_REVERSE, and x_push_changes().
Referenced by handle_event().

|
static |
Definition at line 958 of file handlers.c.
References con_inside_floating(), floating_check_size(), FREE, tree_render(), Con::window, and window_update_normal_hints().

|
static |
Definition at line 436 of file handlers.c.
References conn, croot, DLOG, ELOG, Rect::height, ipc_send_event(), randr_query_outputs(), Con::rect, root, scratchpad_fix_resolution(), and Rect::width.
Referenced by handle_event().

|
static |
Definition at line 1155 of file handlers.c.
References DLOG, LOG, and wm_sn.
Referenced by handle_event().
|
static |
Definition at line 1208 of file handlers.c.
References reservedpx::bottom, con_attach(), con_detach(), con_for_window(), con_get_output(), croot, DLOG, Window::dock, Con::geometry, Rect::height, Con::name, Con::parent, Con::rect, Window::reserved, reservedpx::top, tree_render(), Con::type, Con::window, window_update_strut_partial(), and Rect::y.

|
static |
Definition at line 992 of file handlers.c.
References Con::window, and window_update_transient_for().

|
static |
Definition at line 464 of file handlers.c.
References add_ignore_event(), con_by_frame_id(), con_by_window_id(), conn, DLOG, DONT_KILL_WINDOW, Con::ignore_unmap, LOG, tree_close_internal(), and tree_render().
Referenced by handle_destroy_notify_event(), and handle_event().

|
static |
Definition at line 946 of file handlers.c.
References Con::window, and window_update_type().

|
static |
Definition at line 1275 of file handlers.c.
References croot, Con::window, window_update_icon(), and x_push_changes().

|
static |
Definition at line 561 of file handlers.c.
References croot, FREE, i3string_as_utf8(), ipc_send_window_event(), Window::name, remanage_window(), sstrdup(), Con::window, window_name_changed(), window_update_name(), and x_push_changes().

|
static |
Definition at line 583 of file handlers.c.
References croot, FREE, i3string_as_utf8(), ipc_send_window_event(), Window::name, remanage_window(), sstrdup(), Con::window, window_name_changed(), window_update_name_legacy(), and x_push_changes().

|
static |
Definition at line 604 of file handlers.c.
References remanage_window(), Con::window, and window_update_role().

| void property_handlers_init | ( | void | ) |
Sets the appropriate atoms for the property handlers after the atoms were received from X11.
Definition at line 1315 of file handlers.c.
References property_handler_t::atom, conn_screen, property_handlers, sndisplay, and startup_monitor_event().
Referenced by main().

|
static |
Definition at line 1334 of file handlers.c.
References property_handler_t::atom, property_handler_t::cb, con_by_window_id(), conn, DLOG, FREE, property_handler_t::long_len, NUM_HANDLERS, property_handlers, state, and Con::window.
Referenced by handle_event().

|
static |
Definition at line 28 of file handlers.c.
References Ignore_Event::response_type, Ignore_Event::sequence, SLIST_INSERT_HEAD, and smalloc().

|
static |
Definition at line 546 of file handlers.c.
References i3string_as_utf8(), and Window::name.
Referenced by handle_windowname_change(), and handle_windowname_change_legacy().

|
static |
Definition at line 1285 of file handlers.c.
Referenced by property_handlers_init(), and property_notify().
| int randr_base = -1 |
Definition at line 20 of file handlers.c.
Referenced by handle_event(), and main().
| int shape_base = -1 |
Definition at line 23 of file handlers.c.
Referenced by handle_event(), and main().
| int xkb_base = -1 |
Definition at line 21 of file handlers.c.
Referenced by handle_event(), and main().
| int xkb_current_group |
Definition at line 22 of file handlers.c.
Referenced by binding_in_current_group(), and handle_event().