home · contact · privacy
In shift_active_win() slightly improved formatting and solved a "why is this needed...
[plomrogue] / src / windows.c
index 46124c5639a8b4c0b984e274adc573d5aa4bf235..7e0ba723a3d3978850bac3ab99709de8c73ab064 100644 (file)
@@ -436,16 +436,18 @@ extern void shift_active_win(struct WinMeta * wmeta, char dir)
             wrap = 1;
         }
 
-        /* Suspend all visible windows. */
+        /* Suspend all visible windows, remember their order in wins[]. */
         uint16_t i, i_max;
-        for (i_max = 1, w_p = wmeta->chain_start;
+        for (w_p  = wmeta->chain_start, i_max = 1;
              w_p != wmeta->chain_end;
-             i_max++)
+             w_p  = w_p->next)
         {
-            w_p = w_p->next;
+            i_max++;
         }
         struct Win ** wins = malloc(i_max * sizeof(struct Win *));
-        for (i = 0, w_p = wmeta->chain_start; i < i_max; i++)
+        for (i = 0, w_p = wmeta->chain_start;
+             i < i_max;
+             i++)
         {
             w_p_next = w_p->next;
             suspend_win(wmeta, w_p);
@@ -492,7 +494,7 @@ extern void shift_active_win(struct WinMeta * wmeta, char dir)
         }
         free(wins);
 
-        wmeta->active = w_shift;      /* TODO: Is this necessary? If so, why? */
+        wmeta->active = w_shift;  /* Otherwise lastly appended win is active. */
     }
 }