sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

st-visualbell-20160727-308bfbf.diff (1212B)


      1 diff --git a/st.c b/st.c
      2 index 2594c65..89bffdd 100644
      3 --- a/st.c
      4 +++ b/st.c
      5 @@ -532,6 +532,7 @@ static char *opt_line  = NULL;
      6  static char *opt_name  = NULL;
      7  static char *opt_title = NULL;
      8  static int oldbutton   = 3; /* button event on startup: 3 = release */
      9 +static int bellon      = 0; /* visual bell status */
     10  
     11  static char *usedfont = NULL;
     12  static double usedfontsize = 0;
     13 @@ -2766,6 +2767,15 @@ tcontrolcode(uchar ascii)
     14  				xseturgency(1);
     15  			if (bellvolume)
     16  				XkbBell(xw.dpy, xw.win, bellvolume, (Atom)NULL);
     17 +
     18 +                        /* visual bell*/
     19 +                        if (!bellon) {
     20 +                                bellon = 1;
     21 +                                MODBIT(term.mode, !IS_SET(MODE_REVERSE), MODE_REVERSE);
     22 +                                redraw();
     23 +                                XFlush(xw.dpy);
     24 +                                MODBIT(term.mode, !IS_SET(MODE_REVERSE), MODE_REVERSE);
     25 +                        }
     26  		}
     27  		break;
     28  	case '\033': /* ESC */
     29 @@ -4292,7 +4302,12 @@ run(void)
     30  					(handler[ev.type])(&ev);
     31  			}
     32  
     33 -			draw();
     34 +			if (bellon) {
     35 +				bellon = 0;
     36 +				redraw();
     37 +			}
     38 +			else draw();
     39 +
     40  			XFlush(xw.dpy);
     41  
     42  			if (xev && !FD_ISSET(xfd, &rfd))