summaryrefslogtreecommitdiff
path: root/patch/pertag.c
diff options
context:
space:
mode:
authorBear <bear@bengtsson.win>2021-12-27 09:29:58 +0000
committerBear <bear@bengtsson.win>2021-12-27 09:29:58 +0000
commit69262b01ced79c2d776fab9b889926d1816a1e7a (patch)
treef304cd6fa8734e83a7772d07dc9b484781565155 /patch/pertag.c
Added DWM
Diffstat (limited to 'patch/pertag.c')
-rw-r--r--patch/pertag.c78
1 files changed, 78 insertions, 0 deletions
diff --git a/patch/pertag.c b/patch/pertag.c
new file mode 100644
index 0000000..f534023
--- /dev/null
+++ b/patch/pertag.c
@@ -0,0 +1,78 @@
+struct Pertag {
+ unsigned int curtag, prevtag; /* current and previous tag */
+ int nmasters[NUMTAGS + 1]; /* number of windows in master area */
+ #if FLEXTILE_DELUXE_LAYOUT
+ int nstacks[NUMTAGS + 1]; /* number of windows in primary stack area */
+ int ltaxis[NUMTAGS + 1][LTAXIS_LAST];
+ const Layout *ltidxs[NUMTAGS + 1][3]; /* matrix of tags and layouts indexes */
+ #else
+ const Layout *ltidxs[NUMTAGS + 1][2]; /* matrix of tags and layouts indexes */
+ #endif // FLEXTILE_DELUXE_LAYOUT
+ float mfacts[NUMTAGS + 1]; /* mfacts per tag */
+ unsigned int sellts[NUMTAGS + 1]; /* selected layouts */
+ #if PERTAGBAR_PATCH
+ int showbars[NUMTAGS + 1]; /* display bar for the current tag */
+ #endif // PERTAGBAR_PATCH
+ #if SWAPFOCUS_PATCH
+ Client *prevclient[NUMTAGS + 1];
+ #endif // SWAPFOCUS_PATCH
+ #if ZOOMSWAP_PATCH
+ Client *prevzooms[NUMTAGS + 1]; /* store zoom information */
+ #endif // ZOOMSWAP_PATCH
+ #if PERTAG_VANITYGAPS_PATCH && VANITYGAPS_PATCH
+ int enablegaps[NUMTAGS + 1];
+ unsigned int gaps[NUMTAGS + 1];
+ #endif // PERTAG_VANITYGAPS_PATCH | VANITYGAPS_PATCH
+};
+
+void
+pertagview(const Arg *arg)
+{
+ int i;
+ unsigned int tmptag;
+ if (arg->ui & TAGMASK) {
+ selmon->pertag->prevtag = selmon->pertag->curtag;
+ selmon->tagset[selmon->seltags] = arg->ui & TAGMASK;
+ #if SCRATCHPADS_PATCH
+ if (arg->ui == ~SPTAGMASK)
+ #else
+ if (arg->ui == ~0)
+ #endif // SCRATCHPADS_PATCH
+ selmon->pertag->curtag = 0;
+ else {
+ for (i = 0; !(arg->ui & 1 << i); i++) ;
+ selmon->pertag->curtag = i + 1;
+ }
+ } else {
+ tmptag = selmon->pertag->prevtag;
+ selmon->pertag->prevtag = selmon->pertag->curtag;
+ selmon->pertag->curtag = tmptag;
+ }
+ selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag];
+ #if FLEXTILE_DELUXE_LAYOUT
+ selmon->nstack = selmon->pertag->nstacks[selmon->pertag->curtag];
+ #endif // FLEXTILE_DELUXE_LAYOUT
+ selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag];
+ selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag];
+ selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];
+ selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1];
+
+ #if PERTAG_VANITYGAPS_PATCH && VANITYGAPS_PATCH
+ selmon->gappoh = (selmon->pertag->gaps[selmon->pertag->curtag] & 0xff) >> 0;
+ selmon->gappov = (selmon->pertag->gaps[selmon->pertag->curtag] & 0xff00) >> 8;
+ selmon->gappih = (selmon->pertag->gaps[selmon->pertag->curtag] & 0xff0000) >> 16;
+ selmon->gappiv = (selmon->pertag->gaps[selmon->pertag->curtag] & 0xff000000) >> 24;
+ #endif // PERTAG_VANITYGAPS_PATCH | VANITYGAPS_PATCH
+
+ #if FLEXTILE_DELUXE_LAYOUT
+ selmon->ltaxis[LAYOUT] = selmon->pertag->ltaxis[selmon->pertag->curtag][LAYOUT];
+ selmon->ltaxis[MASTER] = selmon->pertag->ltaxis[selmon->pertag->curtag][MASTER];
+ selmon->ltaxis[STACK] = selmon->pertag->ltaxis[selmon->pertag->curtag][STACK];
+ selmon->ltaxis[STACK2] = selmon->pertag->ltaxis[selmon->pertag->curtag][STACK2];
+ #endif // FLEXTILE_DELUXE_LAYOUT
+ #if PERTAGBAR_PATCH
+ if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag])
+ togglebar(NULL);
+ #endif // PERTAGBAR_PATCH
+}
+