summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Fontaine <arnau@debian.org>2010-03-22 11:38:32 +0000
committerArnaud Fontaine <Arnaud Fontaine arnau@debian.org>2010-03-29 13:26:00 +0100
commit78c8d42c2aca0da69e0100cc517e7b29188b1971 (patch)
tree6bdf70f0e216bbb445d5a956de4c041b371cbeb7
parent7884d58a75de2ae9e97c85317fa68d3b2492f0d4 (diff)
icccm: add missing setters for WM_CLASS and WM_TRANSIENT_FOR properties
-rw-r--r--icccm/icccm.c41
-rw-r--r--icccm/xcb_icccm.h44
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.