diff --git a/src/core/lv_obj_event.c b/src/core/lv_obj_event.c index 1f83d3c05e..2c4c14dcf8 100644 --- a/src/core/lv_obj_event.c +++ b/src/core/lv_obj_event.c @@ -126,23 +126,6 @@ bool lv_obj_remove_event(lv_obj_t * obj, uint32_t index) return lv_event_remove(&obj->spec_attr->event_list, index); } -bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb) -{ - LV_ASSERT_NULL(obj); - - uint32_t event_cnt = lv_obj_get_event_count(obj); - uint32_t i; - for(i = 0; i < event_cnt; i++) { - lv_event_dsc_t * dsc = lv_obj_get_event_dsc(obj, i); - if(dsc && dsc->cb == event_cb) { - lv_obj_remove_event(obj, i); - return true; - } - } - - return false; -} - bool lv_obj_remove_event_dsc(lv_obj_t * obj, lv_event_dsc_t * dsc) { LV_ASSERT_NULL(obj); @@ -151,6 +134,24 @@ bool lv_obj_remove_event_dsc(lv_obj_t * obj, lv_event_dsc_t * dsc) return lv_event_remove_dsc(&obj->spec_attr->event_list, dsc); } +uint32_t lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb) +{ + LV_ASSERT_NULL(obj); + + uint32_t event_cnt = lv_obj_get_event_count(obj); + uint32_t removed_count = 0; + uint32_t i; + for(i = 0; i < event_cnt; i++) { + lv_event_dsc_t * dsc = lv_obj_get_event_dsc(obj, i); + if(dsc && dsc->cb == event_cb) { + lv_obj_remove_event(obj, i); + removed_count++; + } + } + + return removed_count; +} + uint32_t lv_obj_remove_event_cb_with_user_data(lv_obj_t * obj, lv_event_cb_t event_cb, void * user_data) { LV_ASSERT_NULL(obj); diff --git a/src/core/lv_obj_event.h b/src/core/lv_obj_event.h index 2035f17652..53e5d684a8 100644 --- a/src/core/lv_obj_event.h +++ b/src/core/lv_obj_event.h @@ -86,10 +86,16 @@ lv_event_dsc_t * lv_obj_get_event_dsc(lv_obj_t * obj, uint32_t index); bool lv_obj_remove_event(lv_obj_t * obj, uint32_t index); -bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb); - bool lv_obj_remove_event_dsc(lv_obj_t * obj, lv_event_dsc_t * dsc); +/** + * Remove an event_cb from an object + * @param obj pointer to a obj + * @param event_cb the event_cb of the event to remove + * @return the count of the event removed + */ +uint32_t lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb); + /** * Remove an event_cb with user_data * @param obj pointer to a obj