- if (wmeta->active->prev != 0)
- {
- wmeta->active = wmeta->active->prev;
- }
- else
- {
- wmeta->active = wmeta->chain_end;
- }
- }
- }
-}
-
-
-
-extern uint8_t shift_active_win_old(struct WinMeta * wmeta, char dir)
-{
- if (0 != wmeta->active /* No shifting with less */
- && wmeta->chain_start != wmeta->chain_end /* than 2 windows visible. */
- && (dir == 'f' || dir == 'b')) /* and wrong dir char. */
- {
- struct Win * w_shift = wmeta->active, * w_p, * w_p_next;
-
- /* Check if shifting will lead to wrapping. */
- char wrap = 0;
- if ( (dir == 'f' && w_shift == wmeta->chain_end)
- || (dir == 'b' && w_shift == wmeta->chain_start))
- {
- wrap = 1;
- }
-
- /* Suspend all visible windows, remember their order in wins[]. */
- uint16_t i, i_max;
- for (w_p = wmeta->chain_start, i_max = 1;
- w_p != wmeta->chain_end;
- w_p = w_p->next)
- {
- i_max++;
- }
- struct Win ** wins = malloc(i_max * sizeof(struct Win *));
- if (NULL == wins)
- {
- return 1;
- }
- for (i = 0, w_p = wmeta->chain_start;
- i < i_max;
- i++)
- {
- w_p_next = w_p->next;
- suspend_win(wmeta, w_p);
- wins[i] = w_p;
- w_p = w_p_next;
- }
-
- /* Re-append all previously visible windows in the new order. */
- if (wrap)
- {
- if (dir == 'f')