summaryrefslogtreecommitdiffstats
path: root/style.c
diff options
context:
space:
mode:
authornicm <nicm>2019-07-01 06:56:00 +0000
committernicm <nicm>2019-07-01 06:56:00 +0000
commit2da050413c17e587be8bede710112096ce6b5f5a (patch)
treed551271f4c62a338d22daee38865ffb3bd043937 /style.c
parentcf30e0f9357b7e42491645a87eeae06ffb8e8066 (diff)
Add a "fill" style attribute to clear the entire format drawing area in
a colour, GitHub issue 1815.
Diffstat (limited to 'style.c')
-rw-r--r--style.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/style.c b/style.c
index 4c6174c7..f195301f 100644
--- a/style.c
+++ b/style.c
@@ -32,6 +32,7 @@
static struct style style_default = {
{ 0, 0, 8, 8, 0, { { ' ' }, 0, 1, 1 } },
+ 8,
STYLE_ALIGN_DEFAULT,
STYLE_LIST_OFF,
@@ -127,6 +128,10 @@ style_parse(struct style *sy, const struct grid_cell *base, const char *in)
sy->align = STYLE_ALIGN_RIGHT;
else
goto error;
+ } else if (end > 5 && strncasecmp(tmp, "fill=", 5) == 0) {
+ if ((value = colour_fromstring(tmp + 5)) == -1)
+ goto error;
+ sy->fill = value;
} else if (end > 3 && strncasecmp(tmp + 1, "g=", 2) == 0) {
if ((value = colour_fromstring(tmp + 3)) == -1)
goto error;
@@ -213,6 +218,11 @@ style_tostring(struct style *sy)
tmp);
comma = ",";
}
+ if (sy->fill != 8) {
+ off += xsnprintf(s + off, sizeof s - off, "%sfill=%s", comma,
+ colour_tostring(sy->fill));
+ comma = ",";
+ }
if (gc->fg != 8) {
off += xsnprintf(s + off, sizeof s - off, "%sfg=%s", comma,
colour_tostring(gc->fg));
@@ -290,6 +300,8 @@ style_equal(struct style *sy1, struct style *sy2)
return (0);
if ((gc1->attr & STYLE_ATTR_MASK) != (gc2->attr & STYLE_ATTR_MASK))
return (0);
+ if (sy1->fill != sy2->fill)
+ return (0);
if (sy1->align != sy2->align)
return (0);
return (1);