all repos — openbox @ b70afd10166f7cf93eecc0c0b3d4014bfbc20662

openbox fork - make it a bit more like ryudo

let the theme specify all splitgradient colors
Dana Jansens danakj@orodu.net
commit

b70afd10166f7cf93eecc0c0b3d4014bfbc20662

parent

89ade7a8c1a5f825f61657cb185246cefbd4e96e

1 files changed, 33 insertions(+), 20 deletions(-)

jump to
M render/theme.crender/theme.c

@@ -1761,6 +1761,7 @@ {

gboolean ret = FALSE; gchar *rclass = create_class_name(rname); gchar *cname, *ctoname, *bcname, *icname, *hname, *sname; + gchar *csplitname, *ctosplitname; gchar *rettype; XrmValue retvalue; gint i;

@@ -1771,6 +1772,8 @@ bcname = g_strconcat(rname, ".border.color", NULL);

icname = g_strconcat(rname, ".interlace.color", NULL); hname = g_strconcat(rname, ".highlight", 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) && retvalue.addr != NULL) {

@@ -1801,32 +1804,42 @@

if (value->surface.grad == RR_SURFACE_SPLIT_VERTICAL) { gint r, g, b; - r = value->surface.primary->r; - r += r >> 2; - g = value->surface.primary->g; - g += g >> 2; - b = value->surface.primary->b; - b += b >> 2; - if (r > 0xFF) r = 0xFF; - if (g > 0xFF) g = 0xFF; - if (b > 0xFF) b = 0xFF; - value->surface.split_primary = RrColorNew(inst, r, g, b); + if (!read_color(db, inst, csplitname, + &value->surface.split_primary)) + { + r = value->surface.primary->r; + r += r >> 2; + g = value->surface.primary->g; + g += g >> 2; + b = value->surface.primary->b; + b += b >> 2; + 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; - r += r >> 4; - g = value->surface.secondary->g; - g += g >> 4; - b = value->surface.secondary->b; - b += b >> 4; - if (r > 0xFF) r = 0xFF; - if (g > 0xFF) g = 0xFF; - if (b > 0xFF) b = 0xFF; - value->surface.split_secondary = RrColorNew(inst, r, g, b); + if (!read_color(db, inst, ctosplitname, + &value->surface.split_secondary)) + { + r = value->surface.secondary->r; + r += r >> 4; + g = value->surface.secondary->g; + g += g >> 4; + b = value->surface.secondary->b; + b += b >> 4; + 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; } + g_free(ctosplitname); + g_free(csplitname); g_free(sname); g_free(hname); g_free(icname);