X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=x.c;h=042242181ecb2ca3e8efb82be3f9dd94968d78aa;hb=e23acb9188b7bc7a7cfc418ac45671003abcc341;hp=b51821dc103fadb47d44901c8a3f821ba50d6615;hpb=732be223ee7ba5486713c63f944699fd6285af96;p=st.git diff --git a/x.c b/x.c index b51821d..0422421 100644 --- a/x.c +++ b/x.c @@ -733,12 +733,12 @@ xloadcols(void) static int loaded; Color *cp; - dc.collen = MAX(LEN(colorname), 256); - dc.col = xmalloc(dc.collen * sizeof(Color)); - if (loaded) { for (cp = dc.col; cp < &dc.col[dc.collen]; ++cp) XftColorFree(xw.dpy, xw.vis, xw.cmap, cp); + } else { + dc.collen = MAX(LEN(colorname), 256); + dc.col = xmalloc(dc.collen * sizeof(Color)); } for (i = 0; i < dc.collen; i++) @@ -1418,21 +1418,25 @@ xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) */ g.mode &= ATTR_BOLD|ATTR_ITALIC|ATTR_UNDERLINE|ATTR_STRUCK|ATTR_WIDE; - if (selected(cx, cy)) { - drawcol = dc.col[g.bg]; - } else { - g.mode |= ATTR_REVERSE; - - if (g.mode & ATTR_BOLD && BETWEEN(g.fg, 0, 7)) - drawcol = dc.col[g.fg + 8]; - else - drawcol = dc.col[g.fg]; - } - if (IS_SET(MODE_REVERSE)) { - drawcol.color.red = ~drawcol.color.red; - drawcol.color.green = ~drawcol.color.green; - drawcol.color.blue = ~drawcol.color.blue; + g.mode |= ATTR_REVERSE; + g.bg = defaultfg; + if (selected(cx, cy)) { + drawcol = dc.col[defaultcs]; + g.fg = defaultrcs; + } else { + drawcol = dc.col[defaultrcs]; + g.fg = defaultcs; + } + } else { + if (selected(cx, cy)) { + g.fg = defaultfg; + g.bg = defaultrcs; + } else { + g.fg = defaultbg; + g.bg = defaultcs; + } + drawcol = dc.col[g.bg]; } /* draw the new one */