i3
Data Structures | Macros | Typedefs | Functions
restore_layout.c File Reference
#include "all.h"
Include dependency graph for restore_layout.c:

Go to the source code of this file.

Data Structures

struct  placeholder_state
 

Macros

#define I3__FILE__   "restore_layout.c"
 
#define APPEND_REGEX(re_name)
 

Typedefs

typedef struct placeholder_state placeholder_state
 

Functions

static TAILQ_HEAD (state_head, placeholder_state)
 
static void restore_xcb_prepare_cb (EV_P_ ev_prepare *w, int revents)
 
static void restore_xcb_check_cb (EV_P_ ev_check *w, int revents)
 
void restore_connect (void)
 Opens a separate connection to X11 for placeholder windows when restoring layouts. More...
 
static void update_placeholder_contents (placeholder_state *state)
 
static void open_placeholder_window (Con *con)
 
void restore_open_placeholder_windows (Con *parent)
 Open placeholder windows for all children of parent. More...
 
bool restore_kill_placeholder (xcb_window_t placeholder)
 Kill the placeholder window, if placeholder refers to a placeholder window. More...
 
static void expose_event (xcb_expose_event_t *event)
 
static void configure_notify (xcb_configure_notify_event_t *event)
 
static void restore_handle_event (int type, xcb_generic_event_t *event)
 

Macro Definition Documentation

#define APPEND_REGEX (   re_name)
Value:
do { \
if (swallows->re_name != NULL) { \
sasprintf(&serialized, "%s%s" #re_name "=\"%s\"", (serialized ? serialized : "["), (serialized ? " " : ""), swallows->re_name->pattern); \
} \
} while (0)
int sasprintf(char **strp, const char *fmt,...)
Safe-wrapper around asprintf which exits if it returns -1 (meaning that there is no more memory avail...
#define I3__FILE__   "restore_layout.c"

Definition at line 2 of file restore_layout.c.

Typedef Documentation

Function Documentation

static void configure_notify ( xcb_configure_notify_event_t *  event)
static
static void expose_event ( xcb_expose_event_t *  event)
static
static void open_placeholder_window ( Con con)
static
void restore_connect ( void  )

Opens a separate connection to X11 for placeholder windows when restoring layouts.

This is done as a safety measure (users can xkill a placeholder window without killing their window manager) and for better isolation, both on the wire to X11 and thus also in the code.

Definition at line 86 of file restore_layout.c.

References main_loop, restore_xcb_check_cb(), restore_xcb_prepare_cb(), scalloc(), state, TAILQ_EMPTY, TAILQ_FIRST, TAILQ_REMOVE, and xcb_check.

Referenced by main(), and restore_xcb_check_cb().

Here is the call graph for this function:

static void restore_handle_event ( int  type,
xcb_generic_event_t *  event 
)
static

Definition at line 337 of file restore_layout.c.

References configure_notify(), DLOG, and expose_event().

Referenced by restore_xcb_check_cb().

Here is the call graph for this function:

bool restore_kill_placeholder ( xcb_window_t  placeholder)

Kill the placeholder window, if placeholder refers to a placeholder window.

This function is called when manage.c puts a window into an existing container. In order not to leak resources, we need to destroy the window and all associated X11 objects (pixmap/gc).

Definition at line 259 of file restore_layout.c.

References DLOG, placeholder_state::gc, placeholder_state::pixmap, state, TAILQ_FOREACH, TAILQ_REMOVE, and placeholder_state::window.

Referenced by manage_window().

void restore_open_placeholder_windows ( Con con)

Open placeholder windows for all children of parent.

The placeholder window will vanish as soon as a real window is swallowed by the container. Until then, it exposes the criteria that must be fulfilled for a window to be swallowed by this container.

Definition at line 240 of file restore_layout.c.

References open_placeholder_window(), and TAILQ_FOREACH.

Referenced by cmd_append_layout().

Here is the call graph for this function:

static void restore_xcb_check_cb ( EV_P_ ev_check *  w,
int  revents 
)
static

Definition at line 52 of file restore_layout.c.

References DLOG, restore_connect(), and restore_handle_event().

Referenced by restore_connect().

Here is the call graph for this function:

static void restore_xcb_prepare_cb ( EV_P_ ev_prepare *  w,
int  revents 
)
static

Definition at line 48 of file restore_layout.c.

Referenced by restore_connect().

static TAILQ_HEAD ( state_head  ,
placeholder_state   
)
static

Definition at line 33 of file restore_layout.c.

static void update_placeholder_contents ( placeholder_state state)
static