ui/common/types.c

changeset 103
6606616eca9f
parent 102
64ded9f6a6c6
child 108
77254bd6dccb
equal deleted inserted replaced
102:64ded9f6a6c6 103:6606616eca9f
160 cxListClear(list->data); 160 cxListClear(list->data);
161 } 161 }
162 162
163 UIEXPORT void ui_list_update(UiList *list) { 163 UIEXPORT void ui_list_update(UiList *list) {
164 if(list->update) { 164 if(list->update) {
165 list->update(list, 0); 165 list->update(list, -1);
166 } 166 }
167 } 167 }
168 168
169 void ui_list_addobsv(UiList *list, ui_callback f, void *data) { 169 void ui_list_addobsv(UiList *list, ui_callback f, void *data) {
170 list->observers = ui_add_observer(list->observers, f, data); 170 list->observers = ui_add_observer(list->observers, f, data);
304 304
305 305
306 void ui_int_set(UiInteger* i, int64_t value) { 306 void ui_int_set(UiInteger* i, int64_t value) {
307 if (i) { 307 if (i) {
308 if (i->set) { 308 if (i->set) {
309 ui_setop_enable(TRUE);
309 i->set(i, value); 310 i->set(i, value);
311 ui_setop_enable(FALSE);
310 } else { 312 } else {
311 i->value = value; 313 i->value = value;
312 } 314 }
313 } 315 }
314 } 316 }
322 } 324 }
323 325
324 void ui_double_set(UiDouble* d, double value) { 326 void ui_double_set(UiDouble* d, double value) {
325 if (d) { 327 if (d) {
326 if (d->set) { 328 if (d->set) {
329 ui_setop_enable(TRUE);
327 d->set(d, value); 330 d->set(d, value);
331 ui_setop_enable(FALSE);
328 } else { 332 } else {
329 d->value = value; 333 d->value = value;
330 } 334 }
331 } 335 }
332 } 336 }
341 } 345 }
342 346
343 void ui_string_set(UiString* s, const char* value) { 347 void ui_string_set(UiString* s, const char* value) {
344 if (s) { 348 if (s) {
345 if (s->set) { 349 if (s->set) {
350 ui_setop_enable(TRUE);
346 s->set(s, value); 351 s->set(s, value);
352 ui_setop_enable(FALSE);
347 } else { 353 } else {
348 if(s->value.free) { 354 if(s->value.free) {
349 s->value.free(s->value.ptr); 355 s->value.free(s->value.ptr);
350 } 356 }
351 if (value) { 357 if (value) {
369 } 375 }
370 376
371 void ui_text_set(UiText* s, const char* value) { 377 void ui_text_set(UiText* s, const char* value) {
372 if (s) { 378 if (s) {
373 if (s->set) { 379 if (s->set) {
380 ui_setop_enable(TRUE);
374 s->set(s, value); 381 s->set(s, value);
382 ui_setop_enable(FALSE);
375 } else { 383 } else {
376 if(s->value.free) { 384 if(s->value.free) {
377 s->value.free(s->value.ptr); 385 s->value.free(s->value.ptr);
378 } 386 }
379 if (value) { 387 if (value) {
424 to->setposition = from->setposition; 432 to->setposition = from->setposition;
425 to->position = from->position; 433 to->position = from->position;
426 to->selection = from->selection; 434 to->selection = from->selection;
427 to->length = from->length; 435 to->length = from->length;
428 to->remove = from->remove; 436 to->remove = from->remove;
437 to->restore = from->restore;
438 to->save = from->save;
439 to->destroy = from->destroy;
429 440
430 to->obj = from->obj; 441 to->obj = from->obj;
431 // do not copy the undo manager 442 // do not copy the undo manager, data1, data2
432 } 443 }
433 444
434 void uic_range_copy(UiRange *from, UiRange *to) { 445 void uic_range_copy(UiRange *from, UiRange *to) {
435 to->get = from->get; 446 to->get = from->get;
436 to->set = from->set; 447 to->set = from->set;
466 s->get(s); 477 s->get(s);
467 } 478 }
468 479
469 void uic_text_save(UiText *t) { 480 void uic_text_save(UiText *t) {
470 if(!t->obj) return; 481 if(!t->obj) return;
471 t->get(t); 482 t->save(t);
472 t->position(t); 483 t->position(t);
473 } 484 }
474 485
475 void uic_range_save(UiRange *r) { 486 void uic_range_save(UiRange *r) {
476 if(!r->obj) return; 487 if(!r->obj) return;
510 t->position = NULL; 521 t->position = NULL;
511 t->selection = NULL; 522 t->selection = NULL;
512 t->length = NULL; 523 t->length = NULL;
513 t->remove = NULL; 524 t->remove = NULL;
514 t->obj = NULL; 525 t->obj = NULL;
515 t->undomgr = NULL;
516 } 526 }
517 527
518 void uic_range_unbind(UiRange *r) { 528 void uic_range_unbind(UiRange *r) {
519 r->get = NULL; 529 r->get = NULL;
520 r->set = NULL; 530 r->set = NULL;
612 UiObserverDestructor *destr = cxMalloc(mp->allocator, sizeof(UiObserverDestructor)); 622 UiObserverDestructor *destr = cxMalloc(mp->allocator, sizeof(UiObserverDestructor));
613 destr->list = list; 623 destr->list = list;
614 destr->observer = observer; 624 destr->observer = observer;
615 cxMempoolSetDestructor(destr, (cx_destructor_func)observer_destructor); 625 cxMempoolSetDestructor(destr, (cx_destructor_func)observer_destructor);
616 } 626 }
627
628 static int ui_set_op = 0;
629
630 void ui_setop_enable(int set) {
631 ui_set_op = set;
632 }
633
634 int ui_get_setop(void) {
635 return ui_set_op;
636 }

mercurial