Blame SOURCES/xsettings-kde-0.12.3-gtktheme.patch

0e7d47
diff -ur xsettings-kde-0.12.3/xsettings-kde.c xsettings-kde-0.12.3-gtktheme/xsettings-kde.c
0e7d47
--- xsettings-kde-0.12.3/xsettings-kde.c	2011-10-07 01:09:07.000000000 +0200
0e7d47
+++ xsettings-kde-0.12.3-gtktheme/xsettings-kde.c	2012-01-18 21:38:27.000000000 +0100
0e7d47
@@ -239,15 +239,12 @@
0e7d47
 	char filename[1024];
0e7d47
 	char kdeprefix[1024];
0e7d47
 	char *prefix;
0e7d47
-	char color[1024];
0e7d47
 	char style[1024];
0e7d47
-	char themefilename[1024];
0e7d47
 	struct passwd *password;
0e7d47
 	int i;
0e7d47
 	int user_file;
0e7d47
 	int file_index;
0e7d47
 
0e7d47
-	color[0]= '\0';
0e7d47
 	kdeprefix[0]= '\0';
0e7d47
 	filename[0]= '\0';
0e7d47
 	style[0]='\0';
0e7d47
@@ -386,16 +383,6 @@
0e7d47
 					}
0e7d47
 					notify = 1;
0e7d47
 				}
0e7d47
-				if (strncmp(buffer,"widgetStyle=",12) == 0) {
0e7d47
-
0e7d47
-					/* found style */
0e7d47
-					sscanf(buffer,"widgetStyle=%s", style);
0e7d47
-
0e7d47
-				}
0e7d47
-				if (strncmp(buffer,"ColorScheme=",12) == 0) {
0e7d47
-					strcpy(color, buffer+12);
0e7d47
-					color[strlen(color)-1]='\0';
0e7d47
-				}
0e7d47
 				notify |= readDPI(buffer);
0e7d47
 
0e7d47
 				break;
0e7d47
@@ -451,59 +438,32 @@
0e7d47
 	} while (user_file == 0);
0e7d47
       }
0e7d47
 
0e7d47
-	if (buffer) {
0e7d47
-		free (buffer);
0e7d47
-	}
0e7d47
+	/* look for style set by kcm-gtk, enforce it through Net/ThemeName so GTK+ 3 also picks it up */
0e7d47
+	if (password) {
0e7d47
+		sprintf (filename, "%s/.gtkrc-2.0-kde4", password->pw_dir);
0e7d47
+		file = fopen (filename, "r");
0e7d47
+
0e7d47
+		if (file) {
0e7d47
+			while ((read = getline (&buffer, &len, file)) != -1) {
0e7d47
+				if (strncmp (buffer, "gtk-theme-name=", 15) == 0) {
0e7d47
+					sscanf (buffer, "gtk-theme-name=\"%1023[^\"]\"", style);
0e7d47
+				}
0e7d47
+			}
0e7d47
 
0e7d47
-	if ((style[0] == '\0' || (!is_kde4 && strcmp(style, "ia_ora") == 0) || (is_kde4 && strcmp(style, "iaora-qt") == 0) || (is_kde4 && strcmp(style, "iaorakde") == 0)) && strncmp("Ia Ora ", color, 7) == 0)
0e7d47
-		       	{
0e7d47
-		strcpy(style, color);
0e7d47
-		if (!is_kde4) {
0e7d47
-			style[strlen(style)-6] = '\0';
0e7d47
+			fclose (file);
0e7d47
+			file = NULL;
0e7d47
 		}
0e7d47
 	}
0e7d47
-				
0e7d47
-	if (style[0]) {
0e7d47
-		int gtkrc_access = 1;
0e7d47
-		sprintf(themefilename, "/usr/share/themes/%s/gtk-2.0/gtkrc", style);
0e7d47
 
0e7d47
-		if (password) {
0e7d47
-			char gtkrc[1024];
0e7d47
-			sprintf(gtkrc,"%s/.gtkrc-2.0", password->pw_dir);
0e7d47
-			gtkrc_access = access (gtkrc, F_OK);
0e7d47
-			/* if not .gtkrc-2.0, try KDE variant */
0e7d47
-			if (gtkrc_access) {
0e7d47
-				char *gtkrc_env;
0e7d47
-				char *gtkrc_file;
0e7d47
-				
0e7d47
-				gtkrc_env = getenv ("GTK2_RC_FILES");
0e7d47
-				gtkrc_file = NULL;
0e7d47
+	if (buffer) {
0e7d47
+		free (buffer);
0e7d47
+	}
0e7d47
 
0e7d47
-				if (gtkrc_env) {
0e7d47
-					do {
0e7d47
-						if (gtkrc_file == NULL) {
0e7d47
-							gtkrc_file = strtok (gtkrc_env, ":");
0e7d47
-						}
0e7d47
-						else {
0e7d47
-							gtkrc_file = strtok (NULL, ":");
0e7d47
-						}
0e7d47
-						if (gtkrc_file != NULL) {
0e7d47
-							if ((gtkrc_access = access (gtkrc_file, F_OK)) == 0) {
0e7d47
-								break;
0e7d47
-							}
0e7d47
-						}
0e7d47
-					} while (gtkrc_file != NULL );
0e7d47
-				}
0e7d47
-			}
0e7d47
+	if (style[0]) {
0e7d47
+		for (i = 0 ; i < max_display ; i++) {
0e7d47
+			xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
0e7d47
 		}
0e7d47
-
0e7d47
-		/* do not set theme name if .gtkrc is being used */ 
0e7d47
-		if (gtkrc_access && (access (themefilename, F_OK) == 0 )) {
0e7d47
-			for (i = 0 ; i < max_display ; i++) {
0e7d47
-				xsettings_manager_set_string (managers[i], "Net/ThemeName", style);
0e7d47
-			}
0e7d47
 		notify = 1;
0e7d47
-		}
0e7d47
 	}
0e7d47
 
0e7d47