]> git.mdlowis.com Git - archive/afm.git/commitdiff
swap focused frame with previous with wK
authora bellenir <a@bellenir.com>
Fri, 1 Aug 2014 05:17:37 +0000 (05:17 +0000)
committera bellenir <a@bellenir.com>
Fri, 1 Aug 2014 05:17:37 +0000 (05:17 +0000)
source/input.c
source/screen.c
source/screen.h

index 6e7d7a8ff74caaae107c0ecbf4abe58060ded4a4..9a43a6b1b13e5e040054ec459737fdab815fbd9e 100644 (file)
@@ -115,6 +115,7 @@ static binding_t Default_Bindings[] = {
     { "wm", &screen_focus_master },
     { "w\n", &screen_swap_with_master },
     { "wJ", &screen_swap_frame_next },
+    { "wK", &screen_swap_frame_prev },
     { "R",  &handle_force_redraw }
 };
 
index 1c88e079358611afeb5c5ea8611c584852211446..047cd3a4202bb8c94181da3db0bf568a7a8d895c 100644 (file)
@@ -180,3 +180,31 @@ void screen_swap_frame_next(void){
     }
 }
 
+void screen_swap_frame_prev(void){
+    if(Frame_List->head != Frame_List->tail){
+        list_node_t* focused = state_get_focused_node();
+        if(focused != Frame_List->head){
+            list_node_t* prev = list_prev(Frame_List, focused);
+            Frame_T* ffoc = (Frame_T*)focused->contents;
+            Frame_T* fpre = (Frame_T*)prev->contents;
+            mem_retain(fpre);
+            list_delete_node(Frame_List, prev);
+            list_insert_after(Frame_List, focused, fpre);
+            stoopid_redraw(ffoc, fpre);
+        }else{
+            list_node_t* prev = Frame_List->tail;
+            list_node_t* new_node = NULL;
+            Frame_T* ffoc = (Frame_T*)focused->contents;
+            Frame_T* fpre = (Frame_T*)prev->contents;
+            mem_retain(ffoc);
+            mem_retain(fpre);
+            list_delete_node(Frame_List, focused);
+            list_delete_node(Frame_List, prev);
+            list_insert_after(Frame_List, NULL, fpre);
+            new_node = list_insert_after(Frame_List, Frame_List->tail, ffoc);
+            state_set_focused_node(new_node);
+            stoopid_redraw(ffoc, fpre);
+        }
+    }
+}
+
index 2049bd6a0d91a8abf8b7cbcd60085b6681613673..f08111751b4335759c8c9d342ab751060012f1af 100644 (file)
@@ -17,5 +17,6 @@ void screen_focus_prev(void);
 void screen_focus_master(void);
 void screen_swap_with_master(void);
 void screen_swap_frame_next(void);
+void screen_swap_frame_prev(void);
 
 #endif /* SCREEN_H */