diff --git a/speedwm.c b/speedwm.c index 7065d0b..0efdb3b 100644 --- a/speedwm.c +++ b/speedwm.c @@ -344,14 +344,15 @@ struct Monitor { int hideclientindicator; int hideunselectedtitle; + /* tag preview fix */ + int needupdatebar; + /* powerline shape */ int tagplshape; /* position */ int layoutposition; - /* icon */ - /* coloring */ int colorselectedtitle; int colorhiddentitle; @@ -1760,6 +1761,9 @@ createmon(void) m->colorhiddentitle = colorhiddentitle; m->colorlayout = colorlayout; + /* we don't need to update the bar */ + m->needupdatebar = 0; + /* bar height */ m->bh = bh; @@ -2918,6 +2922,7 @@ setgaps(int oh, int ov, int ih, int iv) selmon->gapsizeiv = iv; arrange(selmon); + updatebars(); } void @@ -3069,6 +3074,7 @@ togglebarpaddingv(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } @@ -3088,6 +3094,7 @@ togglebarpaddingh(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } void @@ -3113,6 +3120,7 @@ setbarpaddingv(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } void @@ -3131,6 +3139,7 @@ setbarpaddingh(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } void @@ -3147,6 +3156,7 @@ setbarheight(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } void @@ -3158,6 +3168,7 @@ setbpgaps(const Arg *arg) updatebarpos(selmon); arrange(selmon); + updatebars(); } void @@ -3170,13 +3181,15 @@ resetbarheight(const Arg *arg) for (bar = selmon->bar; bar; bar = bar->next) XMoveResizeWindow(dpy, bar->win, bar->bx, bar->by, bar->bw, bar->bh); arrange(selmon); + updatebars(); } void togglegaps(const Arg *arg) { - enablegaps = !enablegaps; - arrange(selmon); + enablegaps = !enablegaps; + arrange(selmon); + updatebars(); } void @@ -5693,6 +5706,9 @@ void updatebars(void) { Bar *bar; + int x_pad = sp; + int y_pad = vp; + Monitor *m; XSetWindowAttributes wa = { .override_redirect = True, @@ -5704,12 +5720,10 @@ updatebars(void) XClassHint ch = {"speedwm", "speedwm"}; for (m = mons; m; m = m->next) { #if USETAGPREVIEW - if (!m->tagwin) { - m->tagwin = XCreateWindow(dpy, root, m->wx + sp, m->bar->by + vp / 2 + bh + gapsizeov / 2, m->mw / scalepreview, m->mh / scalepreview, 0, - depth, CopyFromParent, visual, CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa); - XDefineCursor(dpy, m->tagwin, cursor[CurNormal]->cursor); - XUnmapWindow(dpy, m->tagwin); - } + m->tagwin = XCreateWindow(dpy, root, m->wx + x_pad, bar->by + bh + y_pad + selmon->gapsizeov / 2, m->mw / scalepreview, m->mh / scalepreview, 0, + depth, CopyFromParent, visual, CWOverrideRedirect|CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &wa); + XDefineCursor(dpy, m->tagwin, cursor[CurNormal]->cursor); + XUnmapWindow(dpy, m->tagwin); #endif for (bar = m->bar; bar; bar = bar->next) {