diff --git a/docs/get-started/quick-overview.md b/docs/get-started/quick-overview.md index 4425ca97d..6dccdce3c 100644 --- a/docs/get-started/quick-overview.md +++ b/docs/get-started/quick-overview.md @@ -117,7 +117,7 @@ lv_obj_set_event_cb(btn, btn_event_cb); /*Assign a callback to t void btn_event_cb(lv_obj_t * btn, lv_event_t event) { - if(event == LV_EVENT_CLICKED) { + if(code == LV_EVENT_CLICKED) { printf("Clicked\n"); } } diff --git a/docs/overview/event.md b/docs/overview/event.md index 8b560dce8..6d7859a3b 100644 --- a/docs/overview/event.md +++ b/docs/overview/event.md @@ -176,7 +176,7 @@ There are 2 custom pointer that are available in the events: - `user_data`: set when the event is registered. - `event_param`: set when the event is sent in `lv_event_send` -In any event callback these pointer can be get with `lv_event_get_user_data()` and `lv_event_get_param()`. +In any event callback these pointer can be get with `lv_event_get_user_data(e)` and `lv_event_get_param(e)`. ## Event bubbling diff --git a/examples/get_started/lv_example_get_started_1.c b/examples/get_started/lv_example_get_started_1.c index 02f7896e1..77c4c18e8 100644 --- a/examples/get_started/lv_example_get_started_1.c +++ b/examples/get_started/lv_example_get_started_1.c @@ -1,9 +1,11 @@ #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_USE_BTN -static void btn_event_cb(lv_obj_t * btn, lv_event_t event) +static void btn_event_cb(lv_event_t * e) { - if(event == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * btn = lv_event_get_target(e); + if(code == LV_EVENT_CLICKED) { static uint8_t cnt = 0; cnt++; diff --git a/examples/get_started/lv_example_get_started_3.c b/examples/get_started/lv_example_get_started_3.c index f2e8355e2..e49792c22 100644 --- a/examples/get_started/lv_example_get_started_3.c +++ b/examples/get_started/lv_example_get_started_3.c @@ -3,9 +3,12 @@ static lv_obj_t * label; -static void slider_event_cb(lv_obj_t * slider, lv_event_t event) +static void slider_event_cb(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * slider = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { /*Refresh the text*/ lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider)); lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align below the slider*/ diff --git a/examples/scroll/lv_example_scroll_2.c b/examples/scroll/lv_example_scroll_2.c index 932c26274..ea5db7da5 100644 --- a/examples/scroll/lv_example_scroll_2.c +++ b/examples/scroll/lv_example_scroll_2.c @@ -1,10 +1,13 @@ #include "../lv_examples.h" #if LV_BUILD_EXAMPLES && LV_USE_FLEX -static void sw_event_cb(lv_obj_t * sw, lv_event_t e) +static void sw_event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { - lv_obj_t * list = lv_event_get_user_data(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * sw = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { + lv_obj_t * list = lv_event_get_user_data(e); if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, LV_OBJ_FLAG_SCROLL_ONE); else lv_obj_clear_flag(list, LV_OBJ_FLAG_SCROLL_ONE); diff --git a/examples/scroll/lv_example_scroll_3.c b/examples/scroll/lv_example_scroll_3.c index 98f47ac19..c576883ff 100644 --- a/examples/scroll/lv_example_scroll_3.c +++ b/examples/scroll/lv_example_scroll_3.c @@ -3,10 +3,13 @@ static uint32_t btn_cnt = 1; -static void float_btn_event_cb(lv_obj_t * float_btn, lv_event_t e) +static void float_btn_event_cb(lv_event_t * e) { - if(e == LV_EVENT_CLICKED) { - lv_obj_t * list = lv_event_get_user_data(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * float_btn = lv_event_get_target(e); + + if(code == LV_EVENT_CLICKED) { + lv_obj_t * list = lv_event_get_user_data(e); char buf[32]; lv_snprintf(buf, sizeof(buf), "Track %d", btn_cnt); lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf, NULL); diff --git a/examples/widgets/bar/lv_example_bar_6.c b/examples/widgets/bar/lv_example_bar_6.c index 0d6ed7159..0d8ae1bb0 100644 --- a/examples/widgets/bar/lv_example_bar_6.c +++ b/examples/widgets/bar/lv_example_bar_6.c @@ -8,7 +8,7 @@ //static void event_cb(lv_obj_t * obj, lv_event_t e) //{ -// if(e == LV_EVENT_DRAW_POST_END) { +// if(code == LV_EVENT_DRAW_POST_END) { // lv_bar_t * bar = (lv_bar_t *)obj; // // lv_draw_label_dsc_t dsc; @@ -38,7 +38,7 @@ // txt_area.y1 = bar->indic_area.y1 + (lv_area_get_height(&bar->indic_area) - txt_size.y) / 2; // txt_area.y2 = txt_area.y1 + txt_size.y - 1; // -// const lv_area_t * clip_area = lv_event_get_param(); +// const lv_area_t * clip_area = lv_event_get_param(e); // lv_draw_label(&txt_area, clip_area, &dsc, buf, NULL); // } //} diff --git a/examples/widgets/btn/lv_example_btn_1.c b/examples/widgets/btn/lv_example_btn_1.c index d02dd18a6..98966d0eb 100644 --- a/examples/widgets/btn/lv_example_btn_1.c +++ b/examples/widgets/btn/lv_example_btn_1.c @@ -1,13 +1,14 @@ #include "../../lv_examples.h" #if LV_USE_BTN && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - LV_UNUSED(obj); - if(event == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + + if(code == LV_EVENT_CLICKED) { LV_LOG_USER("Clicked"); } - else if(event == LV_EVENT_VALUE_CHANGED) { + else if(code == LV_EVENT_VALUE_CHANGED) { LV_LOG_USER("Toggled"); } } diff --git a/examples/widgets/btnmatrix/lv_example_btnmatrix_1.c b/examples/widgets/btnmatrix/lv_example_btnmatrix_1.c index 74e5ed7fe..a80445d07 100644 --- a/examples/widgets/btnmatrix/lv_example_btnmatrix_1.c +++ b/examples/widgets/btnmatrix/lv_example_btnmatrix_1.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { uint32_t id = lv_btnmatrix_get_selected_btn(obj); const char * txt = lv_btnmatrix_get_btn_text(obj, id); diff --git a/examples/widgets/btnmatrix/lv_example_btnmatrix_2.c b/examples/widgets/btnmatrix/lv_example_btnmatrix_2.c index 8a2173fad..a72aab677 100644 --- a/examples/widgets/btnmatrix/lv_example_btnmatrix_2.c +++ b/examples/widgets/btnmatrix/lv_example_btnmatrix_2.c @@ -2,10 +2,12 @@ #if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_DRAW_PART_BEGIN) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_PART_BEGIN) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); /*Change the draw descriptor the 2nd button*/ if(dsc->id == 1) { @@ -31,8 +33,8 @@ static void event_cb(lv_obj_t * obj, lv_event_t e) } } - if(e == LV_EVENT_DRAW_PART_END) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + if(code == LV_EVENT_DRAW_PART_END) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); /*Add custom content to the 4th button when the button itself was drawn*/ if(dsc->id == 3) { diff --git a/examples/widgets/btnmatrix/lv_example_btnmatrix_3.c b/examples/widgets/btnmatrix/lv_example_btnmatrix_3.c index 025b408da..46d3bddce 100644 --- a/examples/widgets/btnmatrix/lv_example_btnmatrix_3.c +++ b/examples/widgets/btnmatrix/lv_example_btnmatrix_3.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { uint32_t id = lv_btnmatrix_get_selected_btn(obj); bool prev = id == 0 ? true : false; bool next = id == 6 ? true : false; diff --git a/examples/widgets/calendar/lv_example_calendar_1.c b/examples/widgets/calendar/lv_example_calendar_1.c index da1a80481..bc9fc9a8e 100644 --- a/examples/widgets/calendar/lv_example_calendar_1.c +++ b/examples/widgets/calendar/lv_example_calendar_1.c @@ -1,9 +1,12 @@ #include "../../lv_examples.h" #if LV_USE_CALENDAR && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { lv_calendar_date_t date; if(lv_calendar_get_pressed_date(obj, &date)) { LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year); diff --git a/examples/widgets/chart/lv_example_chart_2.c b/examples/widgets/chart/lv_example_chart_2.c index 1e32e54aa..32ed105b4 100644 --- a/examples/widgets/chart/lv_example_chart_2.c +++ b/examples/widgets/chart/lv_example_chart_2.c @@ -5,11 +5,14 @@ static lv_obj_t * chart1; static lv_chart_series_t * ser1; static lv_chart_series_t * ser2; -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + /*Add the faded area before the lines are drawn*/ - if(e == LV_EVENT_DRAW_PART_BEGIN) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + if(code == LV_EVENT_DRAW_PART_BEGIN) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); if(dsc->part != LV_PART_ITEMS) return; if(!dsc->p1 || !dsc->p2) return; diff --git a/examples/widgets/chart/lv_example_chart_3.c b/examples/widgets/chart/lv_example_chart_3.c index 08f22a28f..c06ab25e8 100644 --- a/examples/widgets/chart/lv_example_chart_3.c +++ b/examples/widgets/chart/lv_example_chart_3.c @@ -1,11 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_CHART && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * chart, lv_event_t e) +static void event_cb(lv_event_t * e) { - LV_UNUSED(chart); - if(e == LV_EVENT_DRAW_PART_BEGIN) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + if(code == LV_EVENT_DRAW_PART_BEGIN) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); if(dsc->part == LV_PART_TICKS && dsc->id == LV_CHART_AXIS_X) { const char * month[] = {"Jan", "Febr", "March", "Apr", "May", "Jun", "July", "Aug", "Sept", "Oct", "Nov", "Dec"}; lv_snprintf(dsc->text, sizeof(dsc->text), "%s", month[dsc->value]); diff --git a/examples/widgets/chart/lv_example_chart_4.c b/examples/widgets/chart/lv_example_chart_4.c index cee75bd77..eb085aa92 100644 --- a/examples/widgets/chart/lv_example_chart_4.c +++ b/examples/widgets/chart/lv_example_chart_4.c @@ -2,16 +2,19 @@ #if LV_USE_CHART && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * chart, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * chart = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { lv_obj_invalidate(chart); } - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { - lv_coord_t * s = lv_event_get_param(); + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, 20); } - else if(e == LV_EVENT_DRAW_POST_END) { + else if(code == LV_EVENT_DRAW_POST_END) { int32_t id = lv_chart_get_pressed_point(chart); if(id == LV_CHART_POINT_NONE) return; @@ -42,7 +45,7 @@ static void event_cb(lv_obj_t * chart, lv_event_t e) a.y1 = chart->coords.y1 + p.y - 30; a.y2 = chart->coords.y1 + p.y - 10; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_draw_rect(&a, clip_area, &draw_rect_dsc); ser = lv_chart_get_series_next(chart, ser); diff --git a/examples/widgets/chart/lv_example_chart_5.c b/examples/widgets/chart/lv_example_chart_5.c index d4eedee7f..50a5bcfdf 100644 --- a/examples/widgets/chart/lv_example_chart_5.c +++ b/examples/widgets/chart/lv_example_chart_5.c @@ -46,17 +46,21 @@ static const lv_coord_t ecg_sample[] = { 70, 74, 76, 79, 82, 79, 75, 62, }; -static void slider_x_event_cb(lv_obj_t * obj, lv_event_t e) +static void slider_x_event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { int32_t v = lv_slider_get_value(obj); lv_chart_set_zoom_x(chart, v); } } -static void slider_y_event_cb(lv_obj_t * obj, lv_event_t e) +static void slider_y_event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { lv_chart_set_zoom_y(chart, lv_slider_get_value(obj)); } } diff --git a/examples/widgets/chart/lv_example_chart_6.c b/examples/widgets/chart/lv_example_chart_6.c index 9297164ef..61c222f23 100644 --- a/examples/widgets/chart/lv_example_chart_6.c +++ b/examples/widgets/chart/lv_example_chart_6.c @@ -5,10 +5,13 @@ static lv_obj_t * chart; static lv_chart_series_t * ser; static lv_chart_cursor_t * cursor; -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { static int32_t last_id = -1; - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { last_id = lv_chart_get_pressed_point(obj); if(last_id != LV_CHART_POINT_NONE) { lv_point_t p; @@ -16,8 +19,8 @@ static void event_cb(lv_obj_t * obj, lv_event_t e) lv_chart_set_cursor_point(obj, cursor, &p); } } - else if(e == LV_EVENT_DRAW_PART_END) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + else if(code == LV_EVENT_DRAW_PART_END) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); if(dsc->part == LV_PART_CURSOR && dsc->p1 && dsc->p2 && dsc->p1->y == dsc->p2->y && last_id >= 0) { lv_coord_t * data_array = lv_chart_get_array(chart, ser); lv_coord_t v = data_array[last_id]; diff --git a/examples/widgets/checkbox/lv_example_checkbox_1.c b/examples/widgets/checkbox/lv_example_checkbox_1.c index 50cd4cca7..1d0b4e76f 100644 --- a/examples/widgets/checkbox/lv_example_checkbox_1.c +++ b/examples/widgets/checkbox/lv_example_checkbox_1.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_CHECKBOX && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { const char * txt = lv_checkbox_get_text(obj); const char * state = lv_obj_get_state(obj) & LV_STATE_CHECKED ? "Checked" : "Unchecked"; LV_LOG_USER("%s: %s\n", txt, state); diff --git a/examples/widgets/dropdown/lv_example_dropdown_1.c b/examples/widgets/dropdown/lv_example_dropdown_1.c index 8d68569f6..0f4a83f43 100644 --- a/examples/widgets/dropdown/lv_example_dropdown_1.c +++ b/examples/widgets/dropdown/lv_example_dropdown_1.c @@ -1,14 +1,14 @@ #include "../../lv_examples.h" #if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { -#if LV_USE_LOG /*To avoid warnings if LV_LOG_USER is empty*/ + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { char buf[32]; lv_dropdown_get_selected_str(obj, buf, sizeof(buf)); LV_LOG_USER("Option: %s", buf); -#endif } } diff --git a/examples/widgets/dropdown/lv_example_dropdown_3.c b/examples/widgets/dropdown/lv_example_dropdown_3.c index 7cd3285d9..eda649b0a 100644 --- a/examples/widgets/dropdown/lv_example_dropdown_3.c +++ b/examples/widgets/dropdown/lv_example_dropdown_3.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * dropdown, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * dropdown = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { char buf[64]; lv_dropdown_get_selected_str(dropdown, buf, sizeof(buf)); LV_LOG_USER("'%s' is selected", buf); diff --git a/examples/widgets/img/lv_example_img_2.c b/examples/widgets/img/lv_example_img_2.c index 686d7d9d5..f2cd80520 100644 --- a/examples/widgets/img/lv_example_img_2.c +++ b/examples/widgets/img/lv_example_img_2.c @@ -2,7 +2,7 @@ #if LV_USE_IMG && LV_USE_SLIDER && LV_BUILD_EXAMPLES static lv_obj_t * create_slider(lv_color_t color); -static void slider_event_cb(lv_obj_t * slider, lv_event_t event); +static void slider_event_cb(lv_event_t * e); static lv_obj_t * red_slider, * green_slider, * blue_slider, * intense_slider; static lv_obj_t * img1; @@ -38,11 +38,11 @@ void lv_example_img_2(void) lv_event_send(intense_slider, LV_EVENT_VALUE_CHANGED, NULL); } -static void slider_event_cb(lv_obj_t * slider, lv_event_t event) +static void slider_event_cb(lv_event_t * e) { - LV_UNUSED(slider); - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + if(code == LV_EVENT_VALUE_CHANGED) { /*Recolor the image based on the sliders' values*/ lv_color_t color = lv_color_make(lv_slider_get_value(red_slider), lv_slider_get_value(green_slider), lv_slider_get_value(blue_slider)); lv_opa_t intense = lv_slider_get_value(intense_slider); diff --git a/examples/widgets/keyboard/lv_example_keyboard_1.c b/examples/widgets/keyboard/lv_example_keyboard_1.c index a19424757..f7918d1c3 100644 --- a/examples/widgets/keyboard/lv_example_keyboard_1.c +++ b/examples/widgets/keyboard/lv_example_keyboard_1.c @@ -1,15 +1,17 @@ #include "../../lv_examples.h" #if LV_USE_KEYBOARD && LV_BUILD_EXAMPLES -static void ta_event_cb(lv_obj_t * ta, lv_event_t e) +static void ta_event_cb(lv_event_t * e) { - lv_obj_t * kb = lv_event_get_user_data(); - if(e == LV_EVENT_FOCUSED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * ta = lv_event_get_target(e); + lv_obj_t * kb = lv_event_get_user_data(e); + if(code == LV_EVENT_FOCUSED) { lv_keyboard_set_textarea(kb, ta); lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN); } - if(e == LV_EVENT_DEFOCUSED) { + if(code == LV_EVENT_DEFOCUSED) { lv_keyboard_set_textarea(kb, NULL); lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); } diff --git a/examples/widgets/list/lv_example_list_1.c b/examples/widgets/list/lv_example_list_1.c index b7cea3d26..5ad51a298 100644 --- a/examples/widgets/list/lv_example_list_1.c +++ b/examples/widgets/list/lv_example_list_1.c @@ -2,9 +2,11 @@ #if LV_USE_LIST && LV_BUILD_EXAMPLES static lv_obj_t * list1; -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_CLICKED) { LV_LOG_USER("Clicked: %s", lv_list_get_btn_text(list1, obj)); } } diff --git a/examples/widgets/msgbox/lv_example_msgbox_1.c b/examples/widgets/msgbox/lv_example_msgbox_1.c index 15ec5adab..b9eb42c5a 100644 --- a/examples/widgets/msgbox/lv_example_msgbox_1.c +++ b/examples/widgets/msgbox/lv_example_msgbox_1.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_MSGBOX && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * obj, lv_event_t event) +static void event_cb(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { LV_LOG_USER("Button %s clicked", lv_msgbox_get_active_btn_text(obj)); } } diff --git a/examples/widgets/roller/lv_example_roller_1.c b/examples/widgets/roller/lv_example_roller_1.c index fb00d746e..e9781eb77 100644 --- a/examples/widgets/roller/lv_example_roller_1.c +++ b/examples/widgets/roller/lv_example_roller_1.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_ROLLER && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { char buf[32]; lv_roller_get_selected_str(obj, buf, sizeof(buf)); LV_LOG_USER("Selected month: %s\n", buf); diff --git a/examples/widgets/roller/lv_example_roller_2.c b/examples/widgets/roller/lv_example_roller_2.c index 2c1d2457b..daef45305 100644 --- a/examples/widgets/roller/lv_example_roller_2.c +++ b/examples/widgets/roller/lv_example_roller_2.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_ROLLER && LV_FONT_MONTSERRAT_22 && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { char buf[32]; lv_roller_get_selected_str(obj, buf, sizeof(buf)); LV_LOG_USER("Selected value: %s\n", buf); diff --git a/examples/widgets/slider/lv_example_slider_1.c b/examples/widgets/slider/lv_example_slider_1.c index 0b9a5d4a5..69363c64d 100644 --- a/examples/widgets/slider/lv_example_slider_1.c +++ b/examples/widgets/slider/lv_example_slider_1.c @@ -1,7 +1,7 @@ #include "../../lv_examples.h" #if LV_USE_SLIDER && LV_BUILD_EXAMPLES -static void slider_event_cb(lv_obj_t * slider, lv_event_t event); +static void slider_event_cb(lv_event_t * e); static lv_obj_t * slider_label; /** @@ -21,9 +21,11 @@ void lv_example_slider_1(void) lv_obj_align_to(slider_label, slider, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); } -static void slider_event_cb(lv_obj_t * slider, lv_event_t event) +static void slider_event_cb(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * slider = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { char buf[8]; lv_snprintf(buf, sizeof(buf), "%d%%", lv_slider_get_value(slider)); lv_label_set_text(slider_label, buf); diff --git a/examples/widgets/slider/lv_example_slider_2.c b/examples/widgets/slider/lv_example_slider_2.c index 6dc750050..6d8004f42 100644 --- a/examples/widgets/slider/lv_example_slider_2.c +++ b/examples/widgets/slider/lv_example_slider_2.c @@ -31,7 +31,7 @@ void lv_example_slider_2(void) // //static void slider_event_cb(lv_obj_t * slider, lv_event_t event) //{ -// if(event == LV_EVENT_VALUE_CHANGED) { +// if(code == LV_EVENT_VALUE_CHANGED) { // static char buf[8]; // lv_snprintf(buf, sizeof(buf), "%u", lv_slider_get_value(slider)); // lv_obj_set_style_content_text(slider, LV_PART_KNOB, LV_STATE_DEFAULT, buf); diff --git a/examples/widgets/slider/lv_example_slider_3.c b/examples/widgets/slider/lv_example_slider_3.c index fbf1facaf..b61221f12 100644 --- a/examples/widgets/slider/lv_example_slider_3.c +++ b/examples/widgets/slider/lv_example_slider_3.c @@ -29,7 +29,7 @@ void lv_example_slider_3(void) // //static void slider_event_cb(lv_obj_t * slider, lv_event_t event) //{ -// if(event == LV_EVENT_VALUE_CHANGED) { +// if(code == LV_EVENT_VALUE_CHANGED) { // static char buf[8]; // lv_snprintf(buf, sizeof(buf), "%d - %d", lv_slider_get_value(slider), lv_slider_get_left_value(slider)); // lv_obj_set_style_content_text(slider, LV_PART_INDICATOR, LV_STATE_DEFAULT, buf); diff --git a/examples/widgets/spinbox/lv_example_spinbox_1.c b/examples/widgets/spinbox/lv_example_spinbox_1.c index 69a212873..494c6f636 100644 --- a/examples/widgets/spinbox/lv_example_spinbox_1.c +++ b/examples/widgets/spinbox/lv_example_spinbox_1.c @@ -4,18 +4,18 @@ static lv_obj_t * spinbox; -static void lv_spinbox_increment_event_cb(lv_obj_t * btn, lv_event_t e) +static void lv_spinbox_increment_event_cb(lv_event_t * e) { - LV_UNUSED(btn); - if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) { + lv_event_code_t code = lv_event_get_code(e); + if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) { lv_spinbox_increment(spinbox); } } -static void lv_spinbox_decrement_event_cb(lv_obj_t * btn, lv_event_t e) +static void lv_spinbox_decrement_event_cb(lv_event_t * e) { - LV_UNUSED(btn); - if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) { + lv_event_code_t code = lv_event_get_code(e); + if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) { lv_spinbox_decrement(spinbox); } } diff --git a/examples/widgets/switch/lv_example_switch_1.c b/examples/widgets/switch/lv_example_switch_1.c index 30eb8d09e..ff4c848aa 100644 --- a/examples/widgets/switch/lv_example_switch_1.c +++ b/examples/widgets/switch/lv_example_switch_1.c @@ -1,9 +1,11 @@ #include "../../lv_examples.h" #if LV_USE_SWITCH && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { LV_LOG_USER("State: %s\n", lv_obj_has_state(obj, LV_STATE_CHECKED) ? "On" : "Off"); } } diff --git a/examples/widgets/table/lv_example_table_1.c b/examples/widgets/table/lv_example_table_1.c index 8efbd53c9..6c9af6fbe 100644 --- a/examples/widgets/table/lv_example_table_1.c +++ b/examples/widgets/table/lv_example_table_1.c @@ -1,10 +1,12 @@ #include "../../lv_examples.h" #if LV_USE_TABLE && LV_BUILD_EXAMPLES -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_DRAW_PART_BEGIN) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_PART_BEGIN) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); /*If the cells are drawn...*/ if(dsc->part == LV_PART_ITEMS) { uint32_t row = dsc->id / lv_table_get_col_cnt(obj); diff --git a/examples/widgets/table/lv_example_table_2.c b/examples/widgets/table/lv_example_table_2.c index a3edc115e..eda42e4bd 100644 --- a/examples/widgets/table/lv_example_table_2.c +++ b/examples/widgets/table/lv_example_table_2.c @@ -3,10 +3,12 @@ #define ITEM_CNT 200 -static void event_cb(lv_obj_t * obj, lv_event_t e) +static void event_cb(lv_event_t * e) { - if(e == LV_EVENT_DRAW_PART_END) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_PART_END) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); /*If the cells are drawn...*/ if(dsc->part == LV_PART_ITEMS) { bool chk = lv_table_has_cell_ctrl(obj, dsc->id, 0, LV_TABLE_CELL_CTRL_CUSTOM_1); @@ -36,7 +38,7 @@ static void event_cb(lv_obj_t * obj, lv_event_t e) lv_draw_rect(&sw_area, dsc->clip_area, &rect_dsc); } } - else if(e == LV_EVENT_VALUE_CHANGED) { + else if(code == LV_EVENT_VALUE_CHANGED) { uint16_t col; uint16_t row; lv_table_get_selected_cell(obj, &row, &col); diff --git a/examples/widgets/textarea/lv_example_textarea_1.c b/examples/widgets/textarea/lv_example_textarea_1.c index 2d69fd729..232fbb134 100644 --- a/examples/widgets/textarea/lv_example_textarea_1.c +++ b/examples/widgets/textarea/lv_example_textarea_1.c @@ -2,10 +2,12 @@ #if LV_USE_TEXTAREA && LV_BUILD_EXAMPLES -static void btnm_event_handler(lv_obj_t * obj, lv_event_t event) +static void btnm_event_handler(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { - lv_obj_t * ta = lv_event_get_user_data(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { + lv_obj_t * ta = lv_event_get_user_data(e); const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj)); if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta); diff --git a/examples/widgets/textarea/lv_example_textarea_2.c b/examples/widgets/textarea/lv_example_textarea_2.c index c1c2052a8..40bdcc713 100644 --- a/examples/widgets/textarea/lv_example_textarea_2.c +++ b/examples/widgets/textarea/lv_example_textarea_2.c @@ -1,7 +1,7 @@ #include "../../lv_examples.h" #if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES -static void ta_event_cb(lv_obj_t * ta, lv_event_t event); +static void ta_event_cb(lv_event_t * e); static lv_obj_t * kb; @@ -39,16 +39,18 @@ void lv_example_textarea_2(void) lv_keyboard_set_textarea(kb, pwd_ta); /*Focus it on one of the text areas to start*/ } -static void ta_event_cb(lv_obj_t * ta, lv_event_t event) +static void ta_event_cb(lv_event_t * e) { - if(event == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * ta = lv_event_get_target(e); + if(code == LV_EVENT_CLICKED) { /*Focus on the clicked text area*/ if(kb != NULL) lv_keyboard_set_textarea(kb, ta); } - else if(event == LV_EVENT_INSERT) { - const char * str = lv_event_get_param(); + else if(code == LV_EVENT_INSERT) { + const char * str = lv_event_get_param(e); if(str[0] == '\n') { LV_LOG_USER("Ready\n"); } diff --git a/examples/widgets/textarea/lv_example_textarea_3.c b/examples/widgets/textarea/lv_example_textarea_3.c index 9c9d91adf..5bfc0b838 100644 --- a/examples/widgets/textarea/lv_example_textarea_3.c +++ b/examples/widgets/textarea/lv_example_textarea_3.c @@ -1,7 +1,7 @@ #include "../../lv_examples.h" #if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES -static void ta_event_cb(lv_obj_t * ta, lv_event_t event); +static void ta_event_cb(lv_event_t * e); static lv_obj_t * kb; @@ -26,9 +26,11 @@ void lv_example_textarea_3(void) lv_keyboard_set_textarea(kb, ta); } -static void ta_event_cb(lv_obj_t * ta, lv_event_t event) +static void ta_event_cb(lv_event_t * e) { - if(event == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * ta = lv_event_get_target(e); + if(code == LV_EVENT_VALUE_CHANGED) { const char * txt = lv_textarea_get_text(ta); if(txt[0] >= '0' && txt[0] <= '9' && txt[1] >= '0' && txt[1] <= '9' && diff --git a/examples/widgets/win/lv_example_win_1.c b/examples/widgets/win/lv_example_win_1.c index f3bb32f10..f91fdc502 100644 --- a/examples/widgets/win/lv_example_win_1.c +++ b/examples/widgets/win/lv_example_win_1.c @@ -2,9 +2,11 @@ #if LV_USE_WIN && LV_BUILD_EXAMPLES -static void event_handler(lv_obj_t * obj, lv_event_t event) +static void event_handler(lv_event_t * e) { - if(event == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_CLICKED) { LV_LOG_USER("Button %d clicked", lv_obj_get_child_id(obj)); } } diff --git a/src/core/lv_obj.c b/src/core/lv_obj.c index 4a51bae05..e1d6363a4 100644 --- a/src/core/lv_obj.c +++ b/src/core/lv_obj.c @@ -66,15 +66,15 @@ typedef struct _lv_event_dsc_t{ **********************/ static void lv_obj_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_obj_draw(lv_obj_t * obj, lv_event_t e); -static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e); +static void lv_obj_draw(lv_event_t * e); +static void lv_obj_event_cb(lv_event_t * e); static void draw_scrollbar(lv_obj_t * obj, const lv_area_t * clip_area); static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc); static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_find); -static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param); +static lv_res_t event_send_core(lv_obj_t * obj, lv_event_code_t event_code, void * param); static void lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state); static void base_dir_refr_children(lv_obj_t * obj); -static bool event_is_bubbled(lv_event_t e); +static bool event_is_bubbled(lv_event_code_t e); /********************** * STATIC VARIABLES @@ -200,7 +200,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent) * Event/Signal sending *---------------------*/ -lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param) +lv_res_t lv_event_send(lv_obj_t * obj, lv_event_code_t event, void * param) { if(obj == NULL) return LV_RES_OK; @@ -220,10 +220,10 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param) } -lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_event_t e) +lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, lv_event_t * e) { const lv_obj_class_t * base; - if(class_p == NULL) base = obj->class_p; + if(class_p == NULL) base = e->target->class_p; else base = class_p->base_class; /*Find a base in which Call the ancestor's event handler_cb is set*/ @@ -232,12 +232,11 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob if(base == NULL) return LV_RES_OK; if(base->event_cb == NULL) return LV_RES_OK; - /* Build a simple linked list from the objects used in the events * It's important to know if an this object was deleted by a nested event * called from this `event_cb`. */ lv_event_temp_data_t event_temp_data; - event_temp_data.obj = obj; + event_temp_data.obj = e->target; event_temp_data.deleted = false; event_temp_data.prev = NULL; @@ -247,7 +246,8 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob event_temp_data_head = &event_temp_data; /*Call the actual event callback*/ - base->event_cb(obj, e); + e->user_data = NULL; + base->event_cb(e); lv_res_t res = LV_RES_OK; /*Stop if the object is deleted*/ @@ -260,14 +260,24 @@ lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * ob } -void * lv_event_get_param(void) +lv_obj_t * lv_event_get_target(lv_event_t * e) { - return event_act_param; + return e->target; } -void * lv_event_get_user_data(void) +lv_event_code_t lv_event_get_code(lv_event_t * e) { - return event_act_user_data_cb; + return e->code; +} + +void * lv_event_get_param(lv_event_t * e) +{ + return e->param; +} + +void * lv_event_get_user_data(lv_event_t * e) +{ + return e->user_data; } lv_obj_t * lv_event_get_original_target(void) @@ -625,10 +635,12 @@ static void lv_obj_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) } -static void lv_obj_draw(lv_obj_t * obj, lv_event_t e) +static void lv_obj_draw(lv_event_t * e) { - if(e == LV_EVENT_COVER_CHECK) { - lv_cover_check_info_t * info = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_COVER_CHECK) { + lv_cover_check_info_t * info = lv_event_get_param(e); if(info->res == LV_DRAW_RES_MASKED) return; if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) { info->res = LV_DRAW_RES_MASKED; @@ -670,8 +682,8 @@ static void lv_obj_draw(lv_obj_t * obj, lv_event_t e) info->res = LV_DRAW_RES_COVER; } - else if(e == LV_EVENT_DRAW_MAIN) { - const lv_area_t * clip_area = lv_event_get_param(); + else if(code == LV_EVENT_DRAW_MAIN) { + const lv_area_t * clip_area = lv_event_get_param(e); lv_draw_rect_dsc_t draw_dsc; lv_draw_rect_dsc_init(&draw_dsc); /*If the border is drawn later disable loading its properties*/ @@ -702,8 +714,8 @@ static void lv_obj_draw(lv_obj_t * obj, lv_event_t e) } #endif } - else if(e == LV_EVENT_DRAW_POST) { - const lv_area_t * clip_area = lv_event_get_param(); + else if(code == LV_EVENT_DRAW_POST) { + const lv_area_t * clip_area = lv_event_get_param(e); draw_scrollbar(obj, clip_area); #if LV_DRAW_COMPLEX @@ -797,27 +809,29 @@ static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc #include "lvgl/lvgl.h" -static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) +static void lv_obj_event_cb(lv_event_t * e) { - if(e == LV_EVENT_PRESSED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_PRESSED) { lv_obj_add_state(obj, LV_STATE_PRESSED); } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { lv_obj_clear_state(obj, LV_STATE_PRESSED); - void * param = lv_event_get_param(); + void * param = lv_event_get_param(e); /*Go the checked state if enabled*/ if(lv_indev_get_scroll_obj(param) == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { if(!(lv_obj_get_state(obj) & LV_STATE_CHECKED)) lv_obj_add_state(obj, LV_STATE_CHECKED); else lv_obj_clear_state(obj, LV_STATE_CHECKED); } } - else if(e == LV_EVENT_PRESS_LOST) { + else if(code == LV_EVENT_PRESS_LOST) { lv_obj_clear_state(obj, LV_STATE_PRESSED); } - else if(e == LV_EVENT_KEY) { + else if(code == LV_EVENT_KEY) { if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) { uint32_t state = 0; - char c = *((char *)lv_event_get_param()); + char c = *((char *)lv_event_get_param(e)); if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { lv_obj_add_state(obj, LV_STATE_CHECKED); state = 1; @@ -830,7 +844,7 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) if(res != LV_RES_OK) return; } } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) { lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON); } @@ -856,19 +870,19 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) lv_obj_clear_state(obj, LV_STATE_EDITED); } } - else if(e == LV_EVENT_SCROLL_BEGIN) { + else if(code == LV_EVENT_SCROLL_BEGIN) { lv_obj_add_state(obj, LV_STATE_SCROLLED); } - else if(e == LV_EVENT_SCROLL_END) { + else if(code == LV_EVENT_SCROLL_END) { lv_obj_clear_state(obj, LV_STATE_SCROLLED); } - else if(e == LV_EVENT_DEFOCUSED) { + else if(code == LV_EVENT_DEFOCUSED) { /*if using focus mode, change target to parent*/ obj = lv_obj_get_focused_obj(obj); lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { uint32_t i; for(i = 0; i < lv_obj_get_child_cnt(obj); i++) { lv_obj_t * child = lv_obj_get_child(obj, i); @@ -883,7 +897,7 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) lv_obj_mark_layout_as_dirty(obj); } } - else if(e == LV_EVENT_CHILD_CHANGED) { + else if(code == LV_EVENT_CHILD_CHANGED) { lv_coord_t w = lv_obj_get_style_width(obj, LV_PART_MAIN); lv_coord_t h = lv_obj_get_style_height(obj, LV_PART_MAIN); lv_coord_t align = lv_obj_get_style_align(obj, LV_PART_MAIN); @@ -892,22 +906,22 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) lv_obj_mark_layout_as_dirty(obj); } } - else if(e == LV_EVENT_BASE_DIR_CHANGED) { + else if(code == LV_EVENT_BASE_DIR_CHANGED) { /*The layout might depend on the base dir. *E.g. the first is element is on the left or right*/ lv_obj_mark_layout_as_dirty(obj); } - else if(e == LV_EVENT_SCROLL_END) { + else if(code == LV_EVENT_SCROLL_END) { if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) { lv_obj_invalidate(obj); } } - else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { - lv_coord_t * s = lv_event_get_param(); + else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_coord_t * s = lv_event_get_param(e); lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN); *s = LV_MAX(*s, d); } - else if(e == LV_EVENT_STYLE_CHANGED) { + else if(code == LV_EVENT_STYLE_CHANGED) { /*Padding might have changed so the layout should be recalculated*/ uint32_t i; for(i = 0; i < lv_obj_get_child_cnt(obj); i++) { @@ -921,8 +935,8 @@ static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e) lv_obj_refresh_ext_draw_size(obj); } - else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) { - lv_obj_draw(obj, e); + else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) { + lv_obj_draw(e); } } @@ -1033,9 +1047,9 @@ static bool obj_valid_child(const lv_obj_t * parent, const lv_obj_t * obj_to_fin return false; } -static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param) +static lv_res_t event_send_core(lv_obj_t * obj, lv_event_code_t event_code, void * param) { - EVENT_TRACE("Sending event %d to %p with %p param", event, obj, param); + EVENT_TRACE("Sending event %d to %p with %p param", event_code, obj, param); /*Build a simple linked list from the objects used in the events *It's important to know if an this object was deleted by a nested event @@ -1058,12 +1072,17 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param) /*Call the input device's feedback callback if set*/ lv_indev_t * indev_act = lv_indev_get_act(); if(indev_act) { - if(indev_act->driver->feedback_cb) indev_act->driver->feedback_cb(indev_act->driver, event); + if(indev_act->driver->feedback_cb) indev_act->driver->feedback_cb(indev_act->driver, event_code); } lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0); lv_res_t res = LV_RES_OK; - res = lv_obj_event_base(NULL, obj, event); + lv_event_t e; + e.code = event_code; + e.target = obj; + e.original_target = obj; + e.param = param; + res = lv_obj_event_base(NULL, &e); uint32_t i = 0; while(event_dsc && res == LV_RES_OK) { @@ -1071,7 +1090,8 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param) void * event_act_user_data_cb_save = event_act_user_data_cb; event_act_user_data_cb = event_dsc->user_data; - event_dsc->cb(obj, event); + e.user_data = event_dsc->user_data; + event_dsc->cb(&e); event_act_user_data_cb = event_act_user_data_cb_save; @@ -1086,23 +1106,23 @@ static lv_res_t event_send_core(lv_obj_t * obj, lv_event_t event, void * param) event_dsc = lv_obj_get_event_dsc(obj, i); } - /*Restore the event param*/ + /*Restore the event_code param*/ event_act_param = event_act_param_save; /*Remove this element from the list*/ event_temp_data_head = event_temp_data_head->prev; - if(res == LV_RES_OK && event_is_bubbled(event)) { + if(res == LV_RES_OK && event_is_bubbled(event_code)) { if(lv_obj_has_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE) && obj->parent) { - res = event_send_core(obj->parent, event, param); + res = event_send_core(obj->parent, event_code, param); if(res != LV_RES_OK) return LV_RES_INV; } } - return LV_RES_OK; + return res; } -static bool event_is_bubbled(lv_event_t e) +static bool event_is_bubbled(lv_event_code_t e) { switch(e) { case LV_EVENT_HIT_TEST: diff --git a/src/core/lv_obj.h b/src/core/lv_obj.h index 015113e11..7fa4586c9 100644 --- a/src/core/lv_obj.h +++ b/src/core/lv_obj.h @@ -91,6 +91,15 @@ typedef enum { LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/ _LV_EVENT_LAST /** Number of default events*/ +}lv_event_code_t; + + +typedef struct { + struct _lv_obj_t * target; + struct _lv_obj_t * original_target; + lv_event_code_t code; + void * user_data; + void * param; }lv_event_t; /** @@ -98,7 +107,7 @@ typedef enum { * Events are used to notify the user of some action being taken on the object. * For details, see ::lv_event_t. */ -typedef void (*lv_event_cb_t)(struct _lv_obj_t * obj, lv_event_t event); +typedef void (*lv_event_cb_t)(lv_event_t * e); /*--------------------- * EVENTS @@ -301,21 +310,17 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent); * @param param arbitrary data depending on the object type and the event. (Usually `NULL`) * @return LV_RES_OK: `obj` was not deleted in the event; LV_RES_INV: `obj` was deleted in the event */ -lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param); +lv_res_t lv_event_send(lv_obj_t * obj, lv_event_code_t event, void * param); -lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_event_t e); +lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, lv_event_t * e); -/** - * Get the `param` parameter of the current event - * @return the `param` parameter - */ -void * lv_event_get_param(void); +lv_obj_t * lv_event_get_target(lv_event_t * e); -/** - * Get the user data of the event callback. (Set when the callback is registered) - * @return the user data parameter - */ -void * lv_event_get_user_data(void); +lv_event_code_t lv_event_get_code(lv_event_t * e); + +void * lv_event_get_param(lv_event_t * e); + +void * lv_event_get_user_data(lv_event_t * e); /** * Get the original target of the event. It's different than the "normal" target if the event is bubbled. diff --git a/src/extra/widgets/calendar/lv_calendar.c b/src/extra/widgets/calendar/lv_calendar.c index 32f27e5b1..58d0ff2d4 100644 --- a/src/extra/widgets/calendar/lv_calendar.c +++ b/src/extra/widgets/calendar/lv_calendar.c @@ -24,7 +24,7 @@ * STATIC PROTOTYPES **********************/ static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void draw_event_cb(lv_obj_t * obj, lv_event_t e); +static void draw_event_cb(lv_event_t * e); static uint8_t get_day_of_week(uint32_t year, uint32_t month, uint32_t day); static uint8_t get_month_length(int32_t year, int32_t month); @@ -252,10 +252,12 @@ static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) } -static void draw_event_cb(lv_obj_t * obj, lv_event_t e) +static void draw_event_cb(lv_event_t * e) { - if(e == LV_EVENT_DRAW_PART_BEGIN) { - lv_obj_draw_dsc_t * dsc = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_PART_BEGIN) { + lv_obj_draw_dsc_t * dsc = lv_event_get_param(e); if(dsc->part == LV_PART_ITEMS) { /*Day name styles*/ if(dsc->id < 7) { diff --git a/src/extra/widgets/calendar/lv_calendar_header_arrow.c b/src/extra/widgets/calendar/lv_calendar_header_arrow.c index 5dcaa6842..20e13b7ea 100644 --- a/src/extra/widgets/calendar/lv_calendar_header_arrow.c +++ b/src/extra/widgets/calendar/lv_calendar_header_arrow.c @@ -25,7 +25,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static void month_event_cb(lv_obj_t * btn, lv_event_t e); +static void month_event_cb(lv_event_t * e); /********************** * STATIC VARIABLES @@ -86,12 +86,16 @@ lv_obj_t * lv_calendar_header_arrow_create(lv_obj_t * parent, lv_obj_t * calenda * STATIC FUNCTIONS **********************/ -static void month_event_cb(lv_obj_t * btn, lv_event_t e) +static void month_event_cb(lv_event_t * e) { - if(e != LV_EVENT_CLICKED) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * btn = lv_event_get_target(e); + + if(code != LV_EVENT_CLICKED) return; + lv_obj_t * header = lv_obj_get_parent(btn); - lv_obj_t * calendar = lv_event_get_user_data(); + lv_obj_t * calendar = lv_event_get_user_data(e); const lv_calendar_date_t * d; d = lv_calendar_get_showed_date(calendar); diff --git a/src/extra/widgets/calendar/lv_calendar_header_dropdown.c b/src/extra/widgets/calendar/lv_calendar_header_dropdown.c index 13a6343b8..c70371ff2 100644 --- a/src/extra/widgets/calendar/lv_calendar_header_dropdown.c +++ b/src/extra/widgets/calendar/lv_calendar_header_dropdown.c @@ -24,8 +24,8 @@ /********************** * STATIC PROTOTYPES **********************/ -static void year_event_cb(lv_obj_t * btn, lv_event_t e); -static void month_event_cb(lv_obj_t * btn, lv_event_t e); +static void year_event_cb(lv_event_t * e); +static void month_event_cb(lv_event_t * e); /********************** * STATIC VARIABLES @@ -89,11 +89,13 @@ lv_obj_t * lv_calendar_header_dropdown_create(lv_obj_t * parent, lv_obj_t * cale * STATIC FUNCTIONS **********************/ -static void month_event_cb(lv_obj_t * dropdown, lv_event_t e) +static void month_event_cb(lv_event_t * e) { - if(e != LV_EVENT_VALUE_CHANGED) return; + lv_event_code_t code = lv_event_get_code(e); + if(code != LV_EVENT_VALUE_CHANGED) return; - lv_obj_t * calendar = lv_event_get_user_data(); + lv_obj_t * dropdown = lv_event_get_target(e); + lv_obj_t * calendar = lv_event_get_user_data(e); uint16_t sel = lv_dropdown_get_selected(dropdown); @@ -104,11 +106,13 @@ static void month_event_cb(lv_obj_t * dropdown, lv_event_t e) lv_calendar_set_showed_date(calendar, newd.year, newd.month); } -static void year_event_cb(lv_obj_t * dropdown, lv_event_t e) +static void year_event_cb(lv_event_t * e) { - if(e != LV_EVENT_VALUE_CHANGED) return; + lv_event_code_t code = lv_event_get_code(e); + if(code != LV_EVENT_VALUE_CHANGED) return; - lv_obj_t * calendar = lv_event_get_user_data(); + lv_obj_t * dropdown = lv_event_get_target(e); + lv_obj_t * calendar = lv_event_get_user_data(e); uint16_t sel = lv_dropdown_get_selected(dropdown); diff --git a/src/extra/widgets/colorwheel/lv_colorwheel.c b/src/extra/widgets/colorwheel/lv_colorwheel.c index 048150d9d..0866cd7ea 100644 --- a/src/extra/widgets/colorwheel/lv_colorwheel.c +++ b/src/extra/widgets/colorwheel/lv_colorwheel.c @@ -33,10 +33,10 @@ * STATIC PROTOTYPES **********************/ static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e); +static void lv_colorwheel_event(lv_event_t * e); -static void draw_disc_grad(lv_obj_t * obj); -static void draw_knob(lv_obj_t * obj); +static void draw_disc_grad(lv_event_t * e); +static void draw_knob(lv_event_t * e); static void invalidate_knob(lv_obj_t * obj); static lv_area_t get_knob_area(lv_obj_t * obj); @@ -225,9 +225,10 @@ static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t * refr_knob_pos(obj); } -static void draw_disc_grad(lv_obj_t * obj) +static void draw_disc_grad(lv_event_t * e) { - const lv_area_t * clip_area = lv_event_get_param(); + lv_obj_t * obj = lv_event_get_target(e); + const lv_area_t * clip_area = lv_event_get_param(e); lv_coord_t w = lv_obj_get_width(obj); lv_coord_t h = lv_obj_get_height(obj); lv_coord_t cx = obj->coords.x1 + w / 2; @@ -286,9 +287,10 @@ static void draw_disc_grad(lv_obj_t * obj) #endif } -static void draw_knob(lv_obj_t * obj) +static void draw_knob(lv_event_t * e) { - const lv_area_t * clip_area = lv_event_get_param(); + lv_obj_t * obj = lv_event_get_target(e); + const lv_area_t * clip_area = lv_event_get_param(e); lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj; lv_draw_rect_dsc_t cir_dsc; @@ -335,39 +337,41 @@ static lv_area_t get_knob_area(lv_obj_t * obj) return knob_area; } -static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e) +static void lv_colorwheel_event(lv_event_t * e) { /*Call the ancestor's event handler*/ - lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e); + lv_res_t res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj; - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB); lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB); lv_coord_t top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB); lv_coord_t bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB); lv_coord_t knob_pad = LV_MAX4(left, right, top, bottom) + 2; - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, knob_pad); } - else if(e == LV_EVENT_SIZE_CHANGED) { - void * param = lv_event_get_param(); + else if(code == LV_EVENT_SIZE_CHANGED) { + void * param = lv_event_get_param(e); /*Refresh extended draw area to make knob visible*/ if(lv_obj_get_width(obj) != lv_area_get_width(param) || lv_obj_get_height(obj) != lv_area_get_height(param)) { refr_knob_pos(obj); } } - else if(e == LV_EVENT_STYLE_CHANGED) { + else if(code == LV_EVENT_STYLE_CHANGED) { /*Refresh extended draw area to make knob visible*/ refr_knob_pos(obj); } - else if(e == LV_EVENT_KEY) { - uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/ + else if(code == LV_EVENT_KEY) { + uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/ if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { lv_color_hsv_t hsv_cur; @@ -412,13 +416,13 @@ static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_PRESSED) { + else if(code == LV_EVENT_PRESSED) { colorwheel->last_change_time = lv_tick_get(); lv_indev_get_point(lv_indev_get_act(), &colorwheel->last_press_point); res = double_click_reset(obj); if(res != LV_RES_OK) return; } - else if(e == LV_EVENT_PRESSING) { + else if(code == LV_EVENT_PRESSING) { lv_indev_t * indev = lv_indev_get_act(); if(indev == NULL) return; @@ -498,18 +502,18 @@ static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e) if(res != LV_RES_OK) return; } } - else if(e == LV_EVENT_HIT_TEST) { - lv_hit_test_info_t * info = lv_event_get_param();; + else if(code == LV_EVENT_HIT_TEST) { + lv_hit_test_info_t * info = lv_event_get_param(e);; /*Valid clicks can be only in the circle*/ info->result = _lv_area_is_point_on(&obj->coords, info->point, LV_RADIUS_CIRCLE); } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_disc_grad(obj); - draw_knob(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_disc_grad(e); + draw_knob(e); } - else if(e == LV_EVENT_COVER_CHECK) { - lv_cover_check_info_t * info = lv_event_get_param(); + else if(code == LV_EVENT_COVER_CHECK) { + lv_cover_check_info_t * info = lv_event_get_param(e); if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER; } } diff --git a/src/extra/widgets/imgbtn/lv_imgbtn.c b/src/extra/widgets/imgbtn/lv_imgbtn.c index 51da085de..f85140a6a 100644 --- a/src/extra/widgets/imgbtn/lv_imgbtn.c +++ b/src/extra/widgets/imgbtn/lv_imgbtn.c @@ -24,8 +24,8 @@ * STATIC PROTOTYPES **********************/ static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void draw_main(lv_obj_t * obj); -static void lv_imgbtn_event(lv_obj_t * imgbtn, lv_event_t e); +static void draw_main(lv_event_t * e); +static void lv_imgbtn_event(lv_event_t * e); static void refr_img(lv_obj_t * imgbtn); static lv_imgbtn_state_t suggest_state(lv_obj_t * imgbtn, lv_imgbtn_state_t state); lv_imgbtn_state_t get_state(const lv_obj_t * imgbtn); @@ -160,27 +160,30 @@ static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj } -static void lv_imgbtn_event(lv_obj_t * obj, lv_event_t e) +static void lv_imgbtn_event(lv_event_t * e) { - lv_res_t res = lv_obj_event_base(&lv_imgbtn_class, obj, e); + lv_res_t res = lv_obj_event_base(&lv_imgbtn_class, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) { refr_img(obj); } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } - else if(e == LV_EVENT_COVER_CHECK) { - lv_cover_check_info_t * info = lv_event_get_param(); + else if(code == LV_EVENT_COVER_CHECK) { + lv_cover_check_info_t * info = lv_event_get_param(e); if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER; } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_imgbtn_t * imgbtn = (lv_imgbtn_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); /*Just draw_main an image*/ lv_imgbtn_state_t state = suggest_state(obj, get_state(obj)); diff --git a/src/extra/widgets/keyboard/lv_keyboard.c b/src/extra/widgets/keyboard/lv_keyboard.c index 44731d2b5..45955b31b 100644 --- a/src/extra/widgets/keyboard/lv_keyboard.c +++ b/src/extra/widgets/keyboard/lv_keyboard.c @@ -220,15 +220,17 @@ lv_keyboard_mode_t lv_keyboard_get_mode(const lv_obj_t * obj) * @param kb pointer to a keyboard * @param event the triggering event */ -void lv_keyboard_def_event_cb(lv_obj_t * obj, lv_event_t event) +void lv_keyboard_def_event_cb(lv_event_t * e) { - if(event != LV_EVENT_VALUE_CHANGED) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code != LV_EVENT_VALUE_CHANGED) return; lv_keyboard_t * keyboard = (lv_keyboard_t *)obj; uint16_t btn_id = lv_btnmatrix_get_selected_btn(obj); if(btn_id == LV_BTNMATRIX_BTN_NONE) return; if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_HIDDEN | LV_BTNMATRIX_CTRL_DISABLED)) return; - if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_NO_REPEAT) && event == LV_EVENT_LONG_PRESSED_REPEAT) return; + if(lv_btnmatrix_has_btn_ctrl(obj, btn_id, LV_BTNMATRIX_CTRL_NO_REPEAT) && code == LV_EVENT_LONG_PRESSED_REPEAT) return; const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj)); if(txt == NULL) return; diff --git a/src/extra/widgets/keyboard/lv_keyboard.h b/src/extra/widgets/keyboard/lv_keyboard.h index 32ee85833..2aa2f3d11 100644 --- a/src/extra/widgets/keyboard/lv_keyboard.h +++ b/src/extra/widgets/keyboard/lv_keyboard.h @@ -130,7 +130,7 @@ static inline const char ** lv_keyboard_get_map_array(const lv_obj_t * kb) * @param kb pointer to a keyboard * @param event the triggering event */ -void lv_keyboard_def_event_cb(lv_obj_t * kb, lv_event_t event); +void lv_keyboard_def_event_cb(lv_event_t * e); /********************** * MACROS diff --git a/src/extra/widgets/led/lv_led.c b/src/extra/widgets/led/lv_led.c index e50ae975d..f7f0249a9 100644 --- a/src/extra/widgets/led/lv_led.c +++ b/src/extra/widgets/led/lv_led.c @@ -30,7 +30,7 @@ * STATIC PROTOTYPES **********************/ static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_led_event(lv_obj_t * obj, lv_event_t e); +static void lv_led_event(lv_event_t * e); /********************** * STATIC VARIABLES @@ -156,15 +156,17 @@ static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) led->bright = LV_LED_BRIGHT_MAX; } -static void lv_led_event(lv_obj_t * obj, lv_event_t e) +static void lv_led_event(lv_event_t * e) { lv_res_t res; /* Call the ancestor's event handler */ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_DRAW_MAIN) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_MAIN) { /*Make darker colors in a temporary style according to the brightness*/ lv_led_t * led = (lv_led_t *)obj; @@ -193,7 +195,7 @@ static void lv_led_event(lv_obj_t * obj, lv_event_t e) rect_dsc.shadow_spread = ((led->bright - LV_LED_BRIGHT_MIN) * rect_dsc.shadow_spread) / (LV_LED_BRIGHT_MAX - LV_LED_BRIGHT_MIN); - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_draw_rect(&obj->coords, clip_area, &rect_dsc); } } diff --git a/src/extra/widgets/msgbox/lv_msgbox.c b/src/extra/widgets/msgbox/lv_msgbox.c index 32754ef04..6c7ce6a4a 100644 --- a/src/extra/widgets/msgbox/lv_msgbox.c +++ b/src/extra/widgets/msgbox/lv_msgbox.c @@ -21,7 +21,7 @@ /********************** * STATIC PROTOTYPES **********************/ -static void msgbox_close_event_cb(lv_obj_t * btn, lv_event_t e); +static void msgbox_close_event_cb(lv_event_t * e); /********************** * STATIC VARIABLES @@ -138,9 +138,11 @@ void lv_msgbox_close(lv_obj_t * mbox) * STATIC FUNCTIONS **********************/ -static void msgbox_close_event_cb(lv_obj_t * btn, lv_event_t e) +static void msgbox_close_event_cb(lv_event_t * e) { - if(e == LV_EVENT_CLICKED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * btn = lv_event_get_target(e); + if(code == LV_EVENT_CLICKED) { lv_obj_t * mbox = lv_obj_get_parent(btn); lv_msgbox_close(mbox); } diff --git a/src/extra/widgets/spinbox/lv_spinbox.c b/src/extra/widgets/spinbox/lv_spinbox.c index db50fbde6..27b340b47 100644 --- a/src/extra/widgets/spinbox/lv_spinbox.c +++ b/src/extra/widgets/spinbox/lv_spinbox.c @@ -23,7 +23,7 @@ **********************/ static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e); +static void lv_spinbox_event(lv_event_t * e); static void lv_spinbox_updatevalue(lv_obj_t * obj); /********************** @@ -294,15 +294,17 @@ static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * ob LV_LOG_TRACE("Spinbox constructor finished"); } -static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e) +static void lv_spinbox_event(lv_event_t * e) { /*Call the ancestor's event handler*/ lv_res_t res = LV_RES_OK; - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_spinbox_t * spinbox = (lv_spinbox_t *)obj; - if(e == LV_EVENT_RELEASED) { + if(code == LV_EVENT_RELEASED) { /*If released with an ENCODER then move to the next digit*/ lv_indev_t * indev = lv_indev_get_act(); if(lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) { @@ -352,10 +354,10 @@ static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e) for(i = 0; i < pos; i++) spinbox->step *= 10; } } - else if(e == LV_EVENT_KEY) { + else if(code == LV_EVENT_KEY) { lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); - uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/ + uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/ if(c == LV_KEY_RIGHT) { if(indev_type == LV_INDEV_TYPE_ENCODER) lv_spinbox_increment(obj); diff --git a/src/extra/widgets/tabview/lv_tabview.c b/src/extra/widgets/tabview/lv_tabview.c index a51383ac5..c513f9173 100644 --- a/src/extra/widgets/tabview/lv_tabview.c +++ b/src/extra/widgets/tabview/lv_tabview.c @@ -22,8 +22,8 @@ **********************/ static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_tabview_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void btns_event_cb(lv_obj_t * btns, lv_event_t e); -static void cont_event_cb(lv_obj_t * cont, lv_event_t e); +static void btns_event_cb(lv_event_t * e); +static void cont_event_cb(lv_event_t * e); /********************** * STATIC VARIABLES @@ -228,17 +228,23 @@ static void lv_tabview_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj tabview->map = NULL; } -static void btns_event_cb(lv_obj_t * btns, lv_event_t e) +static void btns_event_cb(lv_event_t * e) { - if(e == LV_EVENT_VALUE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * btns = lv_event_get_target(e); + + if(code == LV_EVENT_VALUE_CHANGED) { lv_obj_t * tv = lv_obj_get_parent(btns); uint32_t id = lv_btnmatrix_get_selected_btn(btns); lv_tabview_set_act(tv, id, LV_ANIM_ON); } } -static void cont_event_cb(lv_obj_t * cont, lv_event_t e) +static void cont_event_cb(lv_event_t * e) { - if(e == LV_EVENT_SCROLL_END) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * cont = lv_event_get_target(e); + + if(code == LV_EVENT_SCROLL_END) { lv_obj_t * tv = lv_obj_get_parent(cont); lv_point_t p; diff --git a/src/extra/widgets/tileview/lv_tileview.c b/src/extra/widgets/tileview/lv_tileview.c index 4edb5a1ac..892480536 100644 --- a/src/extra/widgets/tileview/lv_tileview.c +++ b/src/extra/widgets/tileview/lv_tileview.c @@ -22,7 +22,7 @@ **********************/ static void lv_tileview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_tileview_tile_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void tileview_event_cb(lv_obj_t * tv, lv_event_t e); +static void tileview_event_cb(lv_event_t * e); /********************** * STATIC VARIABLES @@ -127,9 +127,11 @@ static void lv_tileview_tile_constructor(const lv_obj_class_t * class_p, lv_obj_ } } -static void tileview_event_cb(lv_obj_t * tv, lv_event_t e) +static void tileview_event_cb(lv_event_t * e) { - if(e == LV_EVENT_SCROLL_END) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * tv = lv_event_get_target(e); + if(code == LV_EVENT_SCROLL_END) { lv_coord_t w = lv_obj_get_width_fit(tv); lv_coord_t h = lv_obj_get_height_fit(tv); diff --git a/src/misc/lv_mem.c b/src/misc/lv_mem.c index 453e16722..49781bfe8 100644 --- a/src/misc/lv_mem.c +++ b/src/misc/lv_mem.c @@ -421,7 +421,7 @@ LV_ATTRIBUTE_FAST_MEM void lv_memset(void * dst, uint8_t v, size_t len) } } - uint32_t v32 = v + (v << 8) + (v << 16) + (v << 24); + uint32_t v32 = (uint32_t)v + ((uint32_t)v << 8) + ((uint32_t)v << 16) + ((uint32_t)v << 24); uint32_t * d32 = (uint32_t *)d8; diff --git a/src/widgets/lv_arc.c b/src/widgets/lv_arc.c index 80db692d0..7ea0526bf 100644 --- a/src/widgets/lv_arc.c +++ b/src/widgets/lv_arc.c @@ -31,8 +31,8 @@ **********************/ static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_arc_draw(lv_obj_t * obj); -static void lv_arc_event(lv_obj_t * obj, lv_event_t e); +static void lv_arc_draw(lv_event_t * e); +static void lv_arc_event(lv_event_t * e); static void inv_arc_area(lv_obj_t * arc, uint16_t start_angle, uint16_t end_angle, lv_part_t part); static void get_center(lv_obj_t * obj, lv_point_t * center, lv_coord_t * arc_r); static void get_knob_area(lv_obj_t * arc, const lv_point_t * center, lv_coord_t r, lv_area_t * knob_area); @@ -509,16 +509,18 @@ static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) LV_TRACE_OBJ_CREATE("finished"); } -static void lv_arc_event(lv_obj_t * obj, lv_event_t e) +static void lv_arc_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - lv_arc_t * arc = (lv_arc_t *)obj; - if(e == LV_EVENT_PRESSING) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + lv_arc_t * arc = (lv_arc_t *)e->target; + if(code == LV_EVENT_PRESSING) { lv_indev_t * indev = lv_indev_get_act(); if(indev == NULL) return; @@ -622,7 +624,7 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e) arc->last_tick = lv_tick_get(); /*Cache timestamp for the next iteration*/ } } - else if(e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) { + else if(code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) { arc->dragging = false; /*Leave edit mode if released. (No need to wait for LONG_PRESS)*/ @@ -634,8 +636,8 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e) } } - else if(e == LV_EVENT_KEY) { - char c = *((char *)lv_event_get_param()); + else if(code == LV_EVENT_KEY) { + char c = *((char *)lv_event_get_param(e)); int16_t old_value =arc->value; if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { @@ -650,7 +652,7 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e) if(res != LV_RES_OK) return; } } - else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { lv_coord_t bg_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN); lv_coord_t bg_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN); lv_coord_t bg_top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN); @@ -663,18 +665,19 @@ static void lv_arc_event(lv_obj_t * obj, lv_event_t e) lv_coord_t knob_bottom = lv_obj_get_style_pad_bottom(obj, LV_PART_KNOB); lv_coord_t knob_pad = LV_MAX4(knob_left, knob_right, knob_top, knob_bottom) + 2; - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, knob_pad - bg_pad); - } else if(e == LV_EVENT_DRAW_MAIN) { - lv_arc_draw(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + lv_arc_draw(e); } } -static void lv_arc_draw(lv_obj_t * obj) +static void lv_arc_draw(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_arc_t * arc = (lv_arc_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_point_t center; lv_coord_t arc_r; diff --git a/src/widgets/lv_bar.c b/src/widgets/lv_bar.c index 6de4d2bcd..16f857687 100644 --- a/src/widgets/lv_bar.c +++ b/src/widgets/lv_bar.c @@ -47,8 +47,8 @@ **********************/ static void lv_bar_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_bar_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_bar_event(lv_obj_t * bar, lv_event_t e); -static void draw_indic(lv_obj_t * bar); +static void lv_bar_event(lv_event_t * e); +static void draw_indic(lv_event_t * e); static void lv_bar_set_value_with_anim(lv_obj_t * obj, int16_t new_value, int16_t * value_ptr, lv_bar_anim_t * anim_info, lv_anim_enable_t en); static void lv_bar_init_anim(lv_obj_t * bar, lv_bar_anim_t * bar_anim); @@ -231,11 +231,12 @@ static void lv_bar_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) lv_anim_del(&bar->start_value_anim, NULL); } -static void draw_indic(lv_obj_t * obj) +static void draw_indic(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_bar_t * bar = (lv_bar_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_area_t bar_coords; lv_obj_get_coords(obj, &bar_coords); @@ -465,21 +466,24 @@ static void draw_indic(lv_obj_t * obj) #endif } -static void lv_bar_event(lv_obj_t * obj, lv_event_t e) +static void lv_bar_event(lv_event_t * e) { LV_ASSERT_OBJ(obj, MY_CLASS); lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { lv_coord_t indic_size; indic_size = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR); /*Bg size is handled by lv_obj*/ - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, indic_size); /*Calculate the indicator area*/ @@ -492,11 +496,11 @@ static void lv_bar_event(lv_obj_t * obj, lv_event_t e) if(pad < 0) { *s = LV_MAX(*s, -pad); } - } else if(e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED) { + } else if(code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED) { lv_bar_t * bar = (lv_bar_t *)obj; lv_obj_invalidate_area(obj, &bar->indic_area); - } else if(e == LV_EVENT_DRAW_MAIN) { - draw_indic(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + draw_indic(e); } } diff --git a/src/widgets/lv_btnmatrix.c b/src/widgets/lv_btnmatrix.c index 70d65a997..c971bd26c 100644 --- a/src/widgets/lv_btnmatrix.c +++ b/src/widgets/lv_btnmatrix.c @@ -34,8 +34,8 @@ **********************/ static void lv_btnmatrix_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_btnmatrix_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e); -static void draw_main(lv_obj_t * obj); +static void lv_btnmatrix_event(lv_event_t * e); +static void draw_main(lv_event_t * e); static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits); static bool button_is_hidden(lv_btnmatrix_ctrl_t ctrl_bits); @@ -386,25 +386,27 @@ static void lv_btnmatrix_destructor(const lv_obj_class_t * class_p, lv_obj_t * o LV_TRACE_OBJ_CREATE("finshed"); } -static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) +static void lv_btnmatrix_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj; lv_point_t p; - if(e == LV_EVENT_STYLE_CHANGED) { + if(code == LV_EVENT_STYLE_CHANGED) { lv_btnmatrix_set_map(obj, btnm->map_p); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { lv_btnmatrix_set_map(obj, btnm->map_p); } - else if(e == LV_EVENT_PRESSED) { - void * param = lv_event_get_param(); + else if(code == LV_EVENT_PRESSED) { + void * param = lv_event_get_param(e); invalidate_button_area(obj, btnm->btn_id_sel); lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); @@ -433,8 +435,8 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_PRESSING) { - void * param = lv_event_get_param(); + else if(code == LV_EVENT_PRESSING) { + void * param = lv_event_get_param(e); uint16_t btn_pr = LV_BTNMATRIX_BTN_NONE; /*Search the pressed area*/ lv_indev_t * indev = lv_indev_get_act(); @@ -465,7 +467,7 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) { /*Toggle the button if enabled*/ if(button_is_tgl_enabled(btnm->ctrl_bits[btnm->btn_id_sel]) && @@ -497,7 +499,7 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE; } } - else if(e == LV_EVENT_LONG_PRESSED_REPEAT) { + else if(code == LV_EVENT_LONG_PRESSED_REPEAT) { if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) { if(button_is_repeat_disabled(btnm->ctrl_bits[btnm->btn_id_sel]) == false && button_is_inactive(btnm->ctrl_bits[btnm->btn_id_sel]) == false && @@ -508,11 +510,11 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_PRESS_LOST) { + else if(code == LV_EVENT_PRESS_LOST) { invalidate_button_area(obj, btnm->btn_id_sel); btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE; } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { lv_indev_t * indev = lv_indev_get_act(); lv_indev_type_t indev_type = lv_indev_get_type(indev); @@ -541,15 +543,15 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) btnm->btn_id_sel = b; } } - else if(e == LV_EVENT_DEFOCUSED || e == LV_EVENT_LEAVE) { + else if(code == LV_EVENT_DEFOCUSED || code == LV_EVENT_LEAVE) { if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) invalidate_button_area(obj, btnm->btn_id_sel); btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE; } - else if(e == LV_EVENT_KEY) { + else if(code == LV_EVENT_KEY) { invalidate_button_area(obj, btnm->btn_id_sel); - char c = *((char *)lv_event_get_param()); + char c = *((char *)lv_event_get_param(e)); if(c == LV_KEY_RIGHT) { if(btnm->btn_id_sel == LV_BTNMATRIX_BTN_NONE) btnm->btn_id_sel = 0; else btnm->btn_id_sel++; @@ -626,18 +628,19 @@ static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e) } invalidate_button_area(obj, btnm->btn_id_sel); - } else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj; if(btnm->btn_cnt == 0) return; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); obj->skip_trans = 1; lv_area_t area_obj; diff --git a/src/widgets/lv_chart.c b/src/widgets/lv_chart.c index df56d87f8..2a9b1e5c8 100644 --- a/src/widgets/lv_chart.c +++ b/src/widgets/lv_chart.c @@ -38,7 +38,7 @@ **********************/ static void lv_chart_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_chart_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_chart_event(lv_obj_t * obj, lv_event_t e); +static void lv_chart_event(lv_event_t * e); static void draw_div_lines(lv_obj_t * obj , const lv_area_t * mask); static void draw_series_line(lv_obj_t * obj, const lv_area_t * clip_area); @@ -611,16 +611,19 @@ static void lv_chart_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) LV_TRACE_OBJ_CREATE("finished"); } -static void lv_chart_event(lv_obj_t * obj, lv_event_t e) +static void lv_chart_event(lv_event_t * e) { /*Call the ancestor's event handler*/ lv_res_t res; - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + lv_chart_t * chart = (lv_chart_t *)obj; - if(e == LV_EVENT_PRESSED) { + if(code == LV_EVENT_PRESSED) { lv_indev_t * indev = lv_indev_get_act(); lv_point_t p; lv_indev_get_point(indev, &p); @@ -633,19 +636,19 @@ static void lv_chart_event(lv_obj_t * obj, lv_event_t e) chart->pressed_point_id = id; lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); } - } else if(e == LV_EVENT_RELEASED) { + } else if(code == LV_EVENT_RELEASED) { invalidate_point(obj, chart->pressed_point_id); chart->pressed_point_id = LV_CHART_POINT_NONE; - } else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { - lv_coord_t * s = lv_event_get_param(); + } else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX4(*s, chart->tick[LV_CHART_AXIS_X].draw_size, chart->tick[LV_CHART_AXIS_PRIMARY_Y].draw_size, chart->tick[LV_CHART_AXIS_SECONDARY_Y].draw_size); - } else if(e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param(); + } else if(code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e); p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8; p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8; - } else if(e == LV_EVENT_DRAW_MAIN) { - const lv_area_t * clip_area = lv_event_get_param(); + } else if(code == LV_EVENT_DRAW_MAIN) { + const lv_area_t * clip_area = lv_event_get_param(e); draw_div_lines(obj, clip_area); draw_axes(obj, clip_area); diff --git a/src/widgets/lv_checkbox.c b/src/widgets/lv_checkbox.c index dc433e167..4f1a1e9d6 100644 --- a/src/widgets/lv_checkbox.c +++ b/src/widgets/lv_checkbox.c @@ -28,8 +28,8 @@ **********************/ static void lv_checkbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_checkbox_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e); -static void lv_checkbox_draw(lv_obj_t * obj); +static void lv_checkbox_event(lv_event_t * e); +static void lv_checkbox_draw(lv_event_t * e); /********************** * STATIC VARIABLES @@ -140,18 +140,21 @@ static void lv_checkbox_destructor(const lv_obj_class_t * class_p, lv_obj_t * ob LV_TRACE_OBJ_CREATE("finished"); } -static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e) +static void lv_checkbox_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if (e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if (code == LV_EVENT_PRESSED || code == LV_EVENT_RELEASED) { lv_obj_invalidate(obj); } - else if (e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param(); + else if (code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e); lv_checkbox_t * cb = (lv_checkbox_t *)obj; const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); @@ -175,27 +178,28 @@ static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e) p->x = marker_size.x + txt_size.x + bg_colp; p->y = LV_MAX(marker_size.y, txt_size.y); } - else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { - lv_coord_t *s = lv_event_get_param();; + else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_coord_t *s = lv_event_get_param(e);; lv_coord_t m = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR); *s = LV_MAX(*s, m); } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0; res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v); if(res != LV_RES_OK) return; lv_obj_invalidate(obj); - } else if(e == LV_EVENT_DRAW_MAIN) { - lv_checkbox_draw(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + lv_checkbox_draw(e); } } -static void lv_checkbox_draw(lv_obj_t * obj) +static void lv_checkbox_draw(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_checkbox_t * cb = (lv_checkbox_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); lv_coord_t font_h = lv_font_get_line_height(font); diff --git a/src/widgets/lv_dropdown.c b/src/widgets/lv_dropdown.c index 423b69576..24c4c6936 100644 --- a/src/widgets/lv_dropdown.c +++ b/src/widgets/lv_dropdown.c @@ -39,13 +39,13 @@ static lv_obj_t * lv_dropdown_list_create(lv_obj_t * parent); static void lv_dropdown_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_dropdown_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e); -static void draw_main(lv_obj_t * obj); +static void lv_dropdown_event(lv_event_t * e); +static void draw_main(lv_event_t * e); static void lv_dropdownlist_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_dropdownlist_destructor(const lv_obj_class_t * class_p, lv_obj_t * list_obj); -static void lv_dropdown_list_event(lv_obj_t * list, lv_event_t e); -static void draw_list(lv_obj_t * obj); +static void lv_dropdown_list_event(lv_event_t * e); +static void draw_list(lv_event_t * e); static void draw_box(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state); static void draw_box_label(lv_obj_t * dropdown_obj, const lv_area_t * clip_area, uint16_t id, lv_state_t state); @@ -601,17 +601,19 @@ static void lv_dropdownlist_destructor(const lv_obj_class_t * class_p, lv_obj_t dropdown->list = NULL; } -static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e) +static void lv_dropdown_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_dropdown_t * dropdown = (lv_dropdown_t *)obj; - if(e == LV_EVENT_FOCUSED) { + if(code == LV_EVENT_FOCUSED) { lv_group_t * g = lv_obj_get_group(obj); bool editing = lv_group_get_editing(g); lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); @@ -625,10 +627,10 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e) lv_dropdown_close(obj); } } - else if(e == LV_EVENT_DEFOCUSED || e == LV_EVENT_LEAVE) { + else if(code == LV_EVENT_DEFOCUSED || code == LV_EVENT_LEAVE) { lv_dropdown_close(obj); } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { lv_indev_t * indev = lv_indev_get_act(); if(lv_indev_get_scroll_obj(indev) == NULL) { if(dropdown->list) { @@ -654,16 +656,16 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e) lv_obj_invalidate(obj); } } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { if(dropdown->list) lv_dropdown_close(obj); } - else if(e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param(); + else if(code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e); const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); p->y = lv_font_get_line_height(font); } - else if(e == LV_EVENT_KEY) { - char c = *((char *)lv_event_get_param()); + else if(code == LV_EVENT_KEY) { + char c = *((char *)lv_event_get_param(e)); if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) { if(dropdown->list == NULL) { lv_dropdown_open(obj); @@ -688,44 +690,47 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e) lv_dropdown_close(obj); } } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } } -static void lv_dropdown_list_event(lv_obj_t * list, lv_event_t e) +static void lv_dropdown_list_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS_LIST, list, e); + res = lv_obj_event_base(MY_CLASS_LIST, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * list = lv_event_get_target(e); lv_obj_t * dropdown_obj = ((lv_dropdown_list_t *)list)->dropdown; lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj; - if(e == LV_EVENT_RELEASED) { + if(code == LV_EVENT_RELEASED) { if(lv_indev_get_scroll_obj(lv_indev_get_act()) == NULL) { list_release_handler(list); } } - else if(e == LV_EVENT_PRESSED) { + else if(code == LV_EVENT_PRESSED) { page_press_handler(list); } - else if(e == LV_EVENT_SCROLL_BEGIN) { + else if(code == LV_EVENT_SCROLL_BEGIN) { dropdown->pr_opt_id = LV_DROPDOWN_PR_NONE; lv_obj_invalidate(list); } - else if(e == LV_EVENT_DRAW_POST) { - draw_list(list); + else if(code == LV_EVENT_DRAW_POST) { + draw_list(e); } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_dropdown_t * dropdown = (lv_dropdown_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_coord_t left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN); lv_coord_t right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN); @@ -823,12 +828,13 @@ static void draw_main(lv_obj_t * obj) } } -static void draw_list(lv_obj_t * list_obj) +static void draw_list(lv_event_t * e) { + lv_obj_t * list_obj = lv_event_get_target(e); lv_dropdown_list_t * list = (lv_dropdown_list_t *)list_obj; lv_obj_t * dropdown_obj = list->dropdown; lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); /*Draw the box labels if the list is not being deleted*/ if(dropdown->list) { diff --git a/src/widgets/lv_img.c b/src/widgets/lv_img.c index fcc55f37b..6df402f11 100644 --- a/src/widgets/lv_img.c +++ b/src/widgets/lv_img.c @@ -30,8 +30,8 @@ **********************/ static void lv_img_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_img_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_img_event(lv_obj_t * obj, lv_event_t e); -static void draw_img(lv_obj_t * obj, lv_event_t e); +static void lv_img_event(lv_event_t * e); +static void draw_img(lv_event_t * e); /********************** * STATIC VARIABLES @@ -397,26 +397,29 @@ static void lv_img_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) } } -static void lv_img_event(lv_obj_t * obj, lv_event_t e) +static void lv_img_event(lv_event_t * e) { + lv_event_code_t code = lv_event_get_code(e); + /*Ancestor events will be called during drawing*/ - if(e != LV_EVENT_DRAW_MAIN && e != LV_EVENT_DRAW_POST) { + if(code != LV_EVENT_DRAW_MAIN && code != LV_EVENT_DRAW_POST) { /*Call the ancestor's event handler*/ - lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e); + lv_res_t res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; } - lv_img_t * img = (lv_img_t *)obj; + lv_obj_t * obj = lv_event_get_target(e); + lv_img_t * img = (lv_img_t *)obj; - if(e == LV_EVENT_STYLE_CHANGED) { + if(code == LV_EVENT_STYLE_CHANGED) { /*Refresh the file name to refresh the symbol text size*/ if(img->src_type == LV_IMG_SRC_SYMBOL) { lv_img_set_src(obj, img->src); } } - else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); lv_coord_t transf_zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN); transf_zoom = (transf_zoom * img->zoom) >> 8; @@ -436,8 +439,8 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e) *s = LV_MAX(*s, pad_ori + a.y2 - h); } } - else if(e == LV_EVENT_HIT_TEST) { - lv_hit_test_info_t * info = lv_event_get_param(); + else if(code == LV_EVENT_HIT_TEST) { + lv_hit_test_info_t * info = lv_event_get_param(e); lv_coord_t zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN); zoom = (zoom * img->zoom) >> 8; @@ -447,7 +450,7 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e) /*If the object is exactly image sized (not cropped, not mosaic) and transformed *perform hit test on it's transformed area*/ if(img->w == lv_obj_get_width(obj) && img->h == lv_obj_get_height(obj) && - (zoom != LV_IMG_ZOOM_NONE || angle != 0 || img->pivot.x != img->w / 2 || img->pivot.y != img->h / 2)) { + (zoom != LV_IMG_ZOOM_NONE || angle != 0 || img->pivot.x != img->w / 2 || img->pivot.y != img->h / 2)) { lv_coord_t w = lv_obj_get_width(obj); lv_coord_t h = lv_obj_get_height(obj); @@ -466,21 +469,23 @@ static void lv_img_event(lv_obj_t * obj, lv_event_t e) info->result = _lv_area_is_point_on(&a, info->point, 0); } } - else if(e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param();; + else if(code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e);; p->x = img->w; p->y = img->h; } - else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) { - draw_img(obj, e); + else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) { + draw_img(e); } } -static void draw_img(lv_obj_t * obj, lv_event_t e) +static void draw_img(lv_event_t * e) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_img_t * img = (lv_img_t *)obj; - if(e == LV_EVENT_COVER_CHECK) { - lv_cover_check_info_t * info = lv_event_get_param(); + if(code == LV_EVENT_COVER_CHECK) { + lv_cover_check_info_t * info = lv_event_get_param(e); if(info->res == LV_DRAW_RES_MASKED) return; if(img->src_type == LV_IMG_SRC_UNKNOWN || img->src_type == LV_IMG_SRC_SYMBOL) { info->res = LV_DRAW_RES_NOT_COVER; @@ -511,7 +516,7 @@ static void draw_img(lv_obj_t * obj, lv_event_t e) zoom_final = (zoom_final * img->zoom) >> 8; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); if(zoom_final == LV_IMG_ZOOM_NONE) { if(_lv_area_is_in(clip_area, &obj->coords, 0) == false) { info->res = LV_DRAW_RES_NOT_COVER; @@ -532,7 +537,7 @@ static void draw_img(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST) { + else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST) { int32_t zoom_final = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN); zoom_final = (zoom_final * img->zoom) >> 8; @@ -565,16 +570,16 @@ static void draw_img(lv_obj_t * obj, lv_event_t e) lv_area_copy(&ori_coords, &obj->coords); lv_area_copy(&obj->coords, &bg_coords); - lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e); + lv_res_t res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; lv_area_copy(&obj->coords, &ori_coords); - if(e == LV_EVENT_DRAW_MAIN) { + if(code == LV_EVENT_DRAW_MAIN) { if(img->h == 0 || img->w == 0) return; if(zoom_final == 0) return; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_area_t img_max_area; lv_area_copy(&img_max_area, &obj->coords); diff --git a/src/widgets/lv_label.c b/src/widgets/lv_label.c index 25edcc164..aa0a3faf3 100644 --- a/src/widgets/lv_label.c +++ b/src/widgets/lv_label.c @@ -36,8 +36,8 @@ **********************/ static void lv_label_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_label_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_label_event_cb(lv_obj_t * obj, lv_event_t e); -static void draw_main(lv_obj_t * obj); +static void lv_label_event_cb(lv_event_t * e); +static void draw_main(lv_event_t * e); static void lv_label_refr_text(lv_obj_t * obj); static void lv_label_revert_dots(lv_obj_t * label); @@ -738,39 +738,43 @@ static void lv_label_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) label->text = NULL; } -static void lv_label_event_cb(lv_obj_t * obj, lv_event_t e) +static void lv_label_event_cb(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_STYLE_CHANGED) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_STYLE_CHANGED) { /*Revert dots for proper refresh*/ lv_label_revert_dots(obj); lv_label_refr_text(obj); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { lv_label_revert_dots(obj); lv_label_refr_text(obj); } - else if(e == LV_EVENT_BASE_DIR_CHANGED) { + else if(code == LV_EVENT_BASE_DIR_CHANGED) { #if LV_USE_BIDI lv_label_t * label = (lv_label_t *)obj; if(label->static_txt == 0) lv_label_set_text(obj, NULL); #endif } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_label_t * label = (lv_label_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_area_t txt_coords; get_txt_coords(obj, &txt_coords); diff --git a/src/widgets/lv_line.c b/src/widgets/lv_line.c index fddef75f1..047ec68aa 100644 --- a/src/widgets/lv_line.c +++ b/src/widgets/lv_line.c @@ -29,7 +29,7 @@ * STATIC PROTOTYPES **********************/ static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_line_event(lv_obj_t * obj, lv_event_t e); +static void lv_line_event(lv_event_t * e); /********************** * STATIC VARIABLES @@ -119,24 +119,27 @@ static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj) LV_TRACE_OBJ_CREATE("finished"); } -static void lv_line_event(lv_obj_t * obj, lv_event_t e) +static void lv_line_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { /*The corner of the skew lines is out of the intended area*/ lv_coord_t line_width = lv_obj_get_style_line_width(obj, LV_PART_MAIN); - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); if(*s < line_width) *s = line_width; } - else if(e == LV_EVENT_GET_SELF_SIZE) { + else if(code == LV_EVENT_GET_SELF_SIZE) { lv_line_t * line = (lv_line_t *)obj; - lv_point_t * p = lv_event_get_param(); + lv_point_t * p = lv_event_get_param(e); lv_coord_t w = 0; lv_coord_t h = 0; if(line->point_num > 0) { @@ -152,9 +155,9 @@ static void lv_line_event(lv_obj_t * obj, lv_event_t e) p->x = w; p->y = h; } - } else if(e == LV_EVENT_DRAW_MAIN) { + } else if(code == LV_EVENT_DRAW_MAIN) { lv_line_t * line = (lv_line_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); if(line->point_num == 0 || line->point_array == NULL) return; diff --git a/src/widgets/lv_meter.c b/src/widgets/lv_meter.c index 3f1639cf2..e1989937f 100644 --- a/src/widgets/lv_meter.c +++ b/src/widgets/lv_meter.c @@ -29,7 +29,7 @@ **********************/ static void lv_meter_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_meter_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_meter_event(lv_obj_t * obj, lv_event_t e); +static void lv_meter_event(lv_event_t * e); static void draw_arcs(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area); static void draw_ticks_and_labels(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area); static void draw_needles(lv_obj_t * obj, const lv_area_t * clip_area, const lv_area_t * scale_area); @@ -278,13 +278,15 @@ static void lv_meter_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) } -static void lv_meter_event(lv_obj_t * obj, lv_event_t e) +static void lv_meter_event(lv_event_t * e) { - lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e); + lv_res_t res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_DRAW_MAIN) { - const lv_area_t * clip_area = lv_event_get_param(); + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_MAIN) { + const lv_area_t * clip_area = lv_event_get_param(e); lv_area_t scale_area; lv_obj_get_coords_fit(obj, &scale_area); diff --git a/src/widgets/lv_roller.c b/src/widgets/lv_roller.c index 3fcc384d8..a1a55f9b2 100644 --- a/src/widgets/lv_roller.c +++ b/src/widgets/lv_roller.c @@ -29,10 +29,10 @@ * STATIC PROTOTYPES **********************/ static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_roller_event(lv_obj_t * obj, lv_event_t e); -static void lv_roller_label_event(lv_obj_t * label, lv_event_t e); -static void draw_main(lv_obj_t * obj, lv_event_t e); -static void draw_label(lv_obj_t * label_obj); +static void lv_roller_event(lv_event_t * e); +static void lv_roller_label_event(lv_event_t * e); +static void draw_main(lv_event_t * e); +static void draw_label(lv_event_t * e); static void refr_position(lv_obj_t * obj, lv_anim_enable_t animen); static lv_res_t release_handler(lv_obj_t * obj); static void inf_normalize(lv_obj_t * obj_scrl); @@ -302,35 +302,37 @@ static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj LV_LOG_TRACE("finshed"); } -static void lv_roller_event(lv_obj_t * obj, lv_event_t e) +static void lv_roller_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_roller_t * roller = (lv_roller_t*)obj; - if(e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param(); + if(code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e); p->x = get_selected_label_width(obj); } - else if(e == LV_EVENT_STYLE_CHANGED) { + else if(code == LV_EVENT_STYLE_CHANGED) { lv_obj_t * label = get_label(obj); /*Be sure the label's style is updated before processing the roller*/ if(label) lv_event_send(label, LV_EVENT_STYLE_CHANGED, NULL); lv_obj_handle_self_size_chg(obj); refr_position(obj, false); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { refr_position(obj, false); } - else if(e == LV_EVENT_PRESSED) { + else if(code == LV_EVENT_PRESSED) { roller->moved = 0; lv_anim_del(get_label(obj), set_y_anim); } - else if(e == LV_EVENT_PRESSING) { + else if(code == LV_EVENT_PRESSING) { lv_indev_t * indev = lv_indev_get_act(); lv_point_t p; lv_indev_get_vect(indev, &p); @@ -340,10 +342,10 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e) roller->moved = 1; } } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { release_handler(obj); } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { lv_group_t * g = lv_obj_get_group(obj); bool editing = lv_group_get_editing(g); lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); @@ -367,15 +369,15 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e) ENTER won't be pressed*/ } } - else if(e == LV_EVENT_DEFOCUSED) { + else if(code == LV_EVENT_DEFOCUSED) { /*Revert the original state*/ if(roller->sel_opt_id != roller->sel_opt_id_ori) { roller->sel_opt_id = roller->sel_opt_id_ori; refr_position(obj, true); } } - else if(e == LV_EVENT_KEY) { - char c = *((char *)lv_event_get_param()); + else if(code == LV_EVENT_KEY) { + char c = *((char *)lv_event_get_param(e)); if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) { if(roller->sel_opt_id + 1 < roller->option_cnt) { uint16_t ori_id = roller->sel_opt_id_ori; /*lv_roller_set_selected will overwrite this*/ @@ -392,44 +394,48 @@ static void lv_roller_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST) { - draw_main(obj, e); + else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST) { + draw_main(e); } } -static void lv_roller_label_event(lv_obj_t * label, lv_event_t e) +static void lv_roller_label_event(lv_event_t * e) { lv_res_t res; + lv_event_code_t code = lv_event_get_code(e); /*LV_EVENT_DRAW_MAIN will be called in the draw function*/ - if(e != LV_EVENT_DRAW_MAIN) { + if(code != LV_EVENT_DRAW_MAIN) { /* Call the ancestor's event handler */ - res = lv_obj_event_base(MY_CLASS_LABEL, label, e); + res = lv_obj_event_base(MY_CLASS_LABEL, e); if(res != LV_RES_OK) return; } - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_obj_t * label = lv_event_get_target(e); + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { /*If the selected text has a larger font it needs some extra space to draw it*/ - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); lv_obj_t * obj = lv_obj_get_parent(label); lv_coord_t sel_w = get_selected_label_width(obj); lv_coord_t label_w = lv_obj_get_width(label); *s = LV_MAX(*s, sel_w - label_w); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { refr_position(lv_obj_get_parent(label), LV_ANIM_OFF); } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_label(label); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_label(e); } } -static void draw_main(lv_obj_t * obj, lv_event_t e) +static void draw_main(lv_event_t * e) { - if(e == LV_EVENT_DRAW_MAIN) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + if(code == LV_EVENT_DRAW_MAIN) { /*Draw the selected rectangle*/ - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); lv_coord_t line_space = lv_obj_get_style_text_line_space(obj, LV_PART_MAIN); lv_coord_t font_h = lv_font_get_line_height(font); @@ -448,8 +454,8 @@ static void draw_main(lv_obj_t * obj, lv_event_t e) lv_draw_rect(&rect_area, clip_area, &sel_dsc); } /*Post draw when the children are drawn*/ - else if(e == LV_EVENT_DRAW_POST) { - const lv_area_t * clip_area = lv_event_get_param(); + else if(code == LV_EVENT_DRAW_POST) { + const lv_area_t * clip_area = lv_event_get_param(e); lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_init(&label_dsc); @@ -504,10 +510,11 @@ static void draw_main(lv_obj_t * obj, lv_event_t e) } } -static void draw_label(lv_obj_t * label_obj) +static void draw_label(lv_event_t * e) { /* Split the drawing of the label into an upper (above the selected area) * and a lower (below the selected area)*/ + lv_obj_t * label_obj = lv_event_get_target(e); lv_obj_t * roller = lv_obj_get_parent(label_obj); lv_draw_label_dsc_t label_draw_dsc; lv_draw_label_dsc_init(&label_draw_dsc); @@ -515,7 +522,7 @@ static void draw_label(lv_obj_t * label_obj) const lv_font_t * font = label_draw_dsc.font; lv_coord_t line_space = label_draw_dsc.line_space; lv_coord_t font_h = lv_font_get_line_height(font); - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_area_t rect_area; rect_area.y1 = roller->coords.y1 + (lv_obj_get_height(roller) - font_h - line_space) / 2; diff --git a/src/widgets/lv_slider.c b/src/widgets/lv_slider.c index 62927c5f9..ef8f57eba 100644 --- a/src/widgets/lv_slider.c +++ b/src/widgets/lv_slider.c @@ -32,9 +32,9 @@ * STATIC PROTOTYPES **********************/ static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_slider_event(lv_obj_t * obj, lv_event_t e); +static void lv_slider_event(lv_event_t * e); static void position_knob(lv_obj_t * obj, lv_area_t * knob_area, lv_coord_t knob_size, bool hor); -static void draw_knob(lv_obj_t * obj); +static void draw_knob(lv_event_t * e); /********************** * STATIC VARIABLES @@ -90,20 +90,22 @@ static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj lv_obj_set_height(obj, LV_DPX(10)); } -static void lv_slider_event(lv_obj_t * obj, lv_event_t e) +static void lv_slider_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_slider_t * slider = (lv_slider_t *)obj; lv_slider_mode_t type = lv_slider_get_mode(obj); /*Advanced hit testing: react only on dragging the knob(s)*/ - if(e == LV_EVENT_HIT_TEST) { - lv_hit_test_info_t * info = lv_event_get_param(); + if(code == LV_EVENT_HIT_TEST) { + lv_hit_test_info_t * info = lv_event_get_param(e); /*Ordinary slider: was the knob area hit?*/ info->result = _lv_area_is_point_on(&slider->right_knob_area, info->point, 0); @@ -113,7 +115,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) info->result = _lv_area_is_point_on(&slider->left_knob_area, info->point, 0); } } - else if(e == LV_EVENT_PRESSED) { + else if(code == LV_EVENT_PRESSED) { lv_point_t p; slider->dragging = true; if(type == LV_SLIDER_MODE_NORMAL || type == LV_SLIDER_MODE_SYMMETRICAL) { @@ -175,7 +177,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) } } } - else if(e == LV_EVENT_PRESSING && slider->value_to_set != NULL) { + else if(code == LV_EVENT_PRESSING && slider->value_to_set != NULL) { lv_indev_t * indev = lv_indev_get_act(); if(lv_indev_get_type(indev) != LV_INDEV_TYPE_POINTER) return; @@ -233,7 +235,7 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) } } - else if(e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) { + else if(code == LV_EVENT_RELEASED || code == LV_EVENT_PRESS_LOST) { slider->dragging = false; slider->value_to_set = NULL; @@ -257,16 +259,16 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) } } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) { slider->left_knob_focus = 0; } } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { lv_obj_refresh_ext_draw_size(obj); } - else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + else if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB); lv_coord_t knob_right = lv_obj_get_style_pad_right(obj,LV_PART_KNOB); lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB); @@ -282,12 +284,12 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB); /*Indic. size is handled by bar*/ - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, knob_size); } - else if(e == LV_EVENT_KEY) { - char c = *((char *)lv_event_get_param()); + else if(code == LV_EVENT_KEY) { + char c = *((char *)lv_event_get_param(e)); if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { if(!slider->left_knob_focus) lv_slider_set_value(obj, lv_slider_get_value(obj) + 1, LV_ANIM_ON); @@ -303,15 +305,16 @@ static void lv_slider_event(lv_obj_t * obj, lv_event_t e) res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); if(res != LV_RES_OK) return; } - } else if(e == LV_EVENT_DRAW_MAIN) { - draw_knob(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + draw_knob(e); } } -static void draw_knob(lv_obj_t * obj) +static void draw_knob(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_slider_t * slider = (lv_slider_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj); lv_coord_t objw = lv_obj_get_width(obj); diff --git a/src/widgets/lv_switch.c b/src/widgets/lv_switch.c index 62887a92b..752f93a81 100644 --- a/src/widgets/lv_switch.c +++ b/src/widgets/lv_switch.c @@ -34,8 +34,8 @@ * STATIC PROTOTYPES **********************/ static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_switch_event(lv_obj_t * obj, lv_event_t e); -static void draw_main(lv_obj_t * obj); +static void lv_switch_event(lv_event_t * e); +static void draw_main(lv_event_t * e); /********************** * STATIC VARIABLES @@ -80,15 +80,18 @@ static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj } -static void lv_switch_event(lv_obj_t * obj, lv_event_t e) +static void lv_switch_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; - if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); + + if(code == LV_EVENT_REFR_EXT_DRAW_SIZE) { lv_coord_t knob_left = lv_obj_get_style_pad_left(obj, LV_PART_KNOB); lv_coord_t knob_right = lv_obj_get_style_pad_right(obj, LV_PART_KNOB); lv_coord_t knob_top = lv_obj_get_style_pad_top(obj, LV_PART_KNOB); @@ -99,25 +102,26 @@ static void lv_switch_event(lv_obj_t * obj, lv_event_t e) knob_size += 2; /*For rounding error*/ knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB); - lv_coord_t * s = lv_event_get_param(); + lv_coord_t * s = lv_event_get_param(e); *s = LV_MAX(*s, knob_size); *s = LV_MAX(*s, lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR)); } - else if(e == LV_EVENT_CLICKED) { + else if(code == LV_EVENT_CLICKED) { uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0; res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v); if(res != LV_RES_OK) return; lv_obj_invalidate(obj); } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { - const lv_area_t * clip_area = lv_event_get_param(); + lv_obj_t * obj = lv_event_get_target(e); + const lv_area_t * clip_area = lv_event_get_param(e); lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj); /*Calculate the indicator area*/ diff --git a/src/widgets/lv_table.c b/src/widgets/lv_table.c index 7de7e0518..184d9ed2e 100644 --- a/src/widgets/lv_table.c +++ b/src/widgets/lv_table.c @@ -31,8 +31,8 @@ **********************/ static void lv_table_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_table_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_table_event(lv_obj_t * obj, lv_event_t e); -static void draw_main(lv_obj_t * obj); +static void lv_table_event(lv_event_t * e); +static void draw_main(lv_event_t * e); static lv_coord_t get_row_height(lv_obj_t * obj, uint16_t row_id, const lv_font_t * font, lv_coord_t letter_space, lv_coord_t line_space, lv_coord_t cell_left, lv_coord_t cell_right, lv_coord_t cell_top, lv_coord_t cell_bottom); @@ -438,21 +438,23 @@ static void lv_table_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj) if(table->row_h) lv_mem_free(table->row_h); } -static void lv_table_event(lv_obj_t * obj, lv_event_t e) +static void lv_table_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_table_t * table = (lv_table_t *)obj; - if(e == LV_EVENT_STYLE_CHANGED) { + if(code == LV_EVENT_STYLE_CHANGED) { refr_size(obj, 0); } - else if(e == LV_EVENT_GET_SELF_SIZE) { - lv_point_t * p = lv_event_get_param(); + else if(code == LV_EVENT_GET_SELF_SIZE) { + lv_point_t * p = lv_event_get_param(e); uint32_t i; lv_coord_t w = 0; for(i = 0; i < table->col_cnt; i++) w += table->col_w[i]; @@ -463,7 +465,7 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e) p->x = w; p->y = h; } - else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING) { + else if(code == LV_EVENT_PRESSED || code == LV_EVENT_PRESSING) { uint16_t col; uint16_t row; lv_res_t pr_res = get_pressed_cell(obj, &row, &col); @@ -474,7 +476,7 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e) } lv_obj_invalidate(obj); } - else if(e == LV_EVENT_RELEASED) { + else if(code == LV_EVENT_RELEASED) { lv_obj_invalidate(obj); lv_indev_t * indev = lv_indev_get_act(); lv_obj_t * scroll_obj = lv_indev_get_scroll_obj(indev); @@ -489,10 +491,10 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e) table->row_act = LV_TABLE_CELL_NONE; } } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { lv_obj_invalidate(obj); - } else if(e == LV_EVENT_KEY) { - int32_t c = *((int32_t *)lv_event_get_param()); + } else if(code == LV_EVENT_KEY) { + int32_t c = *((int32_t *)lv_event_get_param(e)); int32_t col = table->col_act; int32_t row = table->row_act; if(col == LV_TABLE_CELL_NONE || row == LV_TABLE_CELL_NONE) { @@ -541,16 +543,17 @@ static void lv_table_event(lv_obj_t * obj, lv_event_t e) res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); if(res != LV_RES_OK) return; } - } else if(e == LV_EVENT_DRAW_MAIN) { - draw_main(obj); + } else if(code == LV_EVENT_DRAW_MAIN) { + draw_main(e); } } -static void draw_main(lv_obj_t * obj) +static void draw_main(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_table_t * table = (lv_table_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); lv_point_t txt_size; lv_area_t cell_area; diff --git a/src/widgets/lv_textarea.c b/src/widgets/lv_textarea.c index d68c45eb9..a12a44ab7 100644 --- a/src/widgets/lv_textarea.c +++ b/src/widgets/lv_textarea.c @@ -44,7 +44,7 @@ **********************/ static void lv_textarea_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); static void lv_textarea_destructor(const lv_obj_class_t * class_p, lv_obj_t * obj); -static void lv_textarea_event(lv_obj_t * obj, lv_event_t e); +static void lv_textarea_event(lv_event_t * e); static void cursor_blink_anim_cb(void * obj, int32_t show); static void pwd_char_hider_anim(void * obj, int32_t x); static void pwd_char_hider_anim_ready(lv_anim_t * a); @@ -52,10 +52,10 @@ static void pwd_char_hider(lv_obj_t * obj); static bool char_is_accepted(lv_obj_t * obj, uint32_t c); static void start_cursor_blink(lv_obj_t * obj); static void refr_cursor_area(lv_obj_t * obj); -static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e); +static void update_cursor_position_on_click(lv_event_t * e); static lv_res_t insert_handler(lv_obj_t * obj, const char * txt); -static void draw_placeholder(lv_obj_t * obj); -static void draw_cursor(lv_obj_t * obj); +static void draw_placeholder(lv_event_t * e); +static void draw_cursor(lv_event_t * e); /********************** * STATIC VARIABLES @@ -843,26 +843,28 @@ static void lv_textarea_destructor(const lv_obj_class_t * class_p, lv_obj_t * ob } } -static void lv_textarea_event(lv_obj_t * obj, lv_event_t e) +static void lv_textarea_event(lv_event_t * e) { lv_res_t res; /*Call the ancestor's event handler*/ - res = lv_obj_event_base(MY_CLASS, obj, e); + res = lv_obj_event_base(MY_CLASS, e); if(res != LV_RES_OK) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_textarea_t * ta = (lv_textarea_t *)obj; - if(e == LV_EVENT_STYLE_CHANGED) { + if(code == LV_EVENT_STYLE_CHANGED) { if(ta->label) { lv_label_set_text(ta->label, NULL); refr_cursor_area(obj); start_cursor_blink(obj); } } - else if(e == LV_EVENT_FOCUSED) { + else if(code == LV_EVENT_FOCUSED) { start_cursor_blink(obj); } - else if(e == LV_EVENT_SIZE_CHANGED) { + else if(code == LV_EVENT_SIZE_CHANGED) { /*Set the label width according to the text area width*/ if(ta->label) { lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj)); @@ -872,8 +874,8 @@ static void lv_textarea_event(lv_obj_t * obj, lv_event_t e) refr_cursor_area(obj); } } - else if(e == LV_EVENT_KEY) { - uint32_t c = *((uint32_t *)lv_event_get_param()); /*uint32_t because can be UTF-8*/ + else if(code == LV_EVENT_KEY) { + uint32_t c = *((uint32_t *)lv_event_get_param(e)); /*uint32_t because can be UTF-8*/ if(c == LV_KEY_RIGHT) lv_textarea_cursor_right(obj); else if(c == LV_KEY_LEFT) @@ -896,15 +898,15 @@ static void lv_textarea_event(lv_obj_t * obj, lv_event_t e) lv_textarea_add_char(obj, c); } } - else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING || e == LV_EVENT_PRESS_LOST || - e == LV_EVENT_RELEASED) { - update_cursor_position_on_click(obj, e); + else if(code == LV_EVENT_PRESSED || code == LV_EVENT_PRESSING || code == LV_EVENT_PRESS_LOST || + code == LV_EVENT_RELEASED) { + update_cursor_position_on_click(e); } - else if(e == LV_EVENT_DRAW_MAIN) { - draw_placeholder(obj); + else if(code == LV_EVENT_DRAW_MAIN) { + draw_placeholder(e); } - else if(e == LV_EVENT_DRAW_POST) { - draw_cursor(obj); + else if(code == LV_EVENT_DRAW_POST) { + draw_cursor(e); } } @@ -1129,11 +1131,13 @@ static void refr_cursor_area(lv_obj_t * obj) lv_obj_invalidate_area(obj, &area_tmp); } -static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e) +static void update_cursor_position_on_click(lv_event_t * e) { lv_indev_t * click_source = lv_indev_get_act(); if(click_source == NULL) return; + lv_event_code_t code = lv_event_get_code(e); + lv_obj_t * obj = lv_event_get_target(e); lv_textarea_t * ta = (lv_textarea_t *)obj; if(ta->cursor.click_pos == 0) return; @@ -1184,11 +1188,11 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e) ta->text_sel_in_prog = 1; lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); } - else if(ta->text_sel_in_prog && e == LV_EVENT_PRESSING) { + else if(ta->text_sel_in_prog && code == LV_EVENT_PRESSING) { /*Input device may be moving. Store the end position*/ ta->sel_end = char_id_at_click; } - else if(ta->text_sel_in_prog && (e == LV_EVENT_PRESS_LOST || e == LV_EVENT_RELEASED)) { + else if(ta->text_sel_in_prog && (code == LV_EVENT_PRESS_LOST || code == LV_EVENT_RELEASED)) { /*Input device is released. Check if anything was selected.*/ lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); } @@ -1222,7 +1226,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e) } } /*Finish selection if necessary*/ - if(e == LV_EVENT_PRESS_LOST || e == LV_EVENT_RELEASED) { + if(code == LV_EVENT_PRESS_LOST || code == LV_EVENT_RELEASED) { ta->text_sel_in_prog = 0; } } @@ -1239,7 +1243,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e) char_id_at_click = lv_label_get_letter_on(ta->label, &rel_pos); } - if(e == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click); + if(code == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click); #endif } @@ -1260,10 +1264,11 @@ static lv_res_t insert_handler(lv_obj_t * obj, const char * txt) return LV_RES_OK; } -static void draw_placeholder(lv_obj_t * obj) +static void draw_placeholder(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_textarea_t * ta = (lv_textarea_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); const char * txt = lv_label_get_text(ta->label); /*Draw the place holder*/ @@ -1286,10 +1291,11 @@ static void draw_placeholder(lv_obj_t * obj) } } -static void draw_cursor(lv_obj_t * obj) +static void draw_cursor(lv_event_t * e) { + lv_obj_t * obj = lv_event_get_target(e); lv_textarea_t * ta = (lv_textarea_t *)obj; - const lv_area_t * clip_area = lv_event_get_param(); + const lv_area_t * clip_area = lv_event_get_param(e); const char * txt = lv_label_get_text(ta->label); if(ta->cursor.show == 0) return;