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; 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) { Usz view_to_scrolled_grid(Usz field_len, Usz visual_coord, int scroll_offset) {
if (field_len == 0) if (field_len == 0)
return 0; return 0;
@ -1570,20 +1594,20 @@ int main(int argc, char** argv) {
goto quit; goto quit;
case KEY_UP: case KEY_UP:
case AND_CTRL('k'): case AND_CTRL('k'):
app_move_cursor_relative(&app_state, -1, 0); app_dir_input(&app_state, App_dir_up);
break; break;
case AND_CTRL('j'): case AND_CTRL('j'):
case KEY_DOWN: case KEY_DOWN:
app_move_cursor_relative(&app_state, 1, 0); app_dir_input(&app_state, App_dir_down);
break; break;
case KEY_BACKSPACE: case KEY_BACKSPACE:
case AND_CTRL('h'): case AND_CTRL('h'):
case KEY_LEFT: case KEY_LEFT:
app_move_cursor_relative(&app_state, 0, -1); app_dir_input(&app_state, App_dir_left);
break; break;
case AND_CTRL('l'): case AND_CTRL('l'):
case KEY_RIGHT: case KEY_RIGHT:
app_move_cursor_relative(&app_state, 0, 1); app_dir_input(&app_state, App_dir_right);
break; break;
case AND_CTRL('z'): case AND_CTRL('z'):
case AND_CTRL('u'): case AND_CTRL('u'):

Loading…
Cancel
Save