From 4bdc1e6d219a6343c6da30b7b1199150856353cb Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Sat, 9 Feb 2019 14:48:53 -0800 Subject: [PATCH] Touch up to the edit position stack --- 4ed.cpp | 24 ++++++++--- 4ed_api_implementation.cpp | 26 +++++++----- 4ed_buffer.cpp | 86 -------------------------------------- 4ed_edit.cpp | 60 +++++++------------------- 4ed_file.cpp | 7 +++- 4ed_file.h | 1 + 4ed_history.cpp | 12 ------ 4ed_view.cpp | 73 ++++++++++++++++++++++---------- 4ed_view.h | 2 +- 4ed_view_ui.cpp | 5 ++- 10 files changed, 109 insertions(+), 187 deletions(-) diff --git a/4ed.cpp b/4ed.cpp index 260da0df..34753a75 100644 --- a/4ed.cpp +++ b/4ed.cpp @@ -82,7 +82,9 @@ file_cursor_to_end(System_Functions *system, Models *models, Editing_File *file) continue; } view_cursor_move(system, view, pos); - view->transient.edit_pos.mark = view->transient.edit_pos.cursor.pos; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos.mark = edit_pos.cursor.pos; + view_set_edit_pos(view, edit_pos); } } @@ -1292,8 +1294,9 @@ App_Step_Sig(app_step){ GUI_Scroll_Vars *scroll_vars = 0; i32 max_y = 0; b32 file_scroll = false; + File_Edit_Positions edit_pos = view_get_edit_pos(view); if (!view->transient.ui_mode){ - scroll_vars = &view->transient.edit_pos.scroll; + scroll_vars = &edit_pos.scroll; max_y = view_compute_max_target_y(view); file_scroll = true; } @@ -1311,6 +1314,11 @@ App_Step_Sig(app_step){ app_result.animating = true; } + if (file_scroll){ + // TODO(allen): do(eliminate view_set_edit_pos if it is redundant) + view_set_edit_pos(view, edit_pos); + } + if (memcmp(scroll_vars, &ip_result.scroll, sizeof(*scroll_vars)) != 0){ if (file_scroll){ view_set_scroll(system, view, ip_result.scroll); @@ -1328,9 +1336,10 @@ App_Step_Sig(app_step){ panel != 0; panel = layout_get_next_open_panel(layout, panel)){ View *view = panel->view; - GUI_Scroll_Vars *scroll_vars = &view->transient.edit_pos.scroll; - scroll_vars->scroll_x = (f32)scroll_vars->target_x; - scroll_vars->scroll_y = (f32)scroll_vars->target_y; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos.scroll.scroll_x = (f32)edit_pos.scroll.target_x; + edit_pos.scroll.scroll_y = (f32)edit_pos.scroll.target_y; + view_set_edit_pos(view, edit_pos); } } @@ -1418,11 +1427,14 @@ App_Step_Sig(app_step){ draw_rectangle(target, full, style->theme.colors[Stag_Back]); - GUI_Scroll_Vars *scroll_vars = &view->transient.edit_pos.scroll; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + GUI_Scroll_Vars *scroll_vars = &edit_pos.scroll; b32 active = (panel == active_panel); do_render_file_view(system, view, models, scroll_vars, active_view, inner, active, target); + view_set_edit_pos(view, edit_pos); + u32 margin_color = 0; if (active){ margin_color = style->theme.colors[Stag_Margin_Active]; diff --git a/4ed_api_implementation.cpp b/4ed_api_implementation.cpp index 7bbca17f..9b12909e 100644 --- a/4ed_api_implementation.cpp +++ b/4ed_api_implementation.cpp @@ -66,9 +66,12 @@ fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Live view->buffer_id = vptr->transient.file_data.file->id.id; Assert(data->file != 0); - view->mark = file_compute_cursor(system, data->file, seek_pos(vptr->transient.edit_pos.mark), 0); - view->cursor = vptr->transient.edit_pos.cursor; - view->preferred_x = vptr->transient.edit_pos.preferred_x; + File_Edit_Positions edit_pos = view_get_edit_pos(vptr); + + view->mark = file_compute_cursor(system, data->file, seek_pos(edit_pos.mark), 0); + + view->cursor = edit_pos.cursor; + view->preferred_x = edit_pos.preferred_x; view->view_region = vptr->transient.panel->rect_inner; view->file_region = vptr->transient.file_region; @@ -76,7 +79,7 @@ fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Live view->scroll_vars = vptr->transient.ui_scroll; } else{ - view->scroll_vars = vptr->transient.edit_pos.scroll; + view->scroll_vars = edit_pos.scroll; } } } @@ -1408,9 +1411,10 @@ Reopen_Buffer(Application_Links *app, Buffer_Summary *buffer, Buffer_Reopen_Flag continue; } vptrs[vptr_count] = view_it; - edit_positions[vptr_count] = view_it->transient.edit_pos; - line_numbers[vptr_count] = view_it->transient.edit_pos.cursor.line; - column_numbers[vptr_count] = view_it->transient.edit_pos.cursor.character; + File_Edit_Positions edit_pos = view_get_edit_pos(view_it); + edit_positions[vptr_count] = edit_pos; + line_numbers[vptr_count] = edit_pos.cursor.line; + column_numbers[vptr_count] = edit_pos.cursor.character; view_it->transient.file_data.file = models->scratch_buffer; ++vptr_count; } @@ -1423,7 +1427,7 @@ Reopen_Buffer(Application_Links *app, Buffer_Summary *buffer, Buffer_Reopen_Flag view_set_file(system, models, vptrs[i], file); vptrs[i]->transient.file_data.file = file; - vptrs[i]->transient.edit_pos = edit_positions[i]; + view_set_edit_pos(vptrs[i], edit_positions[i]); Full_Cursor cursor = file_compute_cursor(system, file, seek_line_char(line_numbers[i], column_numbers[i]), 0); view_set_cursor(vptrs[i], cursor, true, file->settings.unwrapped_lines); @@ -1944,15 +1948,17 @@ DOC_SEE(Buffer_Seek) Editing_File *file = vptr->transient.file_data.file; Assert(file != 0); if (!file->is_loading){ + File_Edit_Positions edit_pos = view_get_edit_pos(vptr); if (seek.type != buffer_seek_pos){ result = true; Full_Cursor cursor = file_compute_cursor(system, file, seek, 0); - vptr->transient.edit_pos.mark = cursor.pos; + edit_pos.mark = cursor.pos; } else{ result = true; - vptr->transient.edit_pos.mark = seek.pos; + edit_pos.mark = seek.pos; } + view_set_edit_pos(vptr, edit_pos); fill_view_summary(system, view, vptr, models); } } diff --git a/4ed_buffer.cpp b/4ed_buffer.cpp index e3296504..4420fb4d 100644 --- a/4ed_buffer.cpp +++ b/4ed_buffer.cpp @@ -177,63 +177,6 @@ buffer_batch_edit_update_cursors(Cursor_With_Index *sorted_positions, i32 count, return(shift_amount); } -#if 0 - -internal i32 -buffer_batch_edit_update_cursors(Cursor_With_Index *sorted_positions, i32 count, Buffer_Edit *sorted_edits, i32 edit_count, b32 lean_right){ - Cursor_With_Index *position = sorted_positions; - Cursor_With_Index *end_position = sorted_positions + count; - Buffer_Edit *edit = sorted_edits; - Buffer_Edit *end_edit = sorted_edits + edit_count; - i32 shift_amount = 0; - - if (lean_right){ - for (; edit < end_edit && position < end_position; ++edit){ - i32 start = edit->start; - i32 end = edit->end; - - for (; position->pos < start && position < end_position; ++position){ - position->pos += shift_amount; - } - - i32 new_end = start + edit->len + shift_amount; - for (; position->pos <= end && position < end_position; ++position){ - position->pos = new_end; - } - - shift_amount += (edit->len - (end - start)); - } - } - else{ - for (; edit < end_edit && position < end_position; ++edit){ - i32 start = edit->start; - i32 end = edit->end; - - for (; position->pos < start && position < end_position; ++position){ - position->pos += shift_amount; - } - - i32 new_end = start + shift_amount; - for (; position->pos <= end && position < end_position; ++position){ - position->pos = new_end; - } - - shift_amount += (edit->len - (end - start)); - } - } - - for (; position < end_position; ++position){ - position->pos += shift_amount; - } - - for (; edit < end_edit; ++edit){ - shift_amount += (edit->len - (edit->end - edit->start)); - } - - return(shift_amount); -} -#endif - ////////////////////////////////////// internal i32 @@ -554,35 +497,6 @@ buffer_batch_edit_step(Buffer_Batch_State *state, Gap_Buffer *buffer, Edit_Array return(result); } -#if 0 -internal i32 -buffer_batch_edit_step(Buffer_Batch_State *state, Gap_Buffer *buffer, Buffer_Edit *sorted_edits, char *strings, i32 edit_count, - void *scratch, i32 scratch_size, i32 *request_amount){ - Buffer_Edit *edit = 0; - i32 shift_total = state->shift_total; - i32 result = 0; - - i32 i = state->i; - edit = sorted_edits + i; - for (; i < edit_count; ++i, ++edit){ - i32 start = edit->start + shift_total; - i32 end = edit->end + shift_total; - i32 len = edit->len; - i32 shift_amount = buffer_replace_range_compute_shift(start, end, len); - result = buffer_replace_range(buffer, start, end, strings + edit->str_start, len, shift_amount, scratch, scratch_size, request_amount); - if (result){ - break; - } - shift_total += shift_amount; - } - - state->shift_total = shift_total; - state->i = i; - - return(result); -} -#endif - internal void* buffer_edit_provide_memory(Gap_Buffer *buffer, void *new_data, i32 new_max){ void *result = buffer->data; diff --git a/4ed_edit.cpp b/4ed_edit.cpp index 11da33f4..c479c4d5 100644 --- a/4ed_edit.cpp +++ b/4ed_edit.cpp @@ -114,9 +114,10 @@ edit_fix_markers(System_Functions *system, Models *models, Editing_File *file, E panel = layout_get_next_open_panel(layout, panel)){ View *view = panel->view; if (view->transient.file_data.file == file){ - write_cursor_with_index(cursors, &cursor_count, view->transient.edit_pos.cursor.pos); - write_cursor_with_index(cursors, &cursor_count, view->transient.edit_pos.mark); - write_cursor_with_index(cursors, &cursor_count, view->transient.edit_pos.scroll_i); + File_Edit_Positions edit_pos = view_get_edit_pos(view); + write_cursor_with_index(cursors, &cursor_count, edit_pos.cursor.pos); + write_cursor_with_index(cursors, &cursor_count, edit_pos.mark ); + write_cursor_with_index(cursors, &cursor_count, edit_pos.scroll_i ); } } @@ -139,17 +140,6 @@ edit_fix_markers(System_Functions *system, Models *models, Editing_File *file, E if (cursor_count > 0 || r_cursor_count > 0){ buffer_sort_cursors(cursors, cursor_count); -#if 0 - if (desc.is_batch){ - buffer_batch_edit_update_cursors(cursors, cursor_count, desc.batch, desc.batch_size, false); - buffer_batch_edit_update_cursors(r_cursors, r_cursor_count, desc.batch, desc.batch_size, true); - } - else{ - buffer_update_cursors(cursors, cursor_count, desc.start, desc.end, desc.shift_amount + (desc.end - desc.start), false); - buffer_update_cursors(r_cursors, r_cursor_count, desc.start, desc.end, desc.shift_amount + (desc.end - desc.start), true); - } -#endif - if (edits.count > 1){ buffer_batch_edit_update_cursors( cursors, cursor_count, edits, false); buffer_batch_edit_update_cursors(r_cursors, r_cursor_count, edits, true); @@ -172,16 +162,17 @@ edit_fix_markers(System_Functions *system, Models *models, Editing_File *file, E i32 cursor_pos = cursors[cursor_count++].pos; Full_Cursor new_cursor = file_compute_cursor(system, file, seek_pos(cursor_pos), 0); - GUI_Scroll_Vars scroll = view->transient.edit_pos.scroll; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + GUI_Scroll_Vars scroll = edit_pos.scroll; - view->transient.edit_pos.mark = cursors[cursor_count++].pos; + edit_pos.mark = cursors[cursor_count++].pos; i32 new_scroll_i = cursors[cursor_count++].pos; - if (view->transient.edit_pos.scroll_i != new_scroll_i){ - view->transient.edit_pos.scroll_i = new_scroll_i; + if (edit_pos.scroll_i != new_scroll_i){ + edit_pos.scroll_i = new_scroll_i; - Full_Cursor temp_cursor = file_compute_cursor(system, file, seek_pos(view->transient.edit_pos.scroll_i), 0); + Full_Cursor temp_cursor = file_compute_cursor(system, file, seek_pos(edit_pos.scroll_i), 0); - f32 y_offset = MOD(view->transient.edit_pos.scroll.scroll_y, view->transient.line_height); + f32 y_offset = MOD(edit_pos.scroll.scroll_y, view->transient.line_height); f32 y_position = temp_cursor.wrapped_y; if (file->settings.unwrapped_lines){ y_position = temp_cursor.unwrapped_y; @@ -192,7 +183,9 @@ edit_fix_markers(System_Functions *system, Models *models, Editing_File *file, E scroll.scroll_y = y_position; } - view_set_cursor_and_scroll(view, new_cursor, 1, view->transient.file_data.file->settings.unwrapped_lines, scroll); + // TODO(allen): do(remove view_set_edit_pos from marker unrolling if it is redundant) + view_set_edit_pos(view, edit_pos); + view_set_cursor_and_scroll(view, new_cursor, true, view->transient.file_data.file->settings.unwrapped_lines, scroll); } } @@ -301,31 +294,6 @@ edit_single(System_Functions *system, Models *models, Editing_File *file, Edit e } } -#if 0 -internal Edit_Spec -edit_compute_batch_spec(Heap *heap, Editing_File *file, Buffer_Edit *edits, char *str_base, i32 str_size, - Buffer_Edit *inverse_array, char *inv_str, i32 inv_max, i32 edit_count, i32 batch_type){ - - i32 inv_str_pos = 0; - Buffer_Invert_Batch state = {}; - if (buffer_invert_batch(&state, &file->state.buffer, edits, edit_count, inverse_array, inv_str, &inv_str_pos, inv_max)){ - InvalidCodePath; - } - - i32 first_child = undo_children_push(heap, &file->state.undo.children, edits, edit_count, (u8*)(str_base), str_size); - i32 inverse_first_child = undo_children_push(heap, &file->state.undo.children, inverse_array, edit_count, (u8*)(inv_str), inv_str_pos); - - Edit_Spec spec = {}; - spec.step.type = ED_NORMAL; - spec.step.first_child = first_child; - spec.step.inverse_first_child = inverse_first_child; - spec.step.special_type = batch_type; - spec.step.child_count = edit_count; - spec.step.inverse_child_count = edit_count; - return(spec); -} -#endif - internal void edit_batch(System_Functions *system, Models *models, Editing_File *file, Edit_Array edits, Edit_Behaviors behaviors){ Mem_Options *mem = &models->mem; diff --git a/4ed_file.cpp b/4ed_file.cpp index 929e2459..bc6a13f9 100644 --- a/4ed_file.cpp +++ b/4ed_file.cpp @@ -22,10 +22,12 @@ internal void edit_pos_set_cursor(File_Edit_Positions *edit_pos, Full_Cursor cursor, b32 set_preferred_x, b32 unwrapped_lines){ edit_pos->cursor = cursor; if (set_preferred_x){ - edit_pos->preferred_x = cursor.wrapped_x; if (unwrapped_lines){ edit_pos->preferred_x = cursor.unwrapped_x; } + else{ + edit_pos->preferred_x = cursor.wrapped_x; + } } edit_pos->last_set_type = EditPos_CursorSet; } @@ -51,6 +53,9 @@ edit_pos_pop(Editing_File *file){ edit_pos = file->state.edit_pos_stack[file->state.edit_pos_stack_top]; file->state.edit_pos_stack_top -= 1; } + else{ + edit_pos = file->state.edit_pos_most_recent; + } return(edit_pos); } diff --git a/4ed_file.h b/4ed_file.h index 48adddf6..a9b45444 100644 --- a/4ed_file.h +++ b/4ed_file.h @@ -89,6 +89,7 @@ struct Editing_File_State{ Dirty_State dirty; u32 ignore_behind_os; + File_Edit_Positions edit_pos_most_recent; File_Edit_Positions edit_pos_stack[16]; i32 edit_pos_stack_top; }; diff --git a/4ed_history.cpp b/4ed_history.cpp index 8c1be850..75317fd5 100644 --- a/4ed_history.cpp +++ b/4ed_history.cpp @@ -60,17 +60,6 @@ history__merge_record_ptr_range_to_one_ptr(Record_Ptr_Lookup_Table *lookup, i32 lookup->records[first] = record; } -#if 0 -internal Node* -history__to_node(History *history, i32 index){ - Node *result = 0; - if (0 <= index && index <= history->record_count){ - Node *sentinel = &history->records; - result = history__to_node(sentinel, index); - } - return(result); -} -#else internal Node* history__to_node(History *history, i32 index){ Node *result = 0; @@ -84,7 +73,6 @@ history__to_node(History *history, i32 index){ } return(result); } -#endif //////////////////////////////// diff --git a/4ed_view.cpp b/4ed_view.cpp index d4c18ad9..33135c64 100644 --- a/4ed_view.cpp +++ b/4ed_view.cpp @@ -58,6 +58,19 @@ live_set_free_view(Heap *heap, Lifetime_Allocator *lifetime_allocator, Live_View //////////////////////////////// +internal File_Edit_Positions +view_get_edit_pos(View *view){ + return(view->transient.edit_pos_); +} + +internal void +view_set_edit_pos(View *view, File_Edit_Positions edit_pos){ + view->transient.edit_pos_ = edit_pos; + view->transient.file_data.file->state.edit_pos_most_recent = edit_pos; +} + +//////////////////////////////// + // TODO(allen): Switch over to using an i32 for these. internal f32 view_width(View *view){ @@ -80,7 +93,8 @@ view_get_cursor_xy(View *view){ cursor = &view->transient.file_data.temp_highlight; } else{ - cursor = &view->transient.edit_pos.cursor; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + cursor = &edit_pos.cursor; } Vec2 result = V2(cursor->wrapped_x, cursor->wrapped_y); if (view->transient.file_data.file->settings.unwrapped_lines){ @@ -241,44 +255,52 @@ view_move_cursor_to_view(System_Functions *system, View *view, GUI_Scroll_Vars s internal void view_set_cursor(View *view, Full_Cursor cursor, b32 set_preferred_x, b32 unwrapped_lines){ - edit_pos_set_cursor(&view->transient.edit_pos, cursor, set_preferred_x, unwrapped_lines); - GUI_Scroll_Vars scroll = view->transient.edit_pos.scroll; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos_set_cursor(&edit_pos, cursor, set_preferred_x, unwrapped_lines); + GUI_Scroll_Vars scroll = edit_pos.scroll; if (view_move_view_to_cursor(view, &scroll, 0)){ - view->transient.edit_pos.scroll = scroll; + edit_pos.scroll = scroll; } + view_set_edit_pos(view, edit_pos); } internal void view_set_scroll(System_Functions *system, View *view, GUI_Scroll_Vars scroll){ - edit_pos_set_scroll(&view->transient.edit_pos, scroll); - Full_Cursor cursor = view->transient.edit_pos.cursor; - if (view_move_cursor_to_view(system, view, view->transient.edit_pos.scroll, &cursor, view->transient.edit_pos.preferred_x)){ - view->transient.edit_pos.cursor = cursor; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos_set_scroll(&edit_pos, scroll); + Full_Cursor cursor = edit_pos.cursor; + if (view_move_cursor_to_view(system, view, edit_pos.scroll, &cursor, edit_pos.preferred_x)){ + edit_pos.cursor = cursor; } + view_set_edit_pos(view, edit_pos); } internal void view_set_cursor_and_scroll(View *view, Full_Cursor cursor, b32 set_preferred_x, b32 unwrapped_lines, GUI_Scroll_Vars scroll){ - File_Edit_Positions *edit_pos = &view->transient.edit_pos; - edit_pos_set_cursor(edit_pos, cursor, set_preferred_x, unwrapped_lines); - edit_pos_set_scroll(edit_pos, scroll); - edit_pos->last_set_type = EditPos_None; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos_set_cursor(&edit_pos, cursor, set_preferred_x, unwrapped_lines); + edit_pos_set_scroll(&edit_pos, scroll); + edit_pos.last_set_type = EditPos_None; + view_set_edit_pos(view, edit_pos); } internal Relative_Scrolling view_get_relative_scrolling(View *view){ Vec2 cursor = view_get_cursor_xy(view); + File_Edit_Positions edit_pos = view_get_edit_pos(view); Relative_Scrolling result = {}; - result.scroll_y = cursor.y - view->transient.edit_pos.scroll.scroll_y; - result.target_y = cursor.y - view->transient.edit_pos.scroll.target_y; + result.scroll_y = cursor.y - edit_pos.scroll.scroll_y; + result.target_y = cursor.y - edit_pos.scroll.target_y; return(result); } internal void view_set_relative_scrolling(View *view, Relative_Scrolling scrolling){ Vec2 cursor = view_get_cursor_xy(view); - view->transient.edit_pos.scroll.scroll_y = cursor.y - scrolling.scroll_y; - view->transient.edit_pos.scroll.target_y = round32(clamp_bottom(0.f, cursor.y - scrolling.target_y)); + File_Edit_Positions edit_pos = view_get_edit_pos(view); + edit_pos.scroll.scroll_y = cursor.y - scrolling.scroll_y; + edit_pos.scroll.target_y = round32(clamp_bottom(0.f, cursor.y - scrolling.target_y)); + view_set_edit_pos(view, edit_pos); } internal void @@ -319,18 +341,20 @@ view_set_file(System_Functions *system, Models *models, View *view, Editing_File Editing_File *old_file = view->transient.file_data.file; if (old_file != 0){ file_touch(&models->working_set, old_file); - edit_pos_push(old_file, view->transient.edit_pos); + edit_pos_push(old_file, view_get_edit_pos(view)); } block_zero(&view->transient.file_data, sizeof(view->transient.file_data)); view->transient.file_data.file = file; - view->transient.edit_pos = edit_pos_pop(file); + // TODO(allen): do(set edit pos without updating file when popping) + view->transient.edit_pos_ = edit_pos_pop(file); Font_Pointers font = system->font.get_pointers_by_id(file->settings.font_id); view->transient.line_height = font.metrics->height; - if (view->transient.edit_pos.cursor.line == 0){ + File_Edit_Positions edit_pos = view_get_edit_pos(view); + if (edit_pos.cursor.line == 0){ view_cursor_move(system, view, 0); } } @@ -362,7 +386,8 @@ adjust_views_looking_at_file_to_new_cursor(System_Functions *system, Models *mod View *view = panel->view; if (view->transient.file_data.file == file){ if (!view->transient.file_data.show_temp_highlight){ - i32 pos = view->transient.edit_pos.cursor.pos; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + i32 pos = edit_pos.cursor.pos; Full_Cursor cursor = file_compute_cursor(system, file, seek_pos(pos), 0); view_set_cursor(view, cursor, 1, file->settings.unwrapped_lines); } @@ -1202,8 +1227,9 @@ render_loaded_file_in_view(System_Functions *system, View *view, Models *models, Face_ID font_id = file->settings.font_id; Font_Pointers font = system->font.get_pointers_by_id(font_id); - f32 scroll_x = view->transient.edit_pos.scroll.scroll_x; - f32 scroll_y = view->transient.edit_pos.scroll.scroll_y; + File_Edit_Positions edit_pos = view_get_edit_pos(view); + f32 scroll_x = edit_pos.scroll.scroll_x; + f32 scroll_y = edit_pos.scroll.scroll_y; // NOTE(allen): For now we will temporarily adjust scroll_y to try // to prevent the view moving around until floating sections are added @@ -1218,7 +1244,8 @@ render_loaded_file_in_view(System_Functions *system, View *view, Models *models, render_cursor = file_compute_cursor(system, file, seek_unwrapped_xy(0, scroll_y, 0), true); } - view->transient.edit_pos.scroll_i = render_cursor.pos; + // TODO(allen): do(eliminate scroll_i nonsense) + view->transient.edit_pos_.scroll_i = render_cursor.pos; i32 item_count = 0; i32 end_pos = 0; diff --git a/4ed_view.h b/4ed_view.h index 0b2707b0..e6ca45c5 100644 --- a/4ed_view.h +++ b/4ed_view.h @@ -42,7 +42,7 @@ struct View_Transient{ i32_Rect file_region; i32_Rect scroll_region; - File_Edit_Positions edit_pos; + File_Edit_Positions edit_pos_; b32 ui_mode; UI_Quit_Function_Type *ui_quit; diff --git a/4ed_view_ui.cpp b/4ed_view_ui.cpp index 4fb02073..827ec125 100644 --- a/4ed_view_ui.cpp +++ b/4ed_view_ui.cpp @@ -183,12 +183,13 @@ draw_file_bar(System_Functions *system, Render_Target *target, View *view, Model intbar_draw_string(system, target, &bar, lit(" loading"), base_color); } else{ + File_Edit_Positions edit_pos = view_get_edit_pos(view); char bar_space[526]; String bar_text = make_fixed_width_string(bar_space); append_ss (&bar_text, lit(" L#")); - append_int_to_str(&bar_text, view->transient.edit_pos.cursor.line); + append_int_to_str(&bar_text, edit_pos.cursor.line); append_ss (&bar_text, lit(" C#")); - append_int_to_str(&bar_text, view->transient.edit_pos.cursor.character); + append_int_to_str(&bar_text, edit_pos.cursor.character); append_ss(&bar_text, lit(" -"));