From a6b1833b41dc44b6fa1327996d579024ed9ba72d Mon Sep 17 00:00:00 2001 From: Iain Patterson Date: Sun, 2 Jun 2013 15:33:27 +0100 Subject: [PATCH] Preference to open the switchpanel without selecting a window. If the new preference SwitchPanelOnlyOpen is set to YES, pressing alt-tab or similar shortcut will only open the panel without automatically switching to the next window. Shortcuts will continue to function normally once the panel is open. Users can enable the new preference if they find themselves regularly opening the switchpanel just to visualise which windows are open, or to initiate same-class cycling. The default value of the new preference is NO. Behaviour is unchanged unless the preference is explicitly enabled with the following command: $ wdwrite WindowMaker SwitchPanelOnlyOpen YES --- NEWS | 6 ++++++ src/WindowMaker.h | 1 + src/cycling.c | 2 +- src/defaults.c | 2 ++ 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index ed03cf05..499c3c0b 100644 --- a/NEWS +++ b/NEWS @@ -81,6 +81,12 @@ command: $ wdwrite WindowMaker StrictWindozeCycling NO +If you find yourself regularly opening the switchpanel just to visualise open +windows, you can run the following command to force the first "FocusNextKey" +or similar shortcut to open the panel without switching to a new window. + +$ wdwrite WindowMaker SwitchPanelOnlyOpen YES + --- 0.95.2 diff --git a/src/WindowMaker.h b/src/WindowMaker.h index bc034d93..100f75b5 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -419,6 +419,7 @@ typedef struct WPreferences { char cycle_active_head_only; /* Cycle only windows on the active head */ char cycle_ignore_minimized; /* Ignore minimized windows when cycling */ char strict_windoze_cycle; /* don't close switchpanel when shift is released */ + char panel_only_open; /* Only open the switchpanel; don't switch */ /* All delays here are in ms. 0 means instant auto-action. */ int clip_auto_raise_delay; /* Delay after which the clip will be raised when entered */ diff --git a/src/cycling.c b/src/cycling.c index bae12be7..78449b4e 100644 --- a/src/cycling.c +++ b/src/cycling.c @@ -129,7 +129,7 @@ void StartWindozeCycle(WWindow * wwin, XEvent * event, Bool next, Bool class_onl if (swpanel) { - if (wwin->flags.mapped) + if (wwin->flags.mapped && !wPreferences.panel_only_open) newFocused = wSwitchPanelSelectNext(swpanel, !next, True, False); else newFocused = wSwitchPanelSelectFirst(swpanel, False); diff --git a/src/defaults.c b/src/defaults.c index 50db1d44..dde87b51 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -478,6 +478,8 @@ WDefaultEntry optionList[] = { &wPreferences.single_click, getBool, NULL, NULL, NULL}, {"StrictWindozeCycle", "YES", NULL, &wPreferences.strict_windoze_cycle, getBool, NULL, NULL, NULL}, + {"SwitchPanelOnlyOpen", "NO", NULL, + &wPreferences.panel_only_open, getBool, NULL, NULL, NULL}, /* style options */ -- 2.11.4.GIT