Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/engine/sugar-rc-style.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/gtk/engine/sugar-rc-style.c b/gtk/engine/sugar-rc-style.c
index 20dcfb8..3d2fd13 100644
--- a/gtk/engine/sugar-rc-style.c
+++ b/gtk/engine/sugar-rc-style.c
@@ -354,17 +354,29 @@ sugar_rc_style_merge (GtkRcStyle *dest,
sugar_dest->color_flags |= flags;
for (i = 0; i < 5; i++) {
- if (sugar_dest->color_mapping.bg[i] == SUGAR_COLOR_ORIGINAL)
+ if ((sugar_dest->color_mapping.bg[i] == SUGAR_COLOR_ORIGINAL) &&
+ !(dest->color_flags[i] & GTK_RC_BG) && src->color_flags[i] & GTK_RC_BG) {
sugar_dest->color_mapping.bg[i] = sugar_src->color_mapping.bg[i];
+ dest->color_flags[i] |= GTK_RC_BG;
+ }
- if (sugar_dest->color_mapping.fg[i] == SUGAR_COLOR_ORIGINAL)
+ if ((sugar_dest->color_mapping.fg[i] == SUGAR_COLOR_ORIGINAL) &&
+ !(dest->color_flags[i] & GTK_RC_FG) && src->color_flags[i] & GTK_RC_FG) {
sugar_dest->color_mapping.fg[i] = sugar_src->color_mapping.fg[i];
+ dest->color_flags[i] |= GTK_RC_FG;
+ }
- if (sugar_dest->color_mapping.base[i] == SUGAR_COLOR_ORIGINAL)
+ if ((sugar_dest->color_mapping.base[i] == SUGAR_COLOR_ORIGINAL) &&
+ !(dest->color_flags[i] & GTK_RC_BASE) && src->color_flags[i] & GTK_RC_BASE) {
sugar_dest->color_mapping.base[i] = sugar_src->color_mapping.base[i];
+ dest->color_flags[i] |= GTK_RC_BASE;
+ }
- if (sugar_dest->color_mapping.text[i] == SUGAR_COLOR_ORIGINAL)
+ if ((sugar_dest->color_mapping.text[i] == SUGAR_COLOR_ORIGINAL) &&
+ !(dest->color_flags[i] & GTK_RC_TEXT) && src->color_flags[i] & GTK_RC_TEXT) {
sugar_dest->color_mapping.text[i] = sugar_src->color_mapping.text[i];
+ dest->color_flags[i] |= GTK_RC_TEXT;
+ }
}
}