src/WindowMaker.h | 2 ++ src/cycling.c | 7 +++++++ src/defaults.c | 6 ++++++ src/switchpanel.c | 8 ++++++-- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/WindowMaker.h b/src/WindowMaker.h index e234478..2a2475e 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -365,6 +365,8 @@ typedef struct WPreferences { char windows_cycling; /* windoze cycling */ char circ_raise; /* raise window after Alt-tabbing */ + char show_miniaturized; /* show miniaturized windows in Alt-tabbing panel */ + char show_hidden; /* show hidden windows in Alt-tabbing panel */ char ignore_focus_click; diff --git a/src/cycling.c b/src/cycling.c index 86bdb39..54ed570 100644 --- a/src/cycling.c +++ b/src/cycling.c @@ -107,6 +107,10 @@ StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next) scr->flags.doing_alt_tab = 1; swpanel = wInitSwitchPanel(scr, wwin, scr->current_workspace); + if (swpanel == NULL) { + newFocused = NULL; + goto exiting; + } oldFocused = wwin; if (swpanel) { @@ -237,6 +241,9 @@ StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next) break; } } + +exiting: + if (keymap) XFreeModifiermap(keymap); diff --git a/src/defaults.c b/src/defaults.c index 22eb7ae..884db8b 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -419,6 +419,12 @@ WDefaultEntry optionList[] = { {"CirculateRaise", "NO", NULL, &wPreferences.circ_raise, getBool, NULL }, + {"ShowMiniaturized","YES", NULL, + &wPreferences.show_miniaturized, getBool, NULL + }, + {"ShowHidden", "YES", NULL, + &wPreferences.show_hidden, getBool, NULL + }, {"Superfluous", "NO", NULL, &wPreferences.superfluous, getBool, NULL }, diff --git a/src/switchpanel.c b/src/switchpanel.c index 51298ce..b8b4bb1 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -409,7 +409,9 @@ static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace for (wwin= curwin; wwin; wwin= wwin->prev) { if (((!fl && canReceiveFocus(wwin) > 0) || (fl && canReceiveFocus(wwin) < 0)) && (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window) && - (wwin->flags.mapped || include_unmapped)) { + (wwin->flags.mapped || include_unmapped) && + (wPreferences.show_miniaturized || !wwin->flags.miniaturized ) && + (wPreferences.show_hidden || !wwin->flags.hidden)) { WMAddToArray(windows, wwin); } } @@ -421,7 +423,9 @@ static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace for (wwin= curwin; wwin && wwin != curwin; wwin= wwin->prev) { if (((!fl && canReceiveFocus(wwin) > 0) || (fl && canReceiveFocus(wwin) < 0)) && (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window) && - (wwin->flags.mapped || include_unmapped)) { + (wwin->flags.mapped || include_unmapped) && + (wPreferences.show_miniaturized || !wwin->flags.miniaturized ) && + (wPreferences.show_hidden || !wwin->flags.hidden)) { WMAddToArray(windows, wwin); } }