workdir_scroll_to_bot(state_get_focused_frame()->workdir);
}
static void handle_page_up(void){
- workdir_jump_up(state_get_focused_frame()->workdir);
+ screen_frame_page_up(state_get_focused_frame());
}
static void handle_page_down(void){
- workdir_jump_down(state_get_focused_frame()->workdir);
+ screen_frame_page_down(state_get_focused_frame());
}
}
}
+int realrows(frame_t* p_frame){
+ int rows, cols;
+ getmaxyx(p_frame->p_win, rows, cols);
+ return rows - FrameTopBuffer - FrameBotBuffer;
+}
+void screen_frame_page_up(frame_t* p_frame){
+ workdir_set_idx(p_frame->workdir, p_frame->workdir->idx - realrows(p_frame));
+}
+
+void screen_frame_page_down(frame_t* p_frame){
+ workdir_set_idx(p_frame->workdir, p_frame->workdir->idx+realrows(p_frame));
+}
DIRECTORY = 1
};
+void screen_frame_page_up(frame_t* p_frame);
+void screen_frame_page_down(frame_t* p_frame);
+
#endif /* SCREEN_H */
void workdir_set_idx(WorkDir_T* wd, int idx){
wd->idx = idx;
if(idx < 0) wd->idx = 0;
- if(idx >= vec_size(wd->vfiles)) wd->idx = vec_size(wd->vfiles)-1;
+ else if(idx >= vec_size(wd->vfiles))
+ wd->idx = vec_size(wd->vfiles)-1;
state_set_screen_dirty(true);
}
workdir_set_idx(wd, vec_size(wd->vfiles) - 1);
}
-void workdir_jump_up(WorkDir_T* wd){
- workdir_set_idx(wd, wd->idx - 20);
-}
-
-void workdir_jump_down(WorkDir_T* wd){
- workdir_set_idx(wd, wd->idx + 20);
-}
-
void workdir_cd(WorkDir_T* wd) {
char* newpath = ((File_T*) vec_at(wd->vfiles, wd->idx))->path;
if(is_dir(newpath)){
void workdir_next(WorkDir_T*);
+void workdir_set_idx(WorkDir_T* wd, int idx);
+
void workdir_cd(WorkDir_T*);
void workdir_ls(WorkDir_T*);
void workdir_scroll_to_top(WorkDir_T* wd);
void workdir_scroll_to_bot(WorkDir_T* wd);
-void workdir_jump_down(WorkDir_T* wd);
-void workdir_jump_up(WorkDir_T* wd);
#endif /* WORKDIR_H */