- winfocus = TAILQ_PREV(cur_focus, ws_win_list, entry);
- if (winfocus == NULL)
- winfocus = TAILQ_LAST(wl, ws_win_list);
- break;
+ if (cur_focus->transient)
+ winfocus = find_window(cur_focus->transient);
+ else if (ws->focus == cur_focus) {
+ /* if in max_stack try harder */
+ if (ws->cur_layout->flags & SWM_L_FOCUSPREV) {
+ if (cur_focus != ws->focus_prev)
+ winfocus = ws->focus_prev;
+ else if (cur_focus != ws->focus)
+ winfocus = ws->focus;
+ }