From f293d7d586bebcc69fc51751202a25b6b6cbe2a6 Mon Sep 17 00:00:00 2001 From: a bellenir Date: Tue, 29 Jul 2014 21:40:35 +0000 Subject: [PATCH] use prev. node function when moving focus backwards --- source/screen.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/source/screen.c b/source/screen.c index 985eaee..e283f7d 100644 --- a/source/screen.c +++ b/source/screen.c @@ -132,13 +132,26 @@ void screen_focus_next(void){ state_set_screen_dirty(true); } +//TODO: this should be a function in list.h +list_node_t* find_prev_node(list_node_t* node){ + list_node_t* prev = (Frame_List->head == node) ? NULL : Frame_List->head; + while(prev && prev->next != node) prev=prev->next; + return prev; +} + void screen_focus_prev(void){ + list_node_t* prev = find_prev_node(state_get_focused_node()); + if(!prev) prev = Frame_List->tail; + state_set_focused_node(prev); + state_set_screen_dirty(true); + /* int i = get_focused_frame_index(); if(i >= 0){ list_node_t* prev = (i == 0) ? Frame_List->tail : list_at(Frame_List, i-1); if(prev) state_set_focused_node(prev); state_set_screen_dirty(true); } + */ } void screen_focus_master(void){ @@ -146,13 +159,6 @@ void screen_focus_master(void){ state_set_screen_dirty(true); } -//TODO: this should be a function in list.h -list_node_t* find_prev_node(list_node_t* node){ - list_node_t* prev = (Frame_List->head == node) ? NULL : Frame_List->head; - while(prev && prev->next != node) prev=prev->next; - return prev; -} - void screen_swap_with_master(void){ list_node_t* focused = state_get_focused_node(); list_node_t* master = Frame_List->head; -- 2.52.0