|
|
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 |
|