summaryrefslogtreecommitdiffstats
path: root/session.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2007-09-20 08:21:59 +0000
committerNicholas Marriott <nicholas.marriott@gmail.com>2007-09-20 08:21:59 +0000
commit9c0b51cd5df342aa96048948d42323df6e6d3dc0 (patch)
treef49e281f4971bf9ce22ac981210db2bd21c870c1 /session.c
parentb1782e1b3d2df83c68314427d4ea65e4e14698eb (diff)
Wrap next/prev.
Diffstat (limited to 'session.c')
-rw-r--r--session.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/session.c b/session.c
index 79e394d2..463bc040 100644
--- a/session.c
+++ b/session.c
@@ -1,4 +1,4 @@
-/* $Id: session.c,v 1.7 2007-08-27 20:36:52 nicm Exp $ */
+/* $Id: session.c,v 1.8 2007-09-20 08:21:59 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -155,13 +155,19 @@ int
session_next(struct session *s)
{
struct window *w;
+ u_int n;
if (s->window == NULL)
return (-1);
w = window_next(&s->windows, s->window);
- if (w == NULL)
- return (-1);
+ if (w == NULL) {
+ n = 0;
+ while ((w = ARRAY_ITEM(&s->windows, n)) == NULL)
+ n++;
+ if (w == s->window)
+ return (1);
+ }
s->window = w;
return (0);
}
@@ -176,8 +182,11 @@ session_previous(struct session *s)
return (-1);
w = window_previous(&s->windows, s->window);
- if (w == NULL)
- return (-1);
+ if (w == NULL) {
+ w = ARRAY_LAST(&s->windows);
+ if (w == s->window)
+ return (1);
+ }
s->window = w;
return (0);
}