--- a/ui/common/types.c Tue Feb 25 21:11:00 2025 +0100 +++ b/ui/common/types.c Sat Apr 05 16:46:11 2025 +0200 @@ -162,7 +162,7 @@ UIEXPORT void ui_list_update(UiList *list) { if(list->update) { - list->update(list, 0); + list->update(list, -1); } } @@ -306,7 +306,9 @@ void ui_int_set(UiInteger* i, int64_t value) { if (i) { if (i->set) { + ui_setop_enable(TRUE); i->set(i, value); + ui_setop_enable(FALSE); } else { i->value = value; } @@ -324,7 +326,9 @@ void ui_double_set(UiDouble* d, double value) { if (d) { if (d->set) { + ui_setop_enable(TRUE); d->set(d, value); + ui_setop_enable(FALSE); } else { d->value = value; } @@ -343,7 +347,9 @@ void ui_string_set(UiString* s, const char* value) { if (s) { if (s->set) { + ui_setop_enable(TRUE); s->set(s, value); + ui_setop_enable(FALSE); } else { if(s->value.free) { s->value.free(s->value.ptr); @@ -371,7 +377,9 @@ void ui_text_set(UiText* s, const char* value) { if (s) { if (s->set) { + ui_setop_enable(TRUE); s->set(s, value); + ui_setop_enable(FALSE); } else { if(s->value.free) { s->value.free(s->value.ptr); @@ -426,9 +434,12 @@ to->selection = from->selection; to->length = from->length; to->remove = from->remove; + to->restore = from->restore; + to->save = from->save; + to->destroy = from->destroy; to->obj = from->obj; - // do not copy the undo manager + // do not copy the undo manager, data1, data2 } void uic_range_copy(UiRange *from, UiRange *to) { @@ -468,7 +479,7 @@ void uic_text_save(UiText *t) { if(!t->obj) return; - t->get(t); + t->save(t); t->position(t); } @@ -512,7 +523,6 @@ t->length = NULL; t->remove = NULL; t->obj = NULL; - t->undomgr = NULL; } void uic_range_unbind(UiRange *r) { @@ -614,3 +624,13 @@ destr->observer = observer; cxMempoolSetDestructor(destr, (cx_destructor_func)observer_destructor); } + +static int ui_set_op = 0; + +void ui_setop_enable(int set) { + ui_set_op = set; +} + +int ui_get_setop(void) { + return ui_set_op; +}