bug fixes a4.0.1
This commit is contained in:
parent
b62543188c
commit
1db0271749
|
@ -1056,7 +1056,8 @@ SCROLL_RULE_SIG(smooth_scroll_rule){
|
|||
}
|
||||
|
||||
#if Custom_Current == Custom_HandmadeHero
|
||||
# include "power/4coder_handmade_hero.cpp"
|
||||
//# include "power/4coder_handmade_hero.cpp"
|
||||
#include "custom_casey.cpp"
|
||||
#endif
|
||||
|
||||
extern "C" GET_BINDING_DATA(get_bindings){
|
||||
|
|
|
@ -252,7 +252,7 @@ get_first_view_with_buffer(Application_Links *app, int buffer_id){
|
|||
for(test = app->get_view_first(app);
|
||||
test.exists;
|
||||
app->get_view_next(app, &test)){
|
||||
if(test.buffer_id == buffer_id){
|
||||
if(test.locked_buffer_id == buffer_id){
|
||||
result = test;
|
||||
break;
|
||||
}
|
||||
|
|
40
4ed.cpp
40
4ed.cpp
|
@ -969,6 +969,8 @@ COMMAND_DECL(reopen){
|
|||
REQ_FILE(file, view);
|
||||
USE_EXCHANGE(exchange);
|
||||
|
||||
if (match(file->name.source_path, file->name.live_name)) return;
|
||||
|
||||
i32 file_id = exchange_request_file(exchange, expand_str(file->name.source_path));
|
||||
i32 index = 0;
|
||||
if (file_id){
|
||||
|
@ -4080,6 +4082,13 @@ App_Step_Sig(app_step){
|
|||
view_file_in_panel(cmd, binding->panel, ed_file);
|
||||
}
|
||||
|
||||
for (View_Iter iter = file_view_iter_init(&models->layout, ed_file, 0);
|
||||
file_view_iter_good(iter);
|
||||
iter = file_view_iter_next(iter)){
|
||||
view_measure_wraps(system, general, iter.view);
|
||||
view_cursor_move(iter.view, preload_settings.start_line, 0);
|
||||
}
|
||||
|
||||
app_result.redraw = 1;
|
||||
}
|
||||
else{
|
||||
|
@ -4097,13 +4106,6 @@ App_Step_Sig(app_step){
|
|||
app_result.redraw = 1;
|
||||
}
|
||||
|
||||
for (View_Iter iter = file_view_iter_init(&models->layout, ed_file, 0);
|
||||
file_view_iter_good(iter);
|
||||
iter = file_view_iter_next(iter)){
|
||||
view_measure_wraps(system, general, iter.view);
|
||||
view_cursor_move(iter.view, preload_settings.start_line, 0);
|
||||
}
|
||||
|
||||
exchange_free_file(exchange, binding->sys_id);
|
||||
remove = 1;
|
||||
}
|
||||
|
@ -4307,7 +4309,13 @@ App_Step_Sig(app_step){
|
|||
|
||||
case DACT_SWITCH:
|
||||
{
|
||||
Editing_File *file = working_set_lookup_file(working_set, string);
|
||||
if (!file && string.str){
|
||||
file = working_set_lookup_file(working_set, string);
|
||||
|
||||
if (!file){
|
||||
file = working_set_contains(working_set, string);
|
||||
}
|
||||
}
|
||||
|
||||
if (file){
|
||||
View *view = panel->view;
|
||||
|
@ -4320,6 +4328,14 @@ App_Step_Sig(app_step){
|
|||
|
||||
case DACT_KILL:
|
||||
{
|
||||
if (!file && string.str){
|
||||
file = working_set_lookup_file(working_set, string);
|
||||
|
||||
if (!file){
|
||||
file = working_set_contains(working_set, string);
|
||||
}
|
||||
}
|
||||
|
||||
if (file){
|
||||
table_remove(&working_set->table, file->name.source_path);
|
||||
kill_file(system, exchange, models, file,
|
||||
|
@ -4337,6 +4353,14 @@ App_Step_Sig(app_step){
|
|||
view = (models->layout.panels + models->layout.active_panel)->view;
|
||||
}
|
||||
|
||||
if (!file && string.str){
|
||||
file = working_set_lookup_file(working_set, string);
|
||||
|
||||
if (!file){
|
||||
file = working_set_contains(working_set, string);
|
||||
}
|
||||
}
|
||||
|
||||
if (file){
|
||||
if (buffer_needs_save(file)){
|
||||
view_show_interactive(system, view, &models->map_ui,
|
||||
|
|
|
@ -66,12 +66,12 @@ enum Color_View_Mode{
|
|||
struct View{
|
||||
View *next, *prev;
|
||||
b32 in_use;
|
||||
i32 id;
|
||||
|
||||
Models *models;
|
||||
|
||||
Panel *panel;
|
||||
Command_Map *map;
|
||||
i32 id;
|
||||
|
||||
Editing_File *file;
|
||||
|
||||
|
@ -2655,13 +2655,13 @@ interactive_view_complete(View *view){
|
|||
break;
|
||||
|
||||
case IAct_Kill:
|
||||
delayed_try_kill(&models->delay1, view->dest, panel);
|
||||
delayed_try_kill(&models->delay1, view->dest);
|
||||
break;
|
||||
|
||||
case IAct_Sure_To_Kill:
|
||||
switch (view->user_action){
|
||||
case 0:
|
||||
delayed_kill(&models->delay1, view->dest, panel);
|
||||
delayed_kill(&models->delay1, view->dest);
|
||||
break;
|
||||
|
||||
case 1:
|
||||
|
@ -2670,8 +2670,8 @@ interactive_view_complete(View *view){
|
|||
case 2:
|
||||
// TODO(allen): This is fishy! What if the save doesn't happen this time around?
|
||||
// We need to ensure delayed acts happen in order I think.
|
||||
delayed_save(&models->delay1, view->dest, panel);
|
||||
delayed_kill(&models->delay1, view->dest, panel);
|
||||
delayed_save(&models->delay1, view->dest);
|
||||
delayed_kill(&models->delay1, view->dest);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
@ -3532,7 +3532,7 @@ step_file_view(System_Functions *system, Exchange *exchange, View *view, i32_Rec
|
|||
if (view->models->scroll_rule(
|
||||
view->target_x, view->target_y,
|
||||
&view->scroll_x, &view->scroll_y,
|
||||
view->id + 1, is_new_target)){
|
||||
(view->id) + 1, is_new_target)){
|
||||
result = 1;
|
||||
}
|
||||
|
||||
|
@ -4129,11 +4129,11 @@ live_set_alloc_view(Live_Views *live_set, Panel *panel, Models *models){
|
|||
++live_set->count;
|
||||
|
||||
result.view = live_set->free_sentinel.next;
|
||||
result.id = (i32)((char*)result.view - (char*)live_set->views);
|
||||
result.view->id = result.id;
|
||||
result.id = (i32)(result.view - live_set->views);
|
||||
|
||||
dll_remove(result.view);
|
||||
memset(result.view, 0, sizeof(View));
|
||||
result.view->id = result.id;
|
||||
|
||||
result.view->in_use = 1;
|
||||
panel->view = result.view;
|
||||
|
|
Loading…
Reference in New Issue