Have selected() check whether selection exists - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 138caf294ea4d7968df36ead9d5ff5fc49f6215f
 (DIR) parent d84f3f4bd15e7d65fc0334cf7d62913c901bad00
 (HTM) Author: Devin J. Pohly <djpohly@gmail.com>
       Date:   Wed, 21 Feb 2018 22:48:28 -0600
       
       Have selected() check whether selection exists
       
       Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
       
       Diffstat:
         M st.c                                |       3 ++-
         M x.c                                 |      10 ++++------
       
       2 files changed, 6 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -419,7 +419,8 @@ selnormalize(void)
        int
        selected(int x, int y)
        {
       -        if (sel.mode == SEL_EMPTY)
       +        if (sel.mode == SEL_EMPTY || sel.ob.x == -1 ||
       +                        sel.alt != IS_SET(MODE_ALTSCREEN))
                        return 0;
        
                if (sel.type == SEL_RECTANGULAR)
 (DIR) diff --git a/x.c b/x.c
       @@ -1418,7 +1418,6 @@ xdrawcursor(void)
                static int oldx = 0, oldy = 0;
                int curx;
                Glyph g = {' ', ATTR_NULL, defaultbg, defaultcs}, og;
       -        int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
                Color drawcol;
        
                LIMIT(oldx, 0, term.col-1);
       @@ -1434,7 +1433,7 @@ xdrawcursor(void)
        
                /* remove the old cursor */
                og = term.line[oldy][oldx];
       -        if (ena_sel && selected(oldx, oldy))
       +        if (selected(oldx, oldy))
                        og.mode ^= ATTR_REVERSE;
                xdrawglyph(og, oldx, oldy);
        
       @@ -1448,7 +1447,7 @@ xdrawcursor(void)
                if (IS_SET(MODE_REVERSE)) {
                        g.mode |= ATTR_REVERSE;
                        g.bg = defaultfg;
       -                if (ena_sel && selected(term.c.x, term.c.y)) {
       +                if (selected(term.c.x, term.c.y)) {
                                drawcol = dc.col[defaultcs];
                                g.fg = defaultrcs;
                        } else {
       @@ -1456,7 +1455,7 @@ xdrawcursor(void)
                                g.fg = defaultcs;
                        }
                } else {
       -                if (ena_sel && selected(term.c.x, term.c.y)) {
       +                if (selected(term.c.x, term.c.y)) {
                                drawcol = dc.col[defaultrcs];
                                g.fg = defaultfg;
                                g.bg = defaultrcs;
       @@ -1555,7 +1554,6 @@ drawregion(int x1, int y1, int x2, int y2)
                int i, x, y, ox, numspecs;
                Glyph base, new;
                XftGlyphFontSpec *specs;
       -        int ena_sel = sel.ob.x != -1 && sel.alt == IS_SET(MODE_ALTSCREEN);
        
                if (!(win.state & WIN_VISIBLE))
                        return;
       @@ -1574,7 +1572,7 @@ drawregion(int x1, int y1, int x2, int y2)
                                new = term.line[y][x];
                                if (new.mode == ATTR_WDUMMY)
                                        continue;
       -                        if (ena_sel && selected(x, y))
       +                        if (selected(x, y))
                                        new.mode ^= ATTR_REVERSE;
                                if (i > 0 && ATTRCMP(base, new)) {
                                        xdrawglyphfontspecs(specs, base, i, ox, y);