dwm

Kris's build of dwm
git clone git clone https://git.krisyotam.com/krisyotam/dwm.git
Log | Files | Refs | README | LICENSE

shift.c (1334B)


      1 static Arg
      2 shift(const Arg *arg, int clients)
      3 {
      4 	Arg shifted;
      5 	Client *c;
      6 	unsigned int tagmask = 0;
      7 
      8 	#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
      9 	shifted.ui = selmon->tagset[selmon->seltags] & ~SPTAGMASK;
     10 	#else
     11 	shifted.ui = selmon->tagset[selmon->seltags];
     12 	#endif // SCRATCHPADS_PATCH
     13 
     14 	#if TAGSYNC_PATCH
     15 	Monitor *origselmon = selmon;
     16 	for (selmon = mons; selmon; selmon = selmon->next)
     17 	#endif // TAGSYNC_PATCH
     18 	for (c = selmon->clients; c && clients; c = c->next) {
     19 		if (c == selmon->sel)
     20 			continue;
     21 		#if STICKY_PATCH
     22 		if (c->issticky)
     23 			continue;
     24 		#endif // STICKY_PATCH
     25 		#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
     26 		if (!(c->tags & SPTAGMASK))
     27 			tagmask |= c->tags;
     28 		#elif SCRATCHPAD_ALT_1_PATCH
     29 		if (!(c->tags & SCRATCHPAD_MASK))
     30 			tagmask |= c->tags;
     31 		#else
     32 		tagmask |= c->tags;
     33 		#endif // SCRATCHPADS_PATCH
     34 	}
     35 	#if TAGSYNC_PATCH
     36 	selmon = origselmon;
     37 	#endif // TAGSYNC_PATCH
     38 
     39 	do {
     40 		if (arg->i > 0) // left circular shift
     41 			shifted.ui = (shifted.ui << arg->i) | (shifted.ui >> (NUMTAGS - arg->i));
     42 		else // right circular shift
     43 			shifted.ui = (shifted.ui >> -arg->i) | (shifted.ui << (NUMTAGS + arg->i));
     44 		#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
     45 		shifted.ui &= ~SPTAGMASK;
     46 		#endif // SCRATCHPADS_PATCH
     47 	} while (tagmask && !(shifted.ui & tagmask));
     48 
     49 	return shifted;
     50 }