can scroll up and down in a file
This commit is contained in:
26
edit.jai
26
edit.jai
@@ -200,15 +200,15 @@ handle_enter :: () {
|
|||||||
new_line := [..]u8.{};
|
new_line := [..]u8.{};
|
||||||
array_add(*new_line, array_view(current_line.*, cursor_x));
|
array_add(*new_line, array_view(current_line.*, cursor_x));
|
||||||
|
|
||||||
array_insert_at(*lines, new_line, cursor_y + 1);
|
array_insert_at(*lines, new_line, cursor_line_index + 1);
|
||||||
current_line.count = cursor_x;
|
current_line.count = cursor_x;
|
||||||
|
|
||||||
cursor_y += 1;
|
handle_arrow(.ARROW_DOWN);
|
||||||
cursor_x = 0;
|
cursor_x = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_backspace :: () {
|
handle_backspace :: () {
|
||||||
if cursor_x == 0 && cursor_y == 0 {
|
if cursor_x == 0 && cursor_y == 0 && first_line == 0 {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,7 +219,7 @@ handle_backspace :: () {
|
|||||||
prev_count := prev_line.count;
|
prev_count := prev_line.count;
|
||||||
array_add(prev_line, current_line.*);
|
array_add(prev_line, current_line.*);
|
||||||
array_remove_at(*lines, cursor_line_index);
|
array_remove_at(*lines, cursor_line_index);
|
||||||
cursor_y -= 1;
|
handle_arrow(.ARROW_UP);
|
||||||
cursor_x = prev_count;
|
cursor_x = prev_count;
|
||||||
} else {
|
} else {
|
||||||
array_remove_at(current_line, cursor_x - 1);
|
array_remove_at(current_line, cursor_x - 1);
|
||||||
@@ -232,13 +232,19 @@ handle_arrow :: (key_code: Input.Key_Code) {
|
|||||||
|
|
||||||
if key_code == {
|
if key_code == {
|
||||||
case .ARROW_UP;
|
case .ARROW_UP;
|
||||||
cursor_y = ifx cursor_y == 0
|
if cursor_y == 0 && first_line == 0 return;
|
||||||
then 0
|
|
||||||
else cursor_y - 1;
|
if cursor_y == 0 {
|
||||||
|
first_line -= 1;
|
||||||
|
} else {
|
||||||
|
cursor_y -= 1;
|
||||||
|
}
|
||||||
case .ARROW_DOWN;
|
case .ARROW_DOWN;
|
||||||
cursor_y = ifx cursor_y == visible_lines.count - 1
|
if cursor_y == visible_lines.count - 1 {
|
||||||
then visible_lines.count - 1
|
first_line = min(first_line + 1, lines.count);
|
||||||
else cursor_y + 1;
|
} else {
|
||||||
|
cursor_y += 1;
|
||||||
|
}
|
||||||
|
|
||||||
case .ARROW_LEFT;
|
case .ARROW_LEFT;
|
||||||
if cursor_x == 0 && cursor_y != 0 {
|
if cursor_x == 0 && cursor_y != 0 {
|
||||||
|
|||||||
Reference in New Issue
Block a user