diff --git a/src/core/lv_event.c b/src/core/lv_event.c index 74e216f52c..b82ae96f2f 100644 --- a/src/core/lv_event.c +++ b/src/core/lv_event.c @@ -239,6 +239,18 @@ bool lv_obj_remove_event_dsc(lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc) return false; } +void * lv_obj_get_event_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb) +{ + LV_ASSERT_OBJ(obj, MY_CLASS); + if(obj->spec_attr == NULL) return false; + + int32_t i = 0; + for(i = 0; i < obj->spec_attr->event_dsc_cnt; i++) { + if(event_cb == obj->spec_attr->event_dsc[i].cb) return obj->spec_attr->event_dsc[i].user_data; + } + return NULL; +} + lv_indev_t * lv_event_get_indev(lv_event_t * e) { diff --git a/src/core/lv_event.h b/src/core/lv_event.h index ac19c01cb7..623c1884ef 100644 --- a/src/core/lv_event.h +++ b/src/core/lv_event.h @@ -245,6 +245,14 @@ bool lv_obj_remove_event_cb_with_user_data(struct _lv_obj_t * obj, lv_event_cb_t */ bool lv_obj_remove_event_dsc(struct _lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc); +/** + * The the user data of an event obejct event callback. Always the first match with `event_cb` will be returned. + * @param obj pointer to an object + * @param event_cb the event function + * @return the user_data + */ +void * lv_obj_get_event_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb); + /** * Get the input device passed as parameter to indev related events. * @param e pointer to an event