From 2288fb796177fd8643f563e1e150f7a4cd477077 Mon Sep 17 00:00:00 2001 From: Lawrence Teo Date: Wed, 4 Jan 2012 21:32:16 -0500 Subject: [PATCH] Skip iconified windows correctly. This fixes a bug where the focus_next and focus_prev actions will get "stuck" when an iconified window is in the way. ok marco --- scrotwm.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/scrotwm.c b/scrotwm.c index 9beaa18..c2aece7 100644 --- a/scrotwm.c +++ b/scrotwm.c @@ -2489,9 +2489,13 @@ focus(struct swm_region *r, union arg *args) /* skip iconics */ if (winfocus && winfocus->iconic) { - TAILQ_FOREACH_REVERSE(winfocus, wl, ws_win_list, entry) + while (winfocus != cur_focus) { + if (winfocus == NULL) + winfocus = TAILQ_LAST(wl, ws_win_list); if (winfocus->iconic == 0) break; + winfocus = TAILQ_PREV(winfocus, ws_win_list, entry); + } } break; @@ -2503,9 +2507,13 @@ focus(struct swm_region *r, union arg *args) /* skip iconics */ if (winfocus && winfocus->iconic) { - TAILQ_FOREACH(winfocus, wl, entry) + while (winfocus != cur_focus) { + if (winfocus == NULL) + winfocus = TAILQ_FIRST(wl); if (winfocus->iconic == 0) break; + winfocus = TAILQ_NEXT(winfocus, entry); + } } break; -- 1.7.10.4