--- WindowMaker-0.91.0/src/event.c.vns 2005-05-18 21:40:15 +0400 +++ WindowMaker-0.91.0/src/event.c 2005-05-18 21:42:02 +0400 @@ -1410,6 +1410,10 @@ OpenWindowMenu(wwin, wwin->frame_x, wwin->frame_y+wwin->frame->top_width, True); break; + case WKBD_ALLMINIMIZE: + CloseWindowMenu(scr); + wHideAll(scr); + break; case WKBD_MINIATURIZE: if (ISMAPPED(wwin) && ISFOCUSED(wwin) && !WFLAGP(wwin, no_miniaturizable)) { --- WindowMaker-0.91.0/src/actions.c.vns 2005-05-18 21:40:15 +0400 +++ WindowMaker-0.91.0/src/actions.c 2005-05-18 21:40:16 +0400 @@ -1295,6 +1295,57 @@ +// ADDED BY HMEPAS +void wHideAll(WScreen *scr) +{ + WWindow *wwin; + WWindow **windows; + Window FocusedWin; + WMenu *menu; + unsigned int wcount = 0; + int FocusState; + int i; + + if (!scr) + return; + + menu = scr->switch_menu; + + windows = malloc( sizeof(WWindow *) ); + + if (menu != NULL) { + for(i=0;ientry_no;i++) { + windows[wcount] = (WWindow *) menu->entries[i]->clientdata; + wcount++; + windows = realloc(windows, sizeof(WWindow *) * (wcount+1) ); + } + } else { + wwin = scr->focused_window; + + while(wwin) { + windows[wcount] = wwin; + wcount++; + windows = realloc(windows, sizeof(WWindow *) * (wcount+1) ); + wwin = wwin->prev; + + } + } + + for(i=0;i < wcount; i++) { + wwin = windows[i]; + if (wwin->frame->workspace == scr->current_workspace + && !(wwin->flags.miniaturized||wwin->flags.hidden) + && !wwin->flags.internal_window + && !WFLAGP(wwin, no_miniaturizable) + ) + { + wwin->flags.skip_next_animation = 1; + wIconifyWindow(wwin); + } + } +} + + void wHideOtherApplications(WWindow *awin) { --- WindowMaker-0.91.0/src/actions.h.vns 2004-10-12 21:53:07 +0400 +++ WindowMaker-0.91.0/src/actions.h 2005-05-18 21:40:16 +0400 @@ -69,5 +69,8 @@ void wUnfullscreenWindow(WWindow *wwin); +// ADDED BY HMEPAS TO MINIMIZE ALL WINDOWS ON CURRENT WORKSPACE +void wHideAll(WScreen *src); + #endif --- WindowMaker-0.91.0/src/defaults.c.vns 2005-05-18 21:40:16 +0400 +++ WindowMaker-0.91.0/src/defaults.c 2005-05-18 21:40:16 +0400 @@ -705,6 +705,9 @@ NULL, getKeybind, setKeyGrab }, #endif /* LITE */ + {"AllMinimizeKey", "None", (void*)WKBD_ALLMINIMIZE, + NULL, getKeybind, setKeyGrab + }, {"WindowMenuKey", "None", (void*)WKBD_WINDOWMENU, NULL, getKeybind, setKeyGrab }, --- WindowMaker-0.91.0/src/keybind.h.vns 2004-10-12 21:55:38 +0400 +++ WindowMaker-0.91.0/src/keybind.h 2005-05-18 21:43:50 +0400 @@ -77,12 +77,13 @@ #define WKBD_WINDOW10 44 #define WKBD_SWITCH_SCREEN 45 +#define WKBD_ALLMINIMIZE 46 #ifdef KEEP_XKB_LOCK_STATUS -# define WKBD_TOGGLE 46 -# define WKBD_TMP 47 +# define WKBD_TOGGLE 47 +# define WKBD_TMP 48 #else -# define WKBD_TMP 46 +# define WKBD_TMP 47 #endif #ifdef VIRTUAL_DESKTOP