st-visualbell-20170924-b1338e9.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       st-visualbell-20170924-b1338e9.diff (1194B)
       ---
            1 diff --git a/st.c b/st.c
            2 index 7c7ddff..a3dffe5 100644
            3 --- a/st.c
            4 +++ b/st.c
            5 @@ -218,6 +218,7 @@ char *opt_line  = NULL;
            6  char *opt_name  = NULL;
            7  char *opt_title = NULL;
            8  int oldbutton   = 3; /* button event on startup: 3 = release */
            9 +int bellon      = 0;
           10  
           11  static CSIEscape csiescseq;
           12  static STREscape strescseq;
           13 diff --git a/st.h b/st.h
           14 index 44d4938..24a6eb6 100644
           15 --- a/st.h
           16 +++ b/st.h
           17 @@ -231,6 +231,7 @@ extern char *opt_line;
           18  extern char *opt_name;
           19  extern char *opt_title;
           20  extern int oldbutton;
           21 +extern int bellon;
           22  
           23  extern char *usedfont;
           24  extern double usedfontsize;
           25 diff --git a/x.c b/x.c
           26 index 191e5dc..7be81ea 100644
           27 --- a/x.c
           28 +++ b/x.c
           29 @@ -1483,6 +1483,15 @@ void
           30  xbell(int vol)
           31  {
           32          XkbBell(xw.dpy, xw.win, vol, (Atom)NULL);
           33 +
           34 +        /* visual bell*/
           35 +        if (!bellon) {
           36 +                bellon = 1;
           37 +                MODBIT(term.mode, !IS_SET(MODE_REVERSE), MODE_REVERSE);
           38 +                redraw();
           39 +                XFlush(xw.dpy);
           40 +                MODBIT(term.mode, !IS_SET(MODE_REVERSE), MODE_REVERSE);
           41 +        }
           42  }
           43  
           44  unsigned long
           45 @@ -1674,7 +1683,12 @@ run(void)
           46                                          (handler[ev.type])(&ev);
           47                          }
           48  
           49 -                        draw();
           50 +                        if (bellon) {
           51 +                                bellon = 0;
           52 +                                redraw();
           53 +                        }
           54 +                        else draw();
           55 +
           56                          XFlush(xw.dpy);
           57  
           58                          if (xev && !FD_ISSET(xfd, &rfd))