Add support for WM_CLIENT_LEADER, put floating windows mapping to (0x0) to center of leader/workspace

This commit is contained in:
Michael Stapelberg
2009-08-05 00:39:55 +02:00
parent af3972aa9f
commit 3114d6821d
7 changed files with 83 additions and 6 deletions

View File

@ -341,6 +341,10 @@ struct Client {
/** Holds the WM_CLASS, useful for matching the client in commands */
char *window_class;
/** Holds the xcb_window_t (just an ID) for the leader window (logical
* parent for toolwindows and similar floating windows) */
xcb_window_t leader;
/** fullscreen is pretty obvious */
bool fullscreen;

View File

@ -154,4 +154,13 @@ int 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 *reply);
/**
* Handles changes of the WM_CLIENT_LEADER atom which specifies if this is a
* toolwindow (or similar) and to which window it belongs (logical parent).
*
*/
int 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);
#endif

View File

@ -20,7 +20,7 @@
#ifndef _I3_H
#define _I3_H
#define NUM_ATOMS 17
#define NUM_ATOMS 18
extern xcb_connection_t *global_conn;
extern char **start_argv;

View File

@ -60,7 +60,8 @@ enum { _NET_SUPPORTED = 0,
WM_PROTOCOLS,
WM_DELETE_WINDOW,
UTF8_STRING,
WM_STATE
WM_STATE,
WM_CLIENT_LEADER
};
extern unsigned int xcb_numlock_mask;