X-Git-Url: https://git.sur5r.net/?p=i3%2Fi3;a=blobdiff_plain;f=include%2Fx.h;h=8b7664f2616f6f52d47c4a694d756c70af9bd84c;hp=827f6f855e8eeb94966e44d2dfabe99498470c0f;hb=HEAD;hpb=21c7a69812e40e8015b4c48a3d7e7dc1479d6371 diff --git a/include/x.h b/include/x.h index 827f6f85..8b7664f2 100644 --- a/include/x.h +++ b/include/x.h @@ -1,9 +1,16 @@ /* * vim:ts=4:sw=4:expandtab + * + * i3 - an improved dynamic tiling window manager + * © 2009 Michael Stapelberg and contributors (see also: LICENSE) + * + * x.c: Interface to X11, transfers our in-memory state to X11 (see also + * render.c). Basically a big state machine. + * */ +#pragma once -#ifndef _X_H -#define _X_H +#include /** Stores the X11 window ID of the currently focused window */ extern xcb_window_t focused_id; @@ -42,6 +49,12 @@ void x_reinit(Con *con); */ void x_con_kill(Con *con); +/* + * Completely reinitializes the container's frame, without destroying the old window. + * + */ +void x_con_reframe(Con *con); + /** * Returns true if the client supports the given protocol atom (like WM_DELETE_WINDOW) * @@ -52,7 +65,7 @@ bool window_supports_protocol(xcb_window_t window, xcb_atom_t atom); * Kills the given X11 window using WM_DELETE_WINDOW (if supported). * */ -void x_window_kill(xcb_window_t window); +void x_window_kill(xcb_window_t window, kill_window_t kill_window); /** * Draws the decoration of the given container onto its parent. @@ -60,13 +73,21 @@ void x_window_kill(xcb_window_t window); */ void x_draw_decoration(Con *con); +/** + * Recursively calls x_draw_decoration. This cannot be done in x_push_node + * because x_push_node uses focus order to recurse (see the comment above) + * while drawing the decoration needs to happen in the actual order. + * + */ +void x_deco_recurse(Con *con); + /** * This function pushes the properties of each node of the layout tree to * X11 if they have changed (like the map state, position of the window, …). * It recursively traverses all children of the given node. * */ -void x_push_node(Con *con, bool skip_decoration); +void x_push_node(Con *con); /** * Pushes all changes (state of each node, see x_push_node() and the window @@ -90,10 +111,29 @@ void x_raise_con(Con *con); */ void x_set_name(Con *con, const char *name); +/** + * Set up the SHMLOG_PATH atom. + * + */ +void update_shmlog_atom(void); + /** * Sets up i3 specific atoms (I3_SOCKET_PATH and I3_CONFIG_PATH) * */ -void x_set_i3_atoms(); +void x_set_i3_atoms(void); -#endif +/** + * Set warp_to coordinates. This will trigger on the next call to + * x_push_changes(). + * + */ +void x_set_warp_to(Rect *rect); + +/** + * Applies the given mask to the event mask of every i3 window decoration X11 + * window. This is useful to disable EnterNotify while resizing so that focus + * is untouched. + * + */ +void x_mask_event_mask(uint32_t mask);