mirror of
https://github.com/lvgl/lvgl.git
synced 2026-05-28 13:36:27 +08:00
+27
-1
@@ -170,7 +170,7 @@ bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
|
|||||||
|
|
||||||
int32_t i = 0;
|
int32_t i = 0;
|
||||||
for(i = 0; i < obj->spec_attr->event_dsc_cnt; i++) {
|
for(i = 0; i < obj->spec_attr->event_dsc_cnt; i++) {
|
||||||
if(obj->spec_attr->event_dsc[i].cb == event_cb) {
|
if(event_cb == NULL || obj->spec_attr->event_dsc[i].cb == event_cb) {
|
||||||
/*Shift the remaining event handlers forward*/
|
/*Shift the remaining event handlers forward*/
|
||||||
for(; i < (obj->spec_attr->event_dsc_cnt-1); i++) {
|
for(; i < (obj->spec_attr->event_dsc_cnt-1); i++) {
|
||||||
obj->spec_attr->event_dsc[i] = obj->spec_attr->event_dsc[i+1];
|
obj->spec_attr->event_dsc[i] = obj->spec_attr->event_dsc[i+1];
|
||||||
@@ -186,6 +186,32 @@ bool lv_obj_remove_event_cb(lv_obj_t * obj, lv_event_cb_t event_cb)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool lv_obj_remove_event_cb_with_user_data(lv_obj_t * obj, lv_event_cb_t event_cb, const void * user_data)
|
||||||
|
{
|
||||||
|
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 == NULL || obj->spec_attr->event_dsc[i].cb) &&
|
||||||
|
obj->spec_attr->event_dsc[i].user_data == user_data)
|
||||||
|
{
|
||||||
|
/*Shift the remaining event handlers forward*/
|
||||||
|
for(; i < (obj->spec_attr->event_dsc_cnt-1); i++) {
|
||||||
|
obj->spec_attr->event_dsc[i] = obj->spec_attr->event_dsc[i+1];
|
||||||
|
}
|
||||||
|
obj->spec_attr->event_dsc_cnt--;
|
||||||
|
obj->spec_attr->event_dsc = lv_mem_realloc(obj->spec_attr->event_dsc, obj->spec_attr->event_dsc_cnt * sizeof(lv_event_dsc_t));
|
||||||
|
LV_ASSERT_MALLOC(obj->spec_attr->event_dsc);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*No event handler found*/
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool lv_obj_remove_event_dsc(lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc)
|
bool lv_obj_remove_event_dsc(lv_obj_t * obj, struct _lv_event_dsc_t * event_dsc)
|
||||||
{
|
{
|
||||||
LV_ASSERT_OBJ(obj, MY_CLASS);
|
LV_ASSERT_OBJ(obj, MY_CLASS);
|
||||||
|
|||||||
+11
-1
@@ -214,12 +214,22 @@ struct _lv_event_dsc_t * lv_obj_add_event_cb(struct _lv_obj_t * obj, lv_event_cb
|
|||||||
/**
|
/**
|
||||||
* Remove an event handler function for an object.
|
* Remove an event handler function for an object.
|
||||||
* @param obj pointer to an object
|
* @param obj pointer to an object
|
||||||
* @param event_cb the event function to remove
|
* @param event_cb the event function to remove, or `NULL` to remove the the firstly added event callback
|
||||||
* @return true if any event handlers were removed
|
* @return true if any event handlers were removed
|
||||||
*/
|
*/
|
||||||
bool lv_obj_remove_event_cb(struct _lv_obj_t * obj, lv_event_cb_t event_cb);
|
bool lv_obj_remove_event_cb(struct _lv_obj_t * obj, lv_event_cb_t event_cb);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Remove an event handler function with a specific user_data from an object.
|
||||||
|
* @param obj pointer to an object
|
||||||
|
* @param event_cb the event function to remove, or `NULL` only `user_data` matters.
|
||||||
|
* @param user_data the user_data specified in ::lv_obj_add_event_cb
|
||||||
|
* @return true if any event handlers were removed
|
||||||
|
*/
|
||||||
|
bool lv_obj_remove_event_cb_with_user_data(struct _lv_obj_t * obj, lv_event_cb_t event_cb, const void * user_data);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DEPRACTED because doesn't work if multiple event handlers are added to an object.
|
||||||
* Remove an event handler function for an object.
|
* Remove an event handler function for an object.
|
||||||
* @param obj pointer to an object
|
* @param obj pointer to an object
|
||||||
* @param event_dsc pointer to an event descriptor to remove (returned by ::lv_obj_add_event_cb)
|
* @param event_dsc pointer to an event descriptor to remove (returned by ::lv_obj_add_event_cb)
|
||||||
|
|||||||
Reference in New Issue
Block a user