Xinqi Bao's Git

Use do..while in window mapping loop.
[st.git] / st.c
diff --git a/st.c b/st.c
index 0065240..83acd56 100644 (file)
--- a/st.c
+++ b/st.c
@@ -3591,15 +3591,15 @@ xdrawcursor(void) {
                        case 4: /* Steady Underline */
                                XftDrawRect(xw.draw, &dc.col[defaultcs],
                                                borderpx + curx * xw.cw,
                        case 4: /* Steady Underline */
                                XftDrawRect(xw.draw, &dc.col[defaultcs],
                                                borderpx + curx * xw.cw,
-                                               borderpx + (term.c.y + 1) * xw.ch - 1,
-                                               xw.cw, 1);
+                                               borderpx + (term.c.y + 1) * xw.ch - cursorthickness,
+                                               xw.cw, cursorthickness);
                                break;
                        case 5: /* Blinking bar */
                        case 6: /* Steady bar */
                                XftDrawRect(xw.draw, &dc.col[defaultcs],
                                break;
                        case 5: /* Blinking bar */
                        case 6: /* Steady bar */
                                XftDrawRect(xw.draw, &dc.col[defaultcs],
-                                                               borderpx + curx * xw.cw,
-                                                               borderpx + term.c.y * xw.ch,
-                                                               1, xw.ch);
+                                               borderpx + curx * xw.cw,
+                                               borderpx + term.c.y * xw.ch,
+                                               cursorthickness, xw.ch);
                                break;
                }
        } else {
                                break;
                }
        } else {
@@ -3917,17 +3917,15 @@ run(void) {
        long deltatime;
 
        /* Waiting for window mapping */
        long deltatime;
 
        /* Waiting for window mapping */
-       while(1) {
+       do {
                XNextEvent(xw.dpy, &ev);
                if(XFilterEvent(&ev, None))
                        continue;
                if(ev.type == ConfigureNotify) {
                        w = ev.xconfigure.width;
                        h = ev.xconfigure.height;
                XNextEvent(xw.dpy, &ev);
                if(XFilterEvent(&ev, None))
                        continue;
                if(ev.type == ConfigureNotify) {
                        w = ev.xconfigure.width;
                        h = ev.xconfigure.height;
-               } else if(ev.type == MapNotify) {
-                       break;
                }
                }
-       }
+       } while(ev.type != MapNotify);
 
        ttynew();
        cresize(w, h);
 
        ttynew();
        cresize(w, h);
@@ -4072,7 +4070,7 @@ main(int argc, char *argv[]) {
 run:
        setlocale(LC_CTYPE, "");
        XSetLocaleModifiers("");
 run:
        setlocale(LC_CTYPE, "");
        XSetLocaleModifiers("");
-       tnew(cols? cols : 1, rows? rows : 1);
+       tnew(MAX(cols, 1), MAX(rows, 1));
        xinit();
        selinit();
        run();
        xinit();
        selinit();
        run();