let the theme specify all splitgradient colors
This commit is contained in:
parent
89ade7a8c1
commit
b70afd1016
1 changed files with 33 additions and 20 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue