fixed scroll location on file change bug
This commit is contained in:
parent
bfb02009d6
commit
b6f86f4f8d
35
4ed.cpp
35
4ed.cpp
|
@ -3803,6 +3803,8 @@ App_Step_Sig(app_step){
|
||||||
active = (panel == cmd->panel);
|
active = (panel == cmd->panel);
|
||||||
summary = (active)?(active_input):(dead_input);
|
summary = (active)?(active_input):(dead_input);
|
||||||
|
|
||||||
|
view->changed_context_in_step = 0;
|
||||||
|
|
||||||
View_Step_Result result = step_file_view(system, view, active_view, summary);
|
View_Step_Result result = step_file_view(system, view, active_view, summary);
|
||||||
if (result.animating){
|
if (result.animating){
|
||||||
app_result.animating = 1;
|
app_result.animating = 1;
|
||||||
|
@ -3817,23 +3819,26 @@ App_Step_Sig(app_step){
|
||||||
|
|
||||||
for (dll_items(panel, used_panels)){
|
for (dll_items(panel, used_panels)){
|
||||||
view = panel->view;
|
view = panel->view;
|
||||||
Assert(view->current_scroll);
|
|
||||||
active = (panel == cmd->panel);
|
|
||||||
summary = (active)?(active_input):(dead_input);
|
|
||||||
if (panel == mouse_panel && !input->mouse.out_of_window){
|
|
||||||
summary.mouse = mouse_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
GUI_Scroll_Vars *vars = view->current_scroll;
|
if (view->changed_context_in_step == 0){
|
||||||
// TODO(allen): I feel like the scroll context should actually not
|
Assert(view->current_scroll);
|
||||||
// be allowed to change in here at all.
|
active = (panel == cmd->panel);
|
||||||
result = do_step_file_view(system, view, panel->inner, active,
|
summary = (active)?(active_input):(dead_input);
|
||||||
&summary, *vars, view->scroll_region);
|
if (panel == mouse_panel && !input->mouse.out_of_window){
|
||||||
if (result.is_animating){
|
summary.mouse = mouse_state;
|
||||||
app_result.animating = 1;
|
}
|
||||||
|
|
||||||
|
GUI_Scroll_Vars *vars = view->current_scroll;
|
||||||
|
// TODO(allen): I feel like the scroll context should actually not
|
||||||
|
// be allowed to change in here at all.
|
||||||
|
result = do_step_file_view(system, view, panel->inner, active,
|
||||||
|
&summary, *vars, view->scroll_region);
|
||||||
|
if (result.is_animating){
|
||||||
|
app_result.animating = 1;
|
||||||
|
}
|
||||||
|
*vars = result.vars;
|
||||||
|
view->scroll_region = result.region;
|
||||||
}
|
}
|
||||||
*vars = result.vars;
|
|
||||||
view->scroll_region = result.region;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,15 +137,15 @@ enum Color_View_Mode{
|
||||||
|
|
||||||
struct File_Viewing_Data{
|
struct File_Viewing_Data{
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
|
|
||||||
Full_Cursor temp_highlight;
|
Full_Cursor temp_highlight;
|
||||||
i32 temp_highlight_end_pos;
|
i32 temp_highlight_end_pos;
|
||||||
b32 show_temp_highlight;
|
b32 show_temp_highlight;
|
||||||
|
|
||||||
b32 unwrapped_lines;
|
b32 unwrapped_lines;
|
||||||
b32 show_whitespace;
|
b32 show_whitespace;
|
||||||
b32 file_locked;
|
b32 file_locked;
|
||||||
|
|
||||||
i32 line_count, line_max;
|
i32 line_count, line_max;
|
||||||
f32 *line_wrap_y;
|
f32 *line_wrap_y;
|
||||||
};
|
};
|
||||||
|
@ -234,6 +234,8 @@ struct View{
|
||||||
char dest_[256];
|
char dest_[256];
|
||||||
String dest;
|
String dest;
|
||||||
|
|
||||||
|
b32 changed_context_in_step;
|
||||||
|
|
||||||
// theme stuff
|
// theme stuff
|
||||||
View *hot_file_view;
|
View *hot_file_view;
|
||||||
u32 *palette;
|
u32 *palette;
|
||||||
|
@ -302,7 +304,7 @@ view_file_height(View *view){
|
||||||
|
|
||||||
struct View_Iter{
|
struct View_Iter{
|
||||||
View *view;
|
View *view;
|
||||||
|
|
||||||
Editing_File *file;
|
Editing_File *file;
|
||||||
View *skip;
|
View *skip;
|
||||||
Panel *used_panels;
|
Panel *used_panels;
|
||||||
|
@ -312,7 +314,7 @@ struct View_Iter{
|
||||||
internal View_Iter
|
internal View_Iter
|
||||||
file_view_iter_next(View_Iter iter){
|
file_view_iter_next(View_Iter iter){
|
||||||
View *view;
|
View *view;
|
||||||
|
|
||||||
for (iter.panel = iter.panel->next; iter.panel != iter.used_panels; iter.panel = iter.panel->next){
|
for (iter.panel = iter.panel->next; iter.panel != iter.used_panels; iter.panel = iter.panel->next){
|
||||||
view = iter.panel->view;
|
view = iter.panel->view;
|
||||||
if (view != iter.skip && (view->file_data.file == iter.file || iter.file == 0)){
|
if (view != iter.skip && (view->file_data.file == iter.file || iter.file == 0)){
|
||||||
|
@ -320,7 +322,7 @@ file_view_iter_next(View_Iter iter){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return(iter);
|
return(iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,9 +333,9 @@ file_view_iter_init(Editing_Layout *layout, Editing_File *file, View *skip){
|
||||||
result.panel = result.used_panels;
|
result.panel = result.used_panels;
|
||||||
result.file = file;
|
result.file = file;
|
||||||
result.skip = skip;
|
result.skip = skip;
|
||||||
|
|
||||||
result = file_view_iter_next(result);
|
result = file_view_iter_next(result);
|
||||||
|
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3070,6 +3072,7 @@ view_show_menu(View *view, Command_Map *gui_map){
|
||||||
view->map = gui_map;
|
view->map = gui_map;
|
||||||
view->showing_ui = VUI_Menu;
|
view->showing_ui = VUI_Menu;
|
||||||
view->current_scroll = &view->gui_scroll;
|
view->current_scroll = &view->gui_scroll;
|
||||||
|
view->changed_context_in_step = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
@ -3077,6 +3080,7 @@ view_show_config(View *view, Command_Map *gui_map){
|
||||||
view->map = gui_map;
|
view->map = gui_map;
|
||||||
view->showing_ui = VUI_Config;
|
view->showing_ui = VUI_Config;
|
||||||
view->current_scroll = &view->gui_scroll;
|
view->current_scroll = &view->gui_scroll;
|
||||||
|
view->changed_context_in_step = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
@ -3097,6 +3101,7 @@ view_show_interactive(System_Functions *system, View *view,
|
||||||
|
|
||||||
hot_directory_clean_end(&models->hot_directory);
|
hot_directory_clean_end(&models->hot_directory);
|
||||||
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
hot_directory_reload(system, &models->hot_directory, &models->working_set);
|
||||||
|
view->changed_context_in_step = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
@ -3107,6 +3112,7 @@ view_show_theme(View *view, Command_Map *gui_map){
|
||||||
view->color = super_color_create(0xFF000000);
|
view->color = super_color_create(0xFF000000);
|
||||||
view->current_color_editing = 0;
|
view->current_color_editing = 0;
|
||||||
view->current_scroll = &view->gui_scroll;
|
view->current_scroll = &view->gui_scroll;
|
||||||
|
view->changed_context_in_step = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void
|
inline void
|
||||||
|
@ -3121,6 +3127,7 @@ view_show_file(View *view){
|
||||||
view->showing_ui = VUI_None;
|
view->showing_ui = VUI_None;
|
||||||
view->current_scroll = &view->recent->scroll;
|
view->current_scroll = &view->recent->scroll;
|
||||||
view->recent->scroll.max_y = view_compute_max_target_y(view);
|
view->recent->scroll.max_y = view_compute_max_target_y(view);
|
||||||
|
view->changed_context_in_step = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void
|
internal void
|
||||||
|
|
|
@ -22,8 +22,8 @@ popd
|
||||||
|
|
||||||
pushd ..\build
|
pushd ..\build
|
||||||
REM call "..\code\buildsuper.bat" ..\code\4coder_default_bindings.cpp
|
REM call "..\code\buildsuper.bat" ..\code\4coder_default_bindings.cpp
|
||||||
REM call "..\code\buildsuper.bat" ..\code\power\4coder_experiments.cpp
|
call "..\code\buildsuper.bat" ..\code\power\4coder_experiments.cpp
|
||||||
call "..\code\buildsuper.bat" ..\code\power\4coder_casey.cpp
|
REM call "..\code\buildsuper.bat" ..\code\power\4coder_casey.cpp
|
||||||
if %ERRORLEVEL% neq 0 (set FirstError=1)
|
if %ERRORLEVEL% neq 0 (set FirstError=1)
|
||||||
|
|
||||||
set EXPORTS=/EXPORT:app_get_functions
|
set EXPORTS=/EXPORT:app_get_functions
|
||||||
|
|
Loading…
Reference in New Issue