let the theme specify all splitgradient colors

This commit is contained in:
Dana Jansens 2007-06-13 14:03:46 +00:00
parent 89ade7a8c1
commit b70afd1016

View file

@ -1761,6 +1761,7 @@ static gboolean read_appearance(XrmDatabase db, const RrInstance *inst,
gboolean ret = FALSE; gboolean ret = FALSE;
gchar *rclass = create_class_name(rname); gchar *rclass = create_class_name(rname);
gchar *cname, *ctoname, *bcname, *icname, *hname, *sname; gchar *cname, *ctoname, *bcname, *icname, *hname, *sname;
gchar *csplitname, *ctosplitname;
gchar *rettype; gchar *rettype;
XrmValue retvalue; XrmValue retvalue;
gint i; gint i;
@ -1771,6 +1772,8 @@ static gboolean read_appearance(XrmDatabase db, const RrInstance *inst,
icname = g_strconcat(rname, ".interlace.color", NULL); icname = g_strconcat(rname, ".interlace.color", NULL);
hname = g_strconcat(rname, ".highlight", NULL); hname = g_strconcat(rname, ".highlight", NULL);
sname = g_strconcat(rname, ".shadow", NULL); sname = g_strconcat(rname, ".shadow", NULL);
csplitname = g_strconcat(rname, ".color.splitTo", NULL);
ctosplitname = g_strconcat(rname, ".colorTo.splitTo", NULL);
if (XrmGetResource(db, rname, rclass, &rettype, &retvalue) && if (XrmGetResource(db, rname, rclass, &rettype, &retvalue) &&
retvalue.addr != NULL) { retvalue.addr != NULL) {
@ -1801,32 +1804,42 @@ static gboolean read_appearance(XrmDatabase db, const RrInstance *inst,
if (value->surface.grad == RR_SURFACE_SPLIT_VERTICAL) { if (value->surface.grad == RR_SURFACE_SPLIT_VERTICAL) {
gint r, g, b; gint r, g, b;
r = value->surface.primary->r; if (!read_color(db, inst, csplitname,
r += r >> 2; &value->surface.split_primary))
g = value->surface.primary->g; {
g += g >> 2; r = value->surface.primary->r;
b = value->surface.primary->b; r += r >> 2;
b += b >> 2; g = value->surface.primary->g;
if (r > 0xFF) r = 0xFF; g += g >> 2;
if (g > 0xFF) g = 0xFF; b = value->surface.primary->b;
if (b > 0xFF) b = 0xFF; b += b >> 2;
value->surface.split_primary = RrColorNew(inst, r, g, b); if (r > 0xFF) r = 0xFF;
if (g > 0xFF) g = 0xFF;
if (b > 0xFF) b = 0xFF;
value->surface.split_primary = RrColorNew(inst, r, g, b);
}
r = value->surface.secondary->r; if (!read_color(db, inst, ctosplitname,
r += r >> 4; &value->surface.split_secondary))
g = value->surface.secondary->g; {
g += g >> 4; r = value->surface.secondary->r;
b = value->surface.secondary->b; r += r >> 4;
b += b >> 4; g = value->surface.secondary->g;
if (r > 0xFF) r = 0xFF; g += g >> 4;
if (g > 0xFF) g = 0xFF; b = value->surface.secondary->b;
if (b > 0xFF) b = 0xFF; b += b >> 4;
value->surface.split_secondary = RrColorNew(inst, r, g, b); if (r > 0xFF) r = 0xFF;
if (g > 0xFF) g = 0xFF;
if (b > 0xFF) b = 0xFF;
value->surface.split_secondary = RrColorNew(inst, r, g, b);
}
} }
ret = TRUE; ret = TRUE;
} }
g_free(ctosplitname);
g_free(csplitname);
g_free(sname); g_free(sname);
g_free(hname); g_free(hname);
g_free(icname); g_free(icname);