UI Killing now works
This commit is contained in:
parent
9bfcdc66a8
commit
0bae74aa48
|
@ -1664,6 +1664,18 @@ view_set_mark(Application_Links *app, View_ID view_id, Buffer_Seek seek)
|
|||
return(result);
|
||||
}
|
||||
|
||||
api(custom) function b32
|
||||
view_quit_ui(Application_Links *app, View_ID view_id){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (view != 0){
|
||||
view_quit_ui(app->tctx, models, view);
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
api(custom) function b32
|
||||
view_set_buffer(Application_Links *app, View_ID view_id, Buffer_ID buffer_id, Set_Buffer_Flag flags)
|
||||
{
|
||||
|
@ -1676,8 +1688,7 @@ view_set_buffer(Application_Links *app, View_ID view_id, Buffer_ID buffer_id, Se
|
|||
if (file != view->file){
|
||||
view_set_file(app->tctx, models, view, file);
|
||||
if (!(flags & SetBuffer_KeepOriginalGUI)){
|
||||
//view_quit_ui(models, view);
|
||||
// TODO(allen): back to base context
|
||||
view_quit_ui(app->tctx, models, view);
|
||||
}
|
||||
}
|
||||
result = true;
|
||||
|
|
30
4ed_view.cpp
30
4ed_view.cpp
|
@ -594,9 +594,9 @@ view_check_co_exited(Models *models, View *view){
|
|||
if (view->co == 0){
|
||||
b32 result = view_close(models, view);
|
||||
// TODO(allen): Here it looks like the final view has
|
||||
// closed exited from it's event handler. We should probably
|
||||
// have a failsafe restarter for the event handler when this
|
||||
// happens.
|
||||
// exited from it's event handler. We should probably
|
||||
// have a failsafe restarter for the event handler when
|
||||
// this happens.
|
||||
Assert(result);
|
||||
}
|
||||
}
|
||||
|
@ -619,10 +619,10 @@ co_full_abort(Thread_Context *tctx, Models *models, View *view){
|
|||
co = co_run(tctx, models, co, &in, &view->co_out);
|
||||
}
|
||||
if (co != 0){
|
||||
#define M "SERIOUS ERROR: full stack abort did not complete"
|
||||
Application_Links app = {};
|
||||
app.tctx = tctx;
|
||||
app.cmd_context = models;
|
||||
#define M "SERIOUS ERROR: full stack abort did not complete"
|
||||
print_message(&app, string_u8_litexpr(M));
|
||||
#undef M
|
||||
}
|
||||
|
@ -708,6 +708,28 @@ co_send_core_event(Thread_Context *tctx, Models *models, Core_Code code){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
function void
|
||||
view_quit_ui(Thread_Context *tctx, Models *models, View *view){
|
||||
for (u32 j = 0;; j += 1){
|
||||
if (j == 100){
|
||||
Application_Links app = {};
|
||||
app.tctx = tctx;
|
||||
app.cmd_context = models;
|
||||
#define M "SERIOUS ERROR: view quit ui did not complete"
|
||||
print_message(&app, string_u8_litexpr(M));
|
||||
#undef M
|
||||
break;
|
||||
}
|
||||
View_Context_Node *ctx = view->ctx;
|
||||
if (ctx->next == 0){
|
||||
break;
|
||||
}
|
||||
co_single_abort(tctx, models, view);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal b32
|
||||
file_is_viewed(Layout *layout, Editing_File *file){
|
||||
b32 is_viewed = false;
|
||||
|
|
Loading…
Reference in New Issue