[gtk+] x11: Add gdk_x11_window_set_utf8_property



commit ff38dda9a87895eef3d80d3a7b1f9f38a163bf45
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 e6e366b..21f1667 100644
--- a/gdk/gdk.symbols
+++ b/gdk/gdk.symbols
@@ -582,6 +582,7 @@ gdk_x11_window_move_to_current_desktop
 gdk_x11_window_set_theme_variant
 gdk_x11_window_set_hide_titlebar_when_maximized
 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 688655f..1ba3e24 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,19 +3108,19 @@ 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));
     }
 }
 
@@ -3173,6 +3167,30 @@ gdk_x11_window_set_hide_titlebar_when_maximized (GdkWindow *window,
     }
 }
 
+/**
+ * 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]