diff options
author | Arnaud Fontaine <arnau@debian.org> | 2010-03-22 11:38:32 +0000 |
---|---|---|
committer | Arnaud Fontaine <Arnaud Fontaine arnau@debian.org> | 2010-03-29 13:26:00 +0100 |
commit | 78c8d42c2aca0da69e0100cc517e7b29188b1971 (patch) | |
tree | 6bdf70f0e216bbb445d5a956de4c041b371cbeb7 | |
parent | 7884d58a75de2ae9e97c85317fa68d3b2492f0d4 (diff) |
icccm: add missing setters for WM_CLASS and WM_TRANSIENT_FOR properties
-rw-r--r-- | icccm/icccm.c | 41 | ||||
-rw-r--r-- | icccm/xcb_icccm.h | 44 |
2 files changed, 85 insertions, 0 deletions
diff --git a/icccm/icccm.c b/icccm/icccm.c index c0139e4..dffca4f 100644 --- a/icccm/icccm.c +++ b/icccm/icccm.c @@ -233,6 +233,28 @@ xcb_watch_wm_client_machine(xcb_property_handlers_t *prophs, uint32_t long_len, /* WM_CLASS */ +xcb_void_cookie_t +xcb_set_wm_class_checked(xcb_connection_t *c, + xcb_window_t window, + uint32_t class_len, + const char *class) +{ + return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, + XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8, + class_len, class); +} + +xcb_void_cookie_t +xcb_set_wm_class(xcb_connection_t *c, + xcb_window_t window, + uint32_t class_len, + const char *class) +{ + return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, + XCB_ATOM_WM_CLASS, XCB_ATOM_STRING, 8, + class_len, class); +} + xcb_get_property_cookie_t xcb_get_wm_class(xcb_connection_t *c, xcb_window_t window) { @@ -284,6 +306,25 @@ xcb_get_wm_class_reply_wipe(xcb_get_wm_class_reply_t *prop) /* WM_TRANSIENT_FOR */ +xcb_void_cookie_t +xcb_set_wm_transient_for_checked(xcb_connection_t *c, xcb_window_t window, + xcb_window_t transient_for_window) +{ + return xcb_change_property_checked(c, XCB_PROP_MODE_REPLACE, window, + XCB_ATOM_WM_TRANSIENT_FOR, + XCB_ATOM_WINDOW, 32, 1, + &transient_for_window); +} + +xcb_void_cookie_t +xcb_set_wm_transient_for(xcb_connection_t *c, xcb_window_t window, + xcb_window_t transient_for_window) +{ + return xcb_change_property(c, XCB_PROP_MODE_REPLACE, window, + XCB_ATOM_WM_TRANSIENT_FOR, XCB_ATOM_WINDOW, 32, + 1, &transient_for_window); +} + xcb_get_property_cookie_t xcb_get_wm_transient_for(xcb_connection_t *c, xcb_window_t window) { diff --git a/icccm/xcb_icccm.h b/icccm/xcb_icccm.h index f205c4c..dbe0600 100644 --- a/icccm/xcb_icccm.h +++ b/icccm/xcb_icccm.h @@ -307,6 +307,32 @@ uint8_t xcb_watch_wm_client_machine(xcb_property_handlers_t *prophs, /** * @brief WM_CLASS hint structure */ + +/** + * @brief Deliver a SetProperty request to set WM_CLASS property value. + * + * WM_CLASS string is a concatenation of the instance and class name + * strings respectively (including null character). + * + * @param c The connection to the X server. + * @param window Window X identifier. + * @param class_len Length of WM_CLASS string. + * @param class WM_CLASS string. + * @return The request cookie. + */ +xcb_void_cookie_t xcb_set_wm_class_checked(xcb_connection_t *c, + xcb_window_t window, + uint32_t class_len, + const char *class); + +/** + * @see xcb_set_wm_class_checked() + */ +xcb_void_cookie_t xcb_set_wm_class(xcb_connection_t *c, + xcb_window_t window, + uint32_t class_len, + const char *class); + typedef struct { /** Instance name */ char *instance_name; @@ -371,6 +397,24 @@ void xcb_get_wm_class_reply_wipe(xcb_get_wm_class_reply_t *prop); /* WM_TRANSIENT_FOR */ /** + * @brief Deliver a SetProperty request to set WM_TRANSIENT_FOR property value. + * @param c The connection to the X server. + * @param window Window X identifier. + * @param transient_for_window The WM_TRANSIENT_FOR window X identifier. + * @return The request cookie. + */ +xcb_void_cookie_t xcb_set_wm_transient_for_checked(xcb_connection_t *c, + xcb_window_t window, + xcb_window_t transient_for_window); + +/** + * @see xcb_set_wm_transient_for + */ +xcb_void_cookie_t xcb_set_wm_transient_for(xcb_connection_t *c, + xcb_window_t window, + xcb_window_t transient_for_window); + +/** * @brief Send request to get WM_TRANSIENT_FOR property of a window. * @param c The connection to the X server * @param window Window X identifier. |