tHandle cycling through windows in reverse order - spkp - Stacking wayland compositor
 (HTM) git clone git://git.z3bra.org/spkp.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
 (DIR) commit 15b481aaaf63f5556727a33b5cb9507d3c84662a
 (DIR) parent e26f1e61fb72fb2608340ba987cf65e533767f8d
 (HTM) Author: Willy Goiffon <dev@z3bra.org>
       Date:   Fri, 13 Nov 2020 09:49:42 +0100
       
       Handle cycling through windows in reverse order
       
       Diffstat:
         M compositor.c                        |      20 ++++++++++++--------
       
       1 file changed, 12 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/compositor.c b/compositor.c
       t@@ -953,23 +953,27 @@ kb_terminate(struct state *server, union keyarg *arg)
        void
        kb_alttab(struct state *server, union keyarg *arg)
        {
       -        (void)arg;
       +        int reverse;
                struct window *w;
       -        struct wl_list *elm;
       +        struct wl_list *list, *elm;
        
                if (wl_list_empty(&server->windows))
                        return;
        
       -        elm = server->windows.prev;
       +        reverse = arg->i;
        
       -        if (elm == &server->windows)
       -                elm = server->windows.next;
       +        list = &server->windows;
       +        elm = list->prev;
        
       -        w = wl_container_of(elm, w, link);
       +        if (reverse) {
       +                elm = list->next;
       +                list = list->prev;
       +        }
        
       -        /* re-insert last window on top of the stack */
                wl_list_remove(elm);
       -        wl_list_insert(&server->windows, elm);
       +        wl_list_insert(list, elm);
       +
       +        w = wl_container_of(elm, w, link);
        
                focus(w);
        }