Unbreak GTK12 look under GNOME2 and KDE3

Joe Marcus Clarke marcus at marcuscom.com
Sat Apr 17 07:48:46 GMT 2004


On Fri, 2004-04-16 at 00:53, Alexander Kabaev wrote:
> Newest Gnome and KDE session managers find it fashionable to set
> $GTK_RC_FILES to partially bogus values, which make gtk12 default font
> horribly huge by default. For example, KDE sets the variable to
> /etc/gtk/gtkrc:$HOME/.gtkrc:$HOME/.kde/share/config/gtkrc, where the
> first path is clearly bogus. gnome-session is not far behind there too.
> 
> Attached patch-gtk::gtkrc.c file replaces existing patch-ad file in
> gtk12/files directory. In addition to patch-ad changes, this file makes
> gtk to _always_ prepend default gtk config file to the list of files,
> supplied by environment.  /usr/X11R6/share/themes/Default/gtk/gtkrc
> provides sane defaults and makes gtk12 default font to be of normal size
> again.
> 
> Consider committing it to the port, please.

What about something slightly different.  What if we test for the
existence of each file in $GTK_RC_FILES, and only add the default paths
if that none of the files listed in that variable exist (or rather can
be stat'd).  See the attached (runtime untested) patch.

I think this might be more true to the spirit of original code.

Joe

> --
> Alexander Kabaev
> 
> 
> 
> ______________________________________________________________________
> --- gtk/gtkrc.c.orig	Thu Mar 15 13:41:40 2001
> +++ gtk/gtkrc.c	Fri Apr 16 00:24:54 2004
> @@ -260,9 +260,9 @@
>  
>    var = getenv("GTK_DATA_PREFIX");
>    if (var)
> -    path = g_strdup_printf("%s%s", var, "/share/gtk/themes");
> +    path = g_strdup_printf("%s%s", var, "/share/themes");
>    else
> -    path = g_strdup_printf("%s%s", GTK_DATA_PREFIX, "/share/gtk/themes");
> +    path = g_strdup_printf("%s%s", GTK_DATA_PREFIX, "/share/themes");
>    
>    for (n = 0; pixmap_path[n]; n++) ;
>    if (n >= GTK_RC_MAX_PIXMAP_PATHS - 1)
> @@ -294,7 +294,7 @@
>  
>    var = g_get_home_dir ();
>    if (var)
> -    module_path[n++] = g_strdup_printf("%s%s", var, "/.gtk/lib/themes/engines");
> +    module_path[n++] = g_strdup_printf("%s%s", var, "/.gtk/themes/engines");
>    module_path[n] = NULL;
>  }
>  
> @@ -312,6 +312,10 @@
>    gtk_rc_default_files[0] = NULL;
>    init = TRUE;
>  
> +  str = g_strdup_printf ("%s%s", GTK_SYSCONFDIR, "/gtkrc");
> +  gtk_rc_add_default_file (str);
> +  g_free (str);
> +
>    var = getenv("GTK_RC_FILES");
>    if (var)
>      {
> @@ -326,10 +330,6 @@
>      }
>    else
>      {
> -      str = g_strdup_printf ("%s%s", GTK_SYSCONFDIR, "/gtk/gtkrc");
> -      gtk_rc_add_default_file (str);
> -      g_free (str);
> -
>        var = g_get_home_dir ();
>        if (var)
>  	{
> 
> ______________________________________________________________________
> _______________________________________________
> freebsd-gnome at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-gnome
> To unsubscribe, send any mail to "freebsd-gnome-unsubscribe at freebsd.org"
-- 
PGP Key : http://www.marcuscom.com/pgp.asc
-------------- next part --------------
--- gtk/gtkrc.c.orig	Thu Mar 15 13:41:40 2001
+++ gtk/gtkrc.c	Sat Apr 17 03:42:56 2004
@@ -260,9 +260,9 @@
 
   var = getenv("GTK_DATA_PREFIX");
   if (var)
-    path = g_strdup_printf("%s%s", var, "/share/gtk/themes");
+    path = g_strdup_printf("%s%s", var, "/share/themes");
   else
-    path = g_strdup_printf("%s%s", GTK_DATA_PREFIX, "/share/gtk/themes");
+    path = g_strdup_printf("%s%s", GTK_DATA_PREFIX, "/share/themes");
   
   for (n = 0; pixmap_path[n]; n++) ;
   if (n >= GTK_RC_MAX_PIXMAP_PATHS - 1)
@@ -294,7 +294,7 @@
 
   var = g_get_home_dir ();
   if (var)
-    module_path[n++] = g_strdup_printf("%s%s", var, "/.gtk/lib/themes/engines");
+    module_path[n++] = g_strdup_printf("%s%s", var, "/.gtk/themes/engines");
   module_path[n] = NULL;
 }
 
@@ -305,6 +305,7 @@
   gchar *var, *str;
   gchar **files;
   gint i;
+  struct stat sb;
 
   if (init)
     return;
@@ -319,14 +320,15 @@
       i=0;
       while (files[i])
 	{
-	  gtk_rc_add_default_file (files[i]);
+	  if (stat (files[i], &sb) == 0)
+	     gtk_rc_add_default_file (files[i]);
 	  i++;
 	}
       g_strfreev (files);
     }
-  else
+  if (gtk_rc_default_files[0] == NULL)
     {
-      str = g_strdup_printf ("%s%s", GTK_SYSCONFDIR, "/gtk/gtkrc");
+      str = g_strdup_printf ("%s%s", GTK_SYSCONFDIR, "/gtkrc");
       gtk_rc_add_default_file (str);
       g_free (str);
 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: This is a digitally signed message part
Url : http://lists.freebsd.org/pipermail/freebsd-gnome/attachments/20040417/a7c3ac1b/attachment.bin


More information about the freebsd-gnome mailing list