[gtk+/wip/gmenu: 25/87] x11: Add gdk_x11_window_set_utf8_property
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/gmenu: 25/87] x11: Add gdk_x11_window_set_utf8_property
- Date: Sat, 3 Dec 2011 23:50:15 +0000 (UTC)
commit 06953189227f3e1af9069e1338376e68ef19a499
Author: Colin Walters <walters verbum org>
Date: Fri Nov 25 17:21:05 2011 -0500
x11: Add gdk_x11_window_set_utf8_property
A convenience function to manipulate UTF-8 X11 properties; no point
in wrapping each one in individual setters.
gdk/gdk.symbols | 1 +
gdk/x11/gdkwindow-x11.c | 56 +++++++++++++++++++++++++++++++----------------
gdk/x11/gdkwindow-x11.h | 4 +++
3 files changed, 42 insertions(+), 19 deletions(-)
---
diff --git a/gdk/gdk.symbols b/gdk/gdk.symbols
index 7fa6a46..8ad38c3 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -580,6 +580,7 @@ gdk_x11_window_get_xid
gdk_x11_window_move_to_current_desktop
gdk_x11_window_set_theme_variant
gdk_x11_window_set_user_time
+gdk_x11_window_set_utf8_property
gdk_x11_xatom_to_atom
gdk_x11_xatom_to_atom_for_display
#endif
diff --git a/gdk/x11/gdkwindow-x11.c b/gdk/x11/gdkwindow-x11.c
index 1ff816e..0994a39 100644
--- a/gdk/x11/gdkwindow-x11.c
+++ b/gdk/x11/gdkwindow-x11.c
@@ -3087,25 +3087,19 @@ gdk_x11_window_set_user_time (GdkWindow *window,
}
/**
- * gdk_x11_window_set_theme_variant:
+ * gdk_x11_window_set_utf8_property:
* @window: (type GdkX11Window): a #GdkWindow
- * @variant: the theme variant to export
- *
- * GTK+ applications can request a dark theme variant. In order to
- * make other applications - namely window managers using GTK+ for
- * themeing - aware of this choice, GTK+ uses this function to
- * export the requested theme variant as _GTK_THEME_VARIANT property
- * on toplevel windows.
+ * @name: Property name, will be interned as an X atom
+ * @value: (allow-none): Property value, or %NULL to delete
*
- * Note that this property is automatically updated by GTK+, so this
- * function should only be used by applications which do not use GTK+
- * to create toplevel windows.
- *
- * Since: 3.2
+ * This function modifies or removes an arbitrary X11 window
+ * property of type UTF8_STRING. If the given @window is
+ * not a toplevel window, it is ignored.
*/
void
-gdk_x11_window_set_theme_variant (GdkWindow *window,
- char *variant)
+gdk_x11_window_set_utf8_property (GdkWindow *window,
+ const gchar *name,
+ const gchar *value)
{
GdkDisplay *display;
@@ -3114,22 +3108,46 @@ gdk_x11_window_set_theme_variant (GdkWindow *window,
display = gdk_window_get_display (window);
- if (variant != NULL)
+ if (value != NULL)
{
XChangeProperty (GDK_DISPLAY_XDISPLAY (display),
GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT"),
+ gdk_x11_get_xatom_by_name_for_display (display, name),
gdk_x11_get_xatom_by_name_for_display (display, "UTF8_STRING"), 8,
- PropModeReplace, (guchar *)variant, strlen (variant));
+ PropModeReplace, (guchar *)value, strlen (value));
}
else
{
XDeleteProperty (GDK_DISPLAY_XDISPLAY (display),
GDK_WINDOW_XID (window),
- gdk_x11_get_xatom_by_name_for_display (display, "_GTK_THEME_VARIANT"));
+ gdk_x11_get_xatom_by_name_for_display (display, name));
}
}
+/**
+ * gdk_x11_window_set_theme_variant:
+ * @window: (type GdkX11Window): a #GdkWindow
+ * @variant: the theme variant to export
+ *
+ * GTK+ applications can request a dark theme variant. In order to
+ * make other applications - namely window managers using GTK+ for
+ * themeing - aware of this choice, GTK+ uses this function to
+ * export the requested theme variant as _GTK_THEME_VARIANT property
+ * on toplevel windows.
+ *
+ * Note that this property is automatically updated by GTK+, so this
+ * function should only be used by applications which do not use GTK+
+ * to create toplevel windows.
+ *
+ * Since: 3.2
+ */
+void
+gdk_x11_window_set_theme_variant (GdkWindow *window,
+ char *variant)
+{
+ return gdk_x11_window_set_utf8_property (window, "_GTK_THEME_VARIANT", variant);
+}
+
#define GDK_SELECTION_MAX_SIZE(display) \
MIN(262144, \
XExtendedMaxRequestSize (GDK_DISPLAY_XDISPLAY (display)) == 0 \
diff --git a/gdk/x11/gdkwindow-x11.h b/gdk/x11/gdkwindow-x11.h
index 740fb08..bda2a58 100644
--- a/gdk/x11/gdkwindow-x11.h
+++ b/gdk/x11/gdkwindow-x11.h
@@ -158,6 +158,10 @@ GType gdk_window_impl_x11_get_type (void);
void gdk_x11_window_set_user_time (GdkWindow *window,
guint32 timestamp);
+void gdk_x11_window_set_utf8_property (GdkWindow *window,
+ const gchar *name,
+ const gchar *value);
+
GdkToplevelX11 *_gdk_x11_window_get_toplevel (GdkWindow *window);
void _gdk_x11_window_tmp_unset_bg (GdkWindow *window,
gboolean recurse);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]