Browse Source

Split off movement handling

master
cancel 6 years ago
parent
commit
7a27b6ed75
  1. 32
      tui_main.c

32
tui_main.c

@ -1022,6 +1022,30 @@ void app_move_cursor_relative(App_state* a, Isz delta_y, Isz delta_x) {
a->is_draw_dirty = true;
}
typedef enum {
App_dir_up,
App_dir_down,
App_dir_left,
App_dir_right,
} App_dir;
void app_dir_input(App_state* a, App_dir dir) {
switch (dir) {
case App_dir_up:
app_move_cursor_relative(a, -1, 0);
break;
case App_dir_down:
app_move_cursor_relative(a, 1, 0);
break;
case App_dir_left:
app_move_cursor_relative(a, 0, -1);
break;
case App_dir_right:
app_move_cursor_relative(a, 0, 1);
break;
}
}
Usz view_to_scrolled_grid(Usz field_len, Usz visual_coord, int scroll_offset) {
if (field_len == 0)
return 0;
@ -1570,20 +1594,20 @@ int main(int argc, char** argv) {
goto quit;
case KEY_UP:
case AND_CTRL('k'):
app_move_cursor_relative(&app_state, -1, 0);
app_dir_input(&app_state, App_dir_up);
break;
case AND_CTRL('j'):
case KEY_DOWN:
app_move_cursor_relative(&app_state, 1, 0);
app_dir_input(&app_state, App_dir_down);
break;
case KEY_BACKSPACE:
case AND_CTRL('h'):
case KEY_LEFT:
app_move_cursor_relative(&app_state, 0, -1);
app_dir_input(&app_state, App_dir_left);
break;
case AND_CTRL('l'):
case KEY_RIGHT:
app_move_cursor_relative(&app_state, 0, 1);
app_dir_input(&app_state, App_dir_right);
break;
case AND_CTRL('z'):
case AND_CTRL('u'):

Loading…
Cancel
Save