diff options
-rw-r--r-- | editor.c | 10 | ||||
-rw-r--r-- | editor.h | 1 | ||||
-rw-r--r-- | window.c | 6 |
3 files changed, 13 insertions, 4 deletions
@@ -27,9 +27,7 @@ void init_editor(struct editor_state* editor) editor->syntax = NULL; editor->mode = EDITOR_MODE_NORMAL; - window_get_size(&editor->screen_rows, &editor->screen_cols); - - editor->screen_rows -= 2; + editor_update_screen_size(editor); } void editor_set_status_message(struct editor_state* editor, const char* format, ...) @@ -255,6 +253,12 @@ void editor_scroll(struct editor_state* editor) editor->col_offset = editor->cursor_display_x - editor->screen_cols + 1; } +void editor_update_screen_size(struct editor_state *editor) +{ + window_get_size(&editor->screen_rows, &editor->screen_cols); + editor->screen_rows -= 2; +} + void editor_draw_rows(struct editor_state* editor, struct append_buffer* buffer) { int y; @@ -54,6 +54,7 @@ void editor_add_line_below(struct editor_state* editor); void editor_find(struct editor_state* editor); void editor_scroll(struct editor_state* editor); +void editor_update_screen_size(struct editor_state *); void editor_draw_rows(struct editor_state* editor, struct append_buffer* buffer); void editor_draw_status_bar(struct editor_state* editor, struct append_buffer* buffer); void editor_draw_message_bar(struct editor_state* editor, struct append_buffer* buffer); @@ -23,7 +23,7 @@ void window_init(const char *title, int rows, int cols) int window_width = cols * font.width; int window_height = rows * font.height; - window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, window_width, window_height, 0); + window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, window_width, window_height, SDL_WINDOW_RESIZABLE); if (window == NULL) fatal_error("Failed to create window: %s\n", SDL_GetError()); @@ -59,6 +59,10 @@ int window_handle_event(struct editor_state *editor) } editor_insert_char(editor, *e.text.text); break; + case SDL_WINDOWEVENT: + if (e.window.event == SDL_WINDOWEVENT_SIZE_CHANGED) + editor_update_screen_size(editor); + break; } return 1; } |