sites

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

commit 51f0efd4e547d963c84ad55aeb648aae3717d479
parent b90c604bb6590767112ab00b5135c792e1157ef3
Author: iressa <ian@eonndev.com>
Date:   Sun, 10 Oct 2021 15:21:54 -0400

[dwm] [staticstatus]

Fixing issue where invoking buttonpress on a non-status monitor would still treat the click region as if the status was drawn there.

Diffstat:
Adwm.suckless.org/patches/staticstatus/dwm-staticstatus-20211010-a786211.diff | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 83 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/staticstatus/dwm-staticstatus-20211010-a786211.diff b/dwm.suckless.org/patches/staticstatus/dwm-staticstatus-20211010-a786211.diff @@ -0,0 +1,83 @@ +diff --git a/config.def.h b/config.def.h +index a2ac963..e485712 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -18,6 +18,9 @@ static const char *colors[][3] = { + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, + }; + ++/* staticstatus */ ++static const int statmonval = 0; ++ + /* tagging */ + static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +diff --git a/dwm.c b/dwm.c +index 5e4d494..e5fa599 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -266,7 +266,7 @@ static Cur *cursor[CurLast]; + static Clr **scheme; + static Display *dpy; + static Drw *drw; +-static Monitor *mons, *selmon; ++static Monitor *mons, *selmon, *statmon; + static Window root, wmcheckwin; + + /* configuration, allows nested code to access above variables */ +@@ -440,7 +440,7 @@ buttonpress(XEvent *e) + arg.ui = 1 << i; + } else if (ev->x < x + blw) + click = ClkLtSymbol; +- else if (ev->x > selmon->ww - (int)TEXTW(stext)) ++ else if (m == statmon && ev->x > selmon->ww - (int)TEXTW(stext)) + click = ClkStatusText; + else + click = ClkWinTitle; +@@ -703,7 +703,7 @@ drawbar(Monitor *m) + Client *c; + + /* draw status first so it can be overdrawn by tags later */ +- if (m == selmon) { /* status is only drawn on selected monitor */ ++ if (m == statmon) { /* status is only drawn on user-defined status monitor */ + drw_setscheme(drw, scheme[SchemeNorm]); + tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ + drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0); +@@ -1879,7 +1879,7 @@ updategeom(void) + else + mons = createmon(); + } +- for (i = 0, m = mons; i < nn && m; m = m->next, i++) ++ for (i = 0, m = mons; i < nn && m; m = m->next, i++){ + if (i >= n + || unique[i].x_org != m->mx || unique[i].y_org != m->my + || unique[i].width != m->mw || unique[i].height != m->mh) +@@ -1892,6 +1892,10 @@ updategeom(void) + m->mh = m->wh = unique[i].height; + updatebarpos(m); + } ++ if(i == statmonval) ++ statmon = m; ++ } ++ + } else { /* less monitors available nn < n */ + for (i = nn; i < n; i++) { + for (m = mons; m && m->next; m = m->next); +@@ -1905,6 +1909,8 @@ updategeom(void) + } + if (m == selmon) + selmon = mons; ++ if (m == statmon) ++ statmon = mons; + cleanupmon(m); + } + } +@@ -1992,7 +1998,7 @@ updatestatus(void) + { + if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) + strcpy(stext, "dwm-"VERSION); +- drawbar(selmon); ++ drawbar(statmon); + } + + void