X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=x.c;h=042242181ecb2ca3e8efb82be3f9dd94968d78aa;hb=7e19e116764d2651721cb9062ccaac31b0c771f2;hp=4155a703ecdae595ce629281f15e80e7de498ba1;hpb=5535c1f04c665c05faff2a65d5558246b7748d49;p=st.git diff --git a/x.c b/x.c index 4155a70..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++) @@ -1404,7 +1404,6 @@ void xdrawcursor(int cx, int cy, Glyph g, int ox, int oy, Glyph og) { Color drawcol; - uint32_t cc; /* remove the old cursor */ if (selected(ox, oy)) @@ -1419,29 +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)) { - cc = g.bg; - } else { + if (IS_SET(MODE_REVERSE)) { g.mode |= ATTR_REVERSE; - if (g.mode & ATTR_BOLD && BETWEEN(g.fg, 0, 7)) - cc = g.fg + 8; - else - cc = g.fg; - } - - if (IS_TRUECOL(cc)) { - drawcol.color.alpha = 0xffff; - drawcol.color.red = TRUERED(cc); - drawcol.color.green = TRUEGREEN(cc); - drawcol.color.blue = TRUEBLUE(cc); + g.bg = defaultfg; + if (selected(cx, cy)) { + drawcol = dc.col[defaultcs]; + g.fg = defaultrcs; + } else { + drawcol = dc.col[defaultrcs]; + g.fg = defaultcs; + } } else { - drawcol = dc.col[cc]; - } - - if (IS_SET(MODE_REVERSE)) { - drawcol.color.red = ~drawcol.color.red; - drawcol.color.green = ~drawcol.color.green; - drawcol.color.blue = ~drawcol.color.blue; + 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 */