From: Lawrence Teo Date: Thu, 5 Jan 2012 02:32:16 +0000 (-0500) Subject: Skip iconified windows correctly. X-Git-Url: https://jasonwoof.com/gitweb/?a=commitdiff_plain;ds=sidebyside;h=2288fb796177fd8643f563e1e150f7a4cd477077;p=spectrwm.git 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 --- 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;