From 20692bea017353bcaf069625bcf3bda6eed4ad51 Mon Sep 17 00:00:00 2001 From: bakkeby Date: Tue, 5 Jul 2022 13:51:27 +0200 Subject: [PATCH] Refactoring shift functions ref. #270 --- patch/include.c | 3 +++ patch/include.h | 3 +++ patch/shift.c | 46 ++++++++++++++++++++++++++++++++++++++++ patch/shift.h | 1 + patch/shiftboth.c | 16 +------------- patch/shiftswaptags.c | 15 +------------ patch/shifttag.c | 15 +------------ patch/shifttagclients.c | 44 +------------------------------------- patch/shiftview.c | 15 +------------ patch/shiftviewclients.c | 44 +------------------------------------- 10 files changed, 59 insertions(+), 143 deletions(-) create mode 100644 patch/shift.c create mode 100644 patch/shift.h diff --git a/patch/include.c b/patch/include.c index 5318ea2..6f9768a 100644 --- a/patch/include.c +++ b/patch/include.c @@ -232,6 +232,9 @@ #if SETBORDERPX_PATCH #include "setborderpx.c" #endif +#if SHIFTBOTH_PATCH || SHIFTSWAPTAGS_PATCH || SHIFTTAG_PATCH || SHIFTTAGCLIENTS_PATCH || SHIFTVIEW_PATCH || SHIFTVIEW_CLIENTS_PATCH +#include "shift.c" +#endif #if SHIFTBOTH_PATCH #include "shiftboth.c" #endif diff --git a/patch/include.h b/patch/include.h index 6803c5d..2ad61df 100644 --- a/patch/include.h +++ b/patch/include.h @@ -234,6 +234,9 @@ #if SETBORDERPX_PATCH #include "setborderpx.h" #endif +#if SHIFTBOTH_PATCH || SHIFTSWAPTAGS_PATCH || SHIFTTAG_PATCH || SHIFTTAGCLIENTS_PATCH || SHIFTVIEW_PATCH || SHIFTVIEW_CLIENTS_PATCH +#include "shift.h" +#endif #if SHIFTBOTH_PATCH #include "shiftboth.h" #endif diff --git a/patch/shift.c b/patch/shift.c new file mode 100644 index 0000000..355e645 --- /dev/null +++ b/patch/shift.c @@ -0,0 +1,46 @@ +static Arg +shift(const Arg *arg, int clients) +{ + Arg shifted; + Client *c; + unsigned int tagmask = 0; + + #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH + shifted.ui = selmon->tagset[selmon->seltags]; + #else + shifted.ui = selmon->tagset[selmon->seltags]; + #endif // SCRATCHPADS_PATCH + + #if TAGSYNC_PATCH + Monitor *origselmon = selmon; + for (selmon = mons; selmon; selmon = selmon->next) + #endif // TAGSYNC_PATCH + for (c = selmon->clients; c && clients; c = c->next) { + if (c == selmon->sel) + continue; + #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH + if (!(c->tags & SPTAGMASK)) + tagmask |= c->tags; + #elif SCRATCHPAD_ALT_1_PATCH + if (!(c->tags & SCRATCHPAD_MASK)) + tagmask |= c->tags; + #else + tagmask |= c->tags; + #endif // SCRATCHPADS_PATCH + } + #if TAGSYNC_PATCH + selmon = origselmon; + #endif // TAGSYNC_PATCH + + do { + if (arg->i > 0) // left circular shift + shifted.ui = (shifted.ui << arg->i) | (shifted.ui >> (NUMTAGS - arg->i)); + else // right circular shift + shifted.ui = (shifted.ui >> -arg->i) | (shifted.ui << (NUMTAGS + arg->i)); + #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH + shifted.ui &= ~SPTAGMASK; + #endif // SCRATCHPADS_PATCH + } while (tagmask && !(shifted.ui & tagmask)); + + return shifted; +} diff --git a/patch/shift.h b/patch/shift.h new file mode 100644 index 0000000..45f1665 --- /dev/null +++ b/patch/shift.h @@ -0,0 +1 @@ +static Arg shift(const Arg *arg, int clients); diff --git a/patch/shiftboth.c b/patch/shiftboth.c index 5c7c916..d51d4ac 100644 --- a/patch/shiftboth.c +++ b/patch/shiftboth.c @@ -1,21 +1,7 @@ void shiftboth(const Arg *arg) { - Arg shifted; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui = selmon->tagset[selmon->seltags]; - #else - shifted.ui = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - - if (arg->i > 0) /* left circular shift */ - shifted.ui = ((shifted.ui << arg->i) | (shifted.ui >> (NUMTAGS - arg->i))); - else /* right circular shift */ - shifted.ui = ((shifted.ui >> -arg->i) | (shifted.ui << (NUMTAGS + arg->i))); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH - + Arg shifted = shift(arg, 0); tag(&shifted); view(&shifted); } diff --git a/patch/shiftswaptags.c b/patch/shiftswaptags.c index d9f797a..abf6047 100644 --- a/patch/shiftswaptags.c +++ b/patch/shiftswaptags.c @@ -2,19 +2,6 @@ void shiftswaptags(const Arg *arg) { - Arg shifted; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui = selmon->tagset[selmon->seltags]; - #else - shifted.ui = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - - if (arg->i > 0) /* left circular shift */ - shifted.ui = ((shifted.ui << arg->i) | (shifted.ui >> (NUMTAGS - arg->i))); - else /* right circular shift */ - shifted.ui = ((shifted.ui >> -arg->i) | (shifted.ui << (NUMTAGS + arg->i))); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH + Arg shifted = shift(arg, 0); swaptags(&shifted); } diff --git a/patch/shifttag.c b/patch/shifttag.c index 97365f1..0f9dcea 100644 --- a/patch/shifttag.c +++ b/patch/shifttag.c @@ -2,19 +2,6 @@ void shifttag(const Arg *arg) { - Arg shifted; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui = selmon->tagset[selmon->seltags]; - #else - shifted.ui = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - - if (arg->i > 0) /* left circular shift */ - shifted.ui = ((shifted.ui << arg->i) | (shifted.ui >> (NUMTAGS - arg->i))); - else /* right circular shift */ - shifted.ui = ((shifted.ui >> -arg->i) | (shifted.ui << (NUMTAGS + arg->i))); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH + Arg shifted = shift(arg, 0); tag(&shifted); } diff --git a/patch/shifttagclients.c b/patch/shifttagclients.c index e8da31d..f672395 100644 --- a/patch/shifttagclients.c +++ b/patch/shifttagclients.c @@ -2,48 +2,6 @@ void shifttagclients(const Arg *arg) { - Arg shifted; - Client *c; - unsigned int tagmask = 0; - - #if TAGSYNC_PATCH - Monitor *origselmon = selmon; - for (selmon = mons; selmon; selmon = selmon->next) - #endif // TAGSYNC_PATCH - for (c = selmon->clients; c; c = c->next) { - if (c == selmon->sel) - continue; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - if (!(c->tags & SPTAGMASK)) - tagmask = tagmask | c->tags; - #elif SCRATCHPAD_ALT_1_PATCH - if (!(c->tags & SCRATCHPAD_MASK)) - tagmask = tagmask | c->tags; - #else - tagmask = tagmask | c->tags; - #endif // SCRATCHPADS_PATCH - } - #if TAGSYNC_PATCH - selmon = origselmon; - #endif // TAGSYNC_PATCH - - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui = selmon->tagset[selmon->seltags] & ~SPTAGMASK; - #else - shifted.ui = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - - do { - if (arg->i > 0) // left circular shift - shifted.ui = (shifted.ui << arg->i) - | (shifted.ui >> (NUMTAGS - arg->i)); - else // right circular shift - shifted.ui = (shifted.ui >> -arg->i) - | (shifted.ui << (NUMTAGS + arg->i)); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH - } while (tagmask && !(shifted.ui & tagmask)); - + Arg shifted = shift(arg, 1); tag(&shifted); } diff --git a/patch/shiftview.c b/patch/shiftview.c index efb5674..d3038d6 100644 --- a/patch/shiftview.c +++ b/patch/shiftview.c @@ -1,19 +1,6 @@ void shiftview(const Arg *arg) { - Arg shifted; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - unsigned int seltagset = selmon->tagset[selmon->seltags] & ~SPTAGMASK; - #else - unsigned int seltagset = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - if (arg->i > 0) // left circular shift - shifted.ui = (seltagset << arg->i) | (seltagset >> (NUMTAGS - arg->i)); - else // right circular shift - shifted.ui = (seltagset >> -arg->i) | (seltagset << (NUMTAGS + arg->i)); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH - + Arg shifted = shift(arg, 0); view(&shifted); } diff --git a/patch/shiftviewclients.c b/patch/shiftviewclients.c index f64f42b..7abebb2 100644 --- a/patch/shiftviewclients.c +++ b/patch/shiftviewclients.c @@ -1,48 +1,6 @@ void shiftviewclients(const Arg *arg) { - Arg shifted; - Client *c; - unsigned int tagmask = 0; - - #if TAGSYNC_PATCH - Monitor *origselmon = selmon; - for (selmon = mons; selmon; selmon = selmon->next) - #endif // TAGSYNC_PATCH - for (c = selmon->clients; c; c = c->next) { - if (c == selmon->sel) - continue; - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - if (!(c->tags & SPTAGMASK)) - tagmask = tagmask | c->tags; - #elif SCRATCHPAD_ALT_1_PATCH - if (!(c->tags & SCRATCHPAD_MASK)) - tagmask = tagmask | c->tags; - #else - tagmask = tagmask | c->tags; - #endif // SCRATCHPADS_PATCH - } - #if TAGSYNC_PATCH - selmon = origselmon; - #endif // TAGSYNC_PATCH - - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui = selmon->tagset[selmon->seltags] & ~SPTAGMASK; - #else - shifted.ui = selmon->tagset[selmon->seltags]; - #endif // SCRATCHPADS_PATCH - - do { - if (arg->i > 0) // left circular shift - shifted.ui = (shifted.ui << arg->i) - | (shifted.ui >> (NUMTAGS - arg->i)); - else // right circular shift - shifted.ui = (shifted.ui >> -arg->i) - | (shifted.ui << (NUMTAGS + arg->i)); - #if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH - shifted.ui &= ~SPTAGMASK; - #endif // SCRATCHPADS_PATCH - } while (tagmask && !(shifted.ui & tagmask)); - + Arg shifted = shift(arg, 1); view(&shifted); }