| 192 ctx->document = cxListAt(ctx->documents, 0); |
194 ctx->document = cxListAt(ctx->documents, 0); |
| 193 |
195 |
| 194 UiContext *docctx = ui_document_context(document); |
196 UiContext *docctx = ui_document_context(document); |
| 195 uic_context_unbind_vars(docctx); // unbind all doc/subdoc vars from the parent |
197 uic_context_unbind_vars(docctx); // unbind all doc/subdoc vars from the parent |
| 196 docctx->parent = NULL; |
198 docctx->parent = NULL; |
| |
199 |
| |
200 ui_update_action_bindings(ctx); |
| 197 } |
201 } |
| 198 |
202 |
| 199 void uic_context_detach_all(UiContext *ctx) { |
203 void uic_context_detach_all(UiContext *ctx) { |
| 200 // copy list |
204 // copy list |
| 201 CxList *ls = cxLinkedListCreate(cxDefaultAllocator, CX_STORE_POINTERS); |
205 CxList *ls = cxLinkedListCreate(cxDefaultAllocator, CX_STORE_POINTERS); |
| 209 cx_foreach(void *, doc, i) { |
213 cx_foreach(void *, doc, i) { |
| 210 ctx->detach_document2(ctx, doc); |
214 ctx->detach_document2(ctx, doc); |
| 211 } |
215 } |
| 212 |
216 |
| 213 cxListFree(ls); |
217 cxListFree(ls); |
| |
218 ui_update_action_bindings(ctx); |
| 214 } |
219 } |
| 215 |
220 |
| 216 static UiVar* ctx_getvar(UiContext *ctx, CxHashKey key) { |
221 static UiVar* ctx_getvar(UiContext *ctx, CxHashKey key) { |
| 217 UiVar *var = cxMapGet(ctx->vars, key); |
222 UiVar *var = cxMapGet(ctx->vars, key); |
| 218 if(!var && ctx->documents) { |
223 if(!var && ctx->documents) { |