{ "wk", &screen_focus_prev },
{ "wm", &screen_focus_master },
{ "w\n", &screen_swap_with_master },
+ { "wJ", &screen_swap_frame_next },
{ "R", &handle_force_redraw }
};
state_set_refresh_state(REFRESH_CURR_WIN);
}
+//for when force refresh (R) fixes the screen,
+//but setting screen REFRESH_ALL_WINS doesnt
+//necessary when moving frames around
+static void stoopid_redraw(Frame_T* a, Frame_T* b){
+ frame_resize(a, 1, 1);
+ frame_move(a, 0, 0);
+ frame_resize(b, 1, 1);
+ frame_move(b, 1, 1);
+ state_set_refresh_state(REFRESH_ALL_WINS);
+}
+
void screen_swap_with_master(void){
list_node_t* focused = state_get_focused_node();
list_node_t* master = Frame_List->head;
// reset focused window (since old focused destroyed)
state_set_focused_node(Frame_List->head);
// Resize and move os they don't overlap when we place them.
- frame_resize((Frame_T*)focused->contents, 1, 1);
- frame_move((Frame_T*)focused->contents, 0, 0);
- frame_resize((Frame_T*)master->contents, 1, 1);
- frame_move((Frame_T*)master->contents, 1, 1);
- state_set_refresh_state(REFRESH_ALL_WINS);
+ stoopid_redraw(fmast, ffoc);
+ }
+}
+
+void screen_swap_frame_next(void){
+ if(Frame_List->head != Frame_List->tail){
+ list_node_t* focused = state_get_focused_node();
+ list_node_t* next = focused->next;
+ list_node_t* new_node = NULL;
+ Frame_T* ffoc = (Frame_T*)focused->contents;
+ mem_retain(ffoc);
+ list_delete_node(Frame_List, focused);
+ new_node = list_insert_after(Frame_List, next, ffoc);
+ state_set_focused_node(new_node);
+ stoopid_redraw(ffoc, (Frame_T*) ((NULL == next) ? Frame_List->tail->contents : next->contents));
}
}