[gtk+] Allow overriding WM_CLASS from the command line



commit a8e5cacb911077c1b16a5d9bfc7589dd8b056a5d
Author: Lars Uebernickel <lars uebernickel canonical com>
Date:   Fri Apr 10 17:18:50 2015 +0200

    Allow overriding WM_CLASS from the command line
    
    Even when the program itself calls gdk_set_program_class(). There's
    currently no way for this function to be called without breaking gdk's
    --class command line option, because you cannot call it before
    gtk_init().
    
    https://bugzilla.gnome.org/show_bug.cgi?id=747634

 gdk/gdk.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)
---
diff --git a/gdk/gdk.c b/gdk/gdk.c
index 068ecc4..d86ea85 100644
--- a/gdk/gdk.c
+++ b/gdk/gdk.c
@@ -130,6 +130,7 @@ static int gdk_initialized = 0;                     /* 1 if the library is initi
                                                      */
 
 static gchar  *gdk_progclass = NULL;
+static gboolean gdk_progclass_overridden;
 
 static GMutex gdk_threads_mutex;
 
@@ -208,6 +209,7 @@ static gboolean
 gdk_arg_class_cb (const char *key, const char *value, gpointer user_data, GError **error)
 {
   gdk_set_program_class (value);
+  gdk_progclass_overridden = TRUE;
 
   return TRUE;
 }
@@ -1025,10 +1027,16 @@ gdk_get_program_class (void)
  * Sets the program class. The X11 backend uses the program class to set
  * the class name part of the `WM_CLASS` property on
  * toplevel windows; see the ICCCM.
+ *
+ * The program class can still be overridden with the --class command
+ * line option.
  */
 void
 gdk_set_program_class (const char *program_class)
 {
+  if (gdk_progclass_overridden)
+    return;
+
   g_free (gdk_progclass);
 
   gdk_progclass = g_strdup (program_class);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]