From 2da48644837cd51cfe5a9628140866f06e049e50 Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Tue, 28 Jul 2009 06:48:44 +0000 Subject: If select-layout is not given an argument, repply the last layout used in the window, if any. --- layout-set.c | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'layout-set.c') diff --git a/layout-set.c b/layout-set.c index 4433d0cf..8c54a166 100644 --- a/layout-set.c +++ b/layout-set.c @@ -74,36 +74,47 @@ layout_set_select(struct window *w, u_int layout) if (layout_sets[layout].arrange != NULL) layout_sets[layout].arrange(w); - w->layout = layout; + w->lastlayout = layout; return (layout); } u_int layout_set_next(struct window *w) { - u_int layout = w->layout; + u_int layout; + + if (w->lastlayout == -1) + layout = 0; + else { + layout = w->lastlayout + 1; + if (layout > nitems(layout_sets) - 1) + layout = 0; + } if (layout_sets[layout].arrange != NULL) layout_sets[layout].arrange(w); - - w->layout++; - if (w->layout > nitems(layout_sets) - 1) - w->layout = 0; + w->lastlayout = layout; return (layout); } u_int layout_set_previous(struct window *w) { - u_int layout = w->layout; + u_int layout; + + if (w->lastlayout == -1) + layout = nitems(layout_sets) - 1; + else { + layout = w->lastlayout; + if (layout == 0) + layout = nitems(layout_sets) - 1; + else + layout--; + } if (layout_sets[layout].arrange != NULL) layout_sets[layout].arrange(w); - - if (w->layout == 0) - w->layout = nitems(layout_sets) - 1; - else - w->layout--; + w->lastlayout = layout; return (layout); } -- cgit v1.2.3