forked from e16/e16
1
0
Fork 0

Fix "focus prev" when focus list is not enabled.

SVN revision: 35974
This commit is contained in:
Kim Woelders 2008-09-13 16:00:43 +00:00
parent 639f242ffe
commit d49d116453
1 changed files with 12 additions and 4 deletions

View File

@ -173,8 +173,12 @@ FocusRaisePending(void)
focus_pending_raise = NULL; focus_pending_raise = NULL;
} }
/*
* dir > 0: Focus previously focused window
* else : Focus least recently focused window
*/
static void static void
FocusPrevEwin(void) FocusCycleEwin(int dir)
{ {
EWin *const *lst; EWin *const *lst;
EWin *ewin; EWin *ewin;
@ -184,6 +188,8 @@ FocusPrevEwin(void)
if (num <= 1) if (num <= 1)
return; return;
dir = (dir > 0) ? 1 : -1;
for (j = 0; j < num; j++) for (j = 0; j < num; j++)
{ {
if (lst[j] == Mode.focuswin) if (lst[j] == Mode.focuswin)
@ -191,7 +197,7 @@ FocusPrevEwin(void)
} }
for (i = 1; i < num; i++) for (i = 1; i < num; i++)
{ {
ewin = lst[(j + i) % num]; ewin = lst[(j + i * dir + num) % num];
if (!FocusEwinValid(ewin, 1, 0, 0) || ewin->props.skip_focuslist) if (!FocusEwinValid(ewin, 1, 0, 0) || ewin->props.skip_focuslist)
continue; continue;
FocusToEWin(ewin, FOCUS_PREV); FocusToEWin(ewin, FOCUS_PREV);
@ -962,17 +968,19 @@ FocusIpc(const char *params)
} }
else if (!strncmp(cmd, "next", 2)) else if (!strncmp(cmd, "next", 2))
{ {
/* Focus previously focused window */
if (Conf.warplist.enable) if (Conf.warplist.enable)
WarpFocus(1); WarpFocus(1);
else else
FocusPrevEwin(); FocusCycleEwin(1);
} }
else if (!strncmp(cmd, "prev", 2)) else if (!strncmp(cmd, "prev", 2))
{ {
/* Focus least recently focused window */
if (Conf.warplist.enable) if (Conf.warplist.enable)
WarpFocus(-1); WarpFocus(-1);
else else
FocusPrevEwin(); FocusCycleEwin(-1);
} }
} }