mirror of
https://github.com/zlgopen/awtk.git
synced 2025-05-08 19:44:45 +08:00
trigger EVT_PROPS_CHANGED when props removed
This commit is contained in:
parent
da82e22d62
commit
293492c1b4
@ -1,5 +1,8 @@
|
||||
# 最新动态
|
||||
|
||||
2025/04/25
|
||||
* object有属性删除时发送EVT_PROPS_CHANGED事件(感谢兆坤提供补丁)。
|
||||
|
||||
2025/04/23
|
||||
* fscript 支持 %开头的变量名。
|
||||
|
||||
|
@ -344,6 +344,10 @@ ret_t tk_object_remove_prop(tk_object_t* obj, const char* name) {
|
||||
ret = obj->vt->remove_prop(obj, name);
|
||||
}
|
||||
|
||||
if (RET_OK == ret) {
|
||||
tk_object_notify_changed(obj);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -861,6 +865,10 @@ ret_t tk_object_clear_props(tk_object_t* obj) {
|
||||
ret = obj->vt->clear_props(obj);
|
||||
}
|
||||
|
||||
if (RET_OK == ret) {
|
||||
tk_object_notify_changed(obj);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,7 @@ static ret_t object_array_clean_invalid_props(tk_object_t* obj) {
|
||||
|
||||
if (changed) {
|
||||
emitter_dispatch_simple_event(EMITTER(o), EVT_ITEMS_CHANGED);
|
||||
object_notify_changed(obj);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,6 +268,7 @@ static ret_t object_default_foreach_prop(tk_object_t* obj, tk_visit_t on_prop, v
|
||||
object_default_t* o = OBJECT_DEFAULT(obj);
|
||||
return_value_if_fail(o != NULL && on_prop != NULL, RET_BAD_PARAMS);
|
||||
if (o->props.size > 0) {
|
||||
bool_t has_removed = FALSE;
|
||||
uint32_t i = 0;
|
||||
for (i = 0; i < o->props.size; i++) {
|
||||
named_value_t* iter = (named_value_t*)(o->props.elms[i]);
|
||||
@ -275,11 +276,15 @@ static ret_t object_default_foreach_prop(tk_object_t* obj, tk_visit_t on_prop, v
|
||||
if (ret == RET_REMOVE) {
|
||||
named_value_destroy(iter);
|
||||
o->props.elms[i] = NULL;
|
||||
has_removed = TRUE;
|
||||
} else if (ret != RET_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
darray_remove_all(&(o->props), pointer_compare, NULL);
|
||||
if (has_removed) {
|
||||
darray_remove_all(&(o->props), pointer_compare, NULL);
|
||||
tk_object_notify_changed(obj);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
@ -315,6 +315,7 @@ static ret_t object_hash_foreach_prop(tk_object_t* obj, tk_visit_t on_prop, void
|
||||
object_hash_t* o = OBJECT_HASH(obj);
|
||||
return_value_if_fail(o != NULL && on_prop != NULL, RET_BAD_PARAMS);
|
||||
if (o->props.size > 0) {
|
||||
bool_t has_removed = FALSE;
|
||||
uint32_t i = 0;
|
||||
for (i = 0; i < o->props.size; i++) {
|
||||
named_value_hash_t* iter = (named_value_hash_t*)(o->props.elms[i]);
|
||||
@ -322,11 +323,15 @@ static ret_t object_hash_foreach_prop(tk_object_t* obj, tk_visit_t on_prop, void
|
||||
if (ret == RET_REMOVE) {
|
||||
named_value_hash_destroy(iter);
|
||||
o->props.elms[i] = NULL;
|
||||
has_removed = TRUE;
|
||||
} else if (ret != RET_OK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
darray_remove_all(&(o->props), pointer_compare, NULL);
|
||||
if (has_removed) {
|
||||
darray_remove_all(&(o->props), pointer_compare, NULL);
|
||||
tk_object_notify_changed(obj);
|
||||
}
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
x
Reference in New Issue
Block a user