| 143 // move the bindings to the document |
143 // move the bindings to the document |
| 144 UiContext *var_ctx = ctx->parent; |
144 UiContext *var_ctx = ctx->parent; |
| 145 while(var_ctx) { |
145 while(var_ctx) { |
| 146 CxMapIterator i = cxMapIterator(var_ctx->vars); |
146 CxMapIterator i = cxMapIterator(var_ctx->vars); |
| 147 cx_foreach(CxMapEntry*, entry, i) { |
147 cx_foreach(CxMapEntry*, entry, i) { |
| 148 printf("attach %.*s\n", (int)entry->key->len, (char*)entry->key->data); |
148 // printf("attach %.*s\n", (int)entry->key->len, (char*)entry->key->data); |
| 149 UiVar *var = entry->value; |
149 UiVar *var = entry->value; |
| 150 UiVar *docvar = cxMapGet(ctx->vars, *entry->key); |
150 UiVar *docvar = cxMapGet(ctx->vars, *entry->key); |
| 151 if(docvar) { |
151 if(docvar) { |
| 152 // bind var to document var |
152 // bind var to document var |
| 153 uic_copy_var_binding(var, docvar, TRUE); |
153 uic_copy_var_binding(var, docvar, TRUE); |
| 188 |
188 |
| 189 static void uic_context_unbind_vars(UiContext *ctx) { |
189 static void uic_context_unbind_vars(UiContext *ctx) { |
| 190 ui_onchange_events_enable(FALSE); |
190 ui_onchange_events_enable(FALSE); |
| 191 CxMapIterator mi = cxMapIterator(ctx->vars); |
191 CxMapIterator mi = cxMapIterator(ctx->vars); |
| 192 cx_foreach(CxMapEntry*, entry, mi) { |
192 cx_foreach(CxMapEntry*, entry, mi) { |
| 193 printf("detach %.*s\n", (int)entry->key->len, (char*)entry->key->data); |
193 //printf("detach %.*s\n", (int)entry->key->len, (char*)entry->key->data); |
| 194 UiVar *var = entry->value; |
194 UiVar *var = entry->value; |
| 195 // var->from && var->from_ctx && var->from_ctx != ctx |
195 // var->from && var->from_ctx && var->from_ctx != ctx |
| 196 uic_save_var(var); |
196 uic_save_var(var); |
| 197 if(var->from) { |
197 if(var->from) { |
| 198 uic_copy_var_binding(var, var->from, FALSE); |
198 uic_copy_var_binding(var, var->from, FALSE); |