st-xclearwin-20200419-6ee7143.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       st-xclearwin-20200419-6ee7143.diff (1489B)
       ---
            1 From 6ee7143600e5ac6c7a26d2ee985ac2a3087a5570 Mon Sep 17 00:00:00 2001
            2 From: Christian Tenllado <ctenllado@gmail.com>
            3 Date: Sun, 19 Apr 2020 11:57:31 +0200
            4 Subject: [PATCH] xclearwin clears the window
            5 
            6 When an OCS sequence was used to change the bg color, the borders where
            7 dirty. This simple patch just clears the window before the redraw of the
            8 terminal when the bg color has been changed. This is apparently enough
            9 and seams to be very smooth. There was a TODO comment for it on the st.c
           10 file, which I removed.
           11 ---
           12  st.c  | 6 ++----
           13  win.h | 1 +
           14  x.c   | 6 ++++++
           15  3 files changed, 9 insertions(+), 4 deletions(-)
           16 
           17 diff --git a/st.c b/st.c
           18 index 3e48410..2efb4bd 100644
           19 --- a/st.c
           20 +++ b/st.c
           21 @@ -1874,10 +1874,8 @@ strhandle(void)
           22                                  fprintf(stderr, "erresc: invalid color j=%d, p=%s\n",
           23                                          j, p ? p : "(null)");
           24                          } else {
           25 -                                /*
           26 -                                 * TODO if defaultbg color is changed, borders
           27 -                                 * are dirty
           28 -                                 */
           29 +                                if (j == defaultbg)
           30 +                                        xclearwin();
           31                                  redraw();
           32                          }
           33                          return;
           34 diff --git a/win.h b/win.h
           35 index a6ef1b9..d7b4980 100644
           36 --- a/win.h
           37 +++ b/win.h
           38 @@ -37,3 +37,4 @@ void xsetpointermotion(int);
           39  void xsetsel(char *);
           40  int xstartdraw(void);
           41  void xximspot(int, int);
           42 +void xclearwin(void);
           43 diff --git a/x.c b/x.c
           44 index 4cf6b21..afd35e0 100644
           45 --- a/x.c
           46 +++ b/x.c
           47 @@ -825,6 +825,12 @@ xclear(int x1, int y1, int x2, int y2)
           48                          x1, y1, x2-x1, y2-y1);
           49  }
           50  
           51 +void
           52 +xclearwin(void)
           53 +{
           54 +        xclear(0, 0, win.w, win.h);
           55 +}
           56 +
           57  void
           58  xhints(void)
           59  {
           60 -- 
           61 2.20.1
           62