X-Git-Url: https://git.danieliu.xyz/?a=blobdiff_plain;f=x.c;h=4155a703ecdae595ce629281f15e80e7de498ba1;hb=5535c1f04c665c05faff2a65d5558246b7748d49;hp=ffd005fae1523bca102905cc13d86cf8f380dd92;hpb=1911c9274d9b03f3d7999c6ce26e2d5169642d26;p=st.git diff --git a/x.c b/x.c index ffd005f..4155a70 100644 --- a/x.c +++ b/x.c @@ -1404,6 +1404,7 @@ 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,13 +1420,23 @@ 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)) { - g.bg = defaultrcs; - g.fg = defaultfg; + cc = g.bg; } else { - g.bg = defaultcs; - g.fg = defaultbg; + 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); + } else { + drawcol = dc.col[cc]; } - drawcol = dc.col[g.bg]; if (IS_SET(MODE_REVERSE)) { drawcol.color.red = ~drawcol.color.red;