Merge branch 'feat/new-event'

This commit is contained in:
Gabor Kiss-Vamosi
2021-04-15 18:32:14 +02:00
67 changed files with 688 additions and 506 deletions

View File

@@ -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) 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"); printf("Clicked\n");
} }
} }

View File

@@ -176,7 +176,7 @@ There are 2 custom pointer that are available in the events:
- `user_data`: set when the event is registered. - `user_data`: set when the event is registered.
- `event_param`: set when the event is sent in `lv_event_send` - `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 ## Event bubbling

View File

@@ -1,9 +1,11 @@
#include "../lv_examples.h" #include "../lv_examples.h"
#if LV_BUILD_EXAMPLES && LV_USE_BTN #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; static uint8_t cnt = 0;
cnt++; cnt++;

View File

@@ -3,9 +3,12 @@
static lv_obj_t * label; 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*/ /*Refresh the text*/
lv_label_set_text_fmt(label, "%d", lv_slider_get_value(slider)); 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*/ lv_obj_align_to(label, slider, LV_ALIGN_OUT_TOP_MID, 0, -15); /*Align below the slider*/

View File

@@ -1,10 +1,13 @@
#include "../lv_examples.h" #include "../lv_examples.h"
#if LV_BUILD_EXAMPLES && LV_USE_FLEX #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_event_code_t code = lv_event_get_code(e);
lv_obj_t * list = lv_event_get_user_data(); 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); 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); else lv_obj_clear_flag(list, LV_OBJ_FLAG_SCROLL_ONE);

View File

@@ -3,10 +3,13 @@
static uint32_t btn_cnt = 1; 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_event_code_t code = lv_event_get_code(e);
lv_obj_t * list = lv_event_get_user_data(); 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]; char buf[32];
lv_snprintf(buf, sizeof(buf), "Track %d", btn_cnt); lv_snprintf(buf, sizeof(buf), "Track %d", btn_cnt);
lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf, NULL); lv_obj_t * list_btn = lv_list_add_btn(list, LV_SYMBOL_AUDIO, buf, NULL);

View File

@@ -8,7 +8,7 @@
//static void event_cb(lv_obj_t * obj, lv_event_t e) //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_bar_t * bar = (lv_bar_t *)obj;
// //
// lv_draw_label_dsc_t dsc; // 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.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; // 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); // lv_draw_label(&txt_area, clip_area, &dsc, buf, NULL);
// } // }
//} //}

View File

@@ -1,13 +1,14 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_BTN && LV_BUILD_EXAMPLES #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); lv_event_code_t code = lv_event_get_code(e);
if(event == LV_EVENT_CLICKED) {
if(code == LV_EVENT_CLICKED) {
LV_LOG_USER("Clicked"); LV_LOG_USER("Clicked");
} }
else if(event == LV_EVENT_VALUE_CHANGED) { else if(code == LV_EVENT_VALUE_CHANGED) {
LV_LOG_USER("Toggled"); LV_LOG_USER("Toggled");
} }
} }

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES #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); uint32_t id = lv_btnmatrix_get_selected_btn(obj);
const char * txt = lv_btnmatrix_get_btn_text(obj, id); const char * txt = lv_btnmatrix_get_btn_text(obj, id);

View File

@@ -2,10 +2,12 @@
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES #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_event_code_t code = lv_event_get_code(e);
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); 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*/ /*Change the draw descriptor the 2nd button*/
if(dsc->id == 1) { 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) { if(code == LV_EVENT_DRAW_PART_END) {
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
/*Add custom content to the 4th button when the button itself was drawn*/ /*Add custom content to the 4th button when the button itself was drawn*/
if(dsc->id == 3) { if(dsc->id == 3) {

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_BTNMATRIX && LV_BUILD_EXAMPLES #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); uint32_t id = lv_btnmatrix_get_selected_btn(obj);
bool prev = id == 0 ? true : false; bool prev = id == 0 ? true : false;
bool next = id == 6 ? true : false; bool next = id == 6 ? true : false;

View File

@@ -1,9 +1,12 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_CALENDAR && LV_BUILD_EXAMPLES #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; lv_calendar_date_t date;
if(lv_calendar_get_pressed_date(obj, &date)) { if(lv_calendar_get_pressed_date(obj, &date)) {
LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year); LV_LOG_USER("Clicked date: %02d.%02d.%d", date.day, date.month, date.year);

View File

@@ -5,11 +5,14 @@ static lv_obj_t * chart1;
static lv_chart_series_t * ser1; static lv_chart_series_t * ser1;
static lv_chart_series_t * ser2; 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*/ /*Add the faded area before the lines are drawn*/
if(e == LV_EVENT_DRAW_PART_BEGIN) { if(code == LV_EVENT_DRAW_PART_BEGIN) {
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
if(dsc->part != LV_PART_ITEMS) return; if(dsc->part != LV_PART_ITEMS) return;
if(!dsc->p1 || !dsc->p2) return; if(!dsc->p1 || !dsc->p2) return;

View File

@@ -1,11 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_CHART && LV_BUILD_EXAMPLES #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); lv_event_code_t code = lv_event_get_code(e);
if(e == LV_EVENT_DRAW_PART_BEGIN) { if(code == LV_EVENT_DRAW_PART_BEGIN) {
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); lv_obj_draw_dsc_t * dsc = lv_event_get_param(e);
if(dsc->part == LV_PART_TICKS && dsc->id == LV_CHART_AXIS_X) { 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"}; 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]); lv_snprintf(dsc->text, sizeof(dsc->text), "%s", month[dsc->value]);

View File

@@ -2,16 +2,19 @@
#if LV_USE_CHART && LV_BUILD_EXAMPLES #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); lv_obj_invalidate(chart);
} }
if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) { 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);
*s = LV_MAX(*s, 20); *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); int32_t id = lv_chart_get_pressed_point(chart);
if(id == LV_CHART_POINT_NONE) return; 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.y1 = chart->coords.y1 + p.y - 30;
a.y2 = chart->coords.y1 + p.y - 10; 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); lv_draw_rect(&a, clip_area, &draw_rect_dsc);
ser = lv_chart_get_series_next(chart, ser); ser = lv_chart_get_series_next(chart, ser);

View File

@@ -46,17 +46,21 @@ static const lv_coord_t ecg_sample[] = {
70, 74, 76, 79, 82, 79, 75, 62, 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); int32_t v = lv_slider_get_value(obj);
lv_chart_set_zoom_x(chart, v); 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)); lv_chart_set_zoom_y(chart, lv_slider_get_value(obj));
} }
} }

View File

@@ -5,10 +5,13 @@ static lv_obj_t * chart;
static lv_chart_series_t * ser; static lv_chart_series_t * ser;
static lv_chart_cursor_t * cursor; 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; 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); last_id = lv_chart_get_pressed_point(obj);
if(last_id != LV_CHART_POINT_NONE) { if(last_id != LV_CHART_POINT_NONE) {
lv_point_t p; 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); lv_chart_set_cursor_point(obj, cursor, &p);
} }
} }
else if(e == LV_EVENT_DRAW_PART_END) { else if(code == LV_EVENT_DRAW_PART_END) {
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); 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) { 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 * data_array = lv_chart_get_array(chart, ser);
lv_coord_t v = data_array[last_id]; lv_coord_t v = data_array[last_id];

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_CHECKBOX && LV_BUILD_EXAMPLES #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 * txt = lv_checkbox_get_text(obj);
const char * state = lv_obj_get_state(obj) & LV_STATE_CHECKED ? "Checked" : "Unchecked"; const char * state = lv_obj_get_state(obj) & LV_STATE_CHECKED ? "Checked" : "Unchecked";
LV_LOG_USER("%s: %s\n", txt, state); LV_LOG_USER("%s: %s\n", txt, state);

View File

@@ -1,14 +1,14 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES #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) { lv_event_code_t code = lv_event_get_code(e);
#if LV_USE_LOG /*To avoid warnings if LV_LOG_USER is empty*/ lv_obj_t * obj = lv_event_get_target(e);
if(code == LV_EVENT_VALUE_CHANGED) {
char buf[32]; char buf[32];
lv_dropdown_get_selected_str(obj, buf, sizeof(buf)); lv_dropdown_get_selected_str(obj, buf, sizeof(buf));
LV_LOG_USER("Option: %s", buf); LV_LOG_USER("Option: %s", buf);
#endif
} }
} }

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_DROPDOWN && LV_BUILD_EXAMPLES #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]; char buf[64];
lv_dropdown_get_selected_str(dropdown, buf, sizeof(buf)); lv_dropdown_get_selected_str(dropdown, buf, sizeof(buf));
LV_LOG_USER("'%s' is selected", buf); LV_LOG_USER("'%s' is selected", buf);

View File

@@ -2,7 +2,7 @@
#if LV_USE_IMG && LV_USE_SLIDER && LV_BUILD_EXAMPLES #if LV_USE_IMG && LV_USE_SLIDER && LV_BUILD_EXAMPLES
static lv_obj_t * create_slider(lv_color_t color); 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 * red_slider, * green_slider, * blue_slider, * intense_slider;
static lv_obj_t * img1; 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); 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*/ /*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_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); lv_opa_t intense = lv_slider_get_value(intense_slider);

View File

@@ -1,15 +1,17 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_KEYBOARD && LV_BUILD_EXAMPLES #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(); lv_event_code_t code = lv_event_get_code(e);
if(e == LV_EVENT_FOCUSED) { 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_keyboard_set_textarea(kb, ta);
lv_obj_clear_flag(kb, LV_OBJ_FLAG_HIDDEN); 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_keyboard_set_textarea(kb, NULL);
lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN); lv_obj_add_flag(kb, LV_OBJ_FLAG_HIDDEN);
} }

View File

@@ -2,9 +2,11 @@
#if LV_USE_LIST && LV_BUILD_EXAMPLES #if LV_USE_LIST && LV_BUILD_EXAMPLES
static lv_obj_t * list1; 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)); LV_LOG_USER("Clicked: %s", lv_list_get_btn_text(list1, obj));
} }
} }

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_MSGBOX && LV_BUILD_EXAMPLES #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)); LV_LOG_USER("Button %s clicked", lv_msgbox_get_active_btn_text(obj));
} }
} }

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_ROLLER && LV_BUILD_EXAMPLES #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]; char buf[32];
lv_roller_get_selected_str(obj, buf, sizeof(buf)); lv_roller_get_selected_str(obj, buf, sizeof(buf));
LV_LOG_USER("Selected month: %s\n", buf); LV_LOG_USER("Selected month: %s\n", buf);

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_ROLLER && LV_FONT_MONTSERRAT_22 && LV_BUILD_EXAMPLES #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]; char buf[32];
lv_roller_get_selected_str(obj, buf, sizeof(buf)); lv_roller_get_selected_str(obj, buf, sizeof(buf));
LV_LOG_USER("Selected value: %s\n", buf); LV_LOG_USER("Selected value: %s\n", buf);

View File

@@ -1,7 +1,7 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_SLIDER && LV_BUILD_EXAMPLES #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; 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); 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]; char buf[8];
lv_snprintf(buf, sizeof(buf), "%d%%", lv_slider_get_value(slider)); lv_snprintf(buf, sizeof(buf), "%d%%", lv_slider_get_value(slider));
lv_label_set_text(slider_label, buf); lv_label_set_text(slider_label, buf);

View File

@@ -31,7 +31,7 @@ void lv_example_slider_2(void)
// //
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event) //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]; // static char buf[8];
// lv_snprintf(buf, sizeof(buf), "%u", lv_slider_get_value(slider)); // 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); // lv_obj_set_style_content_text(slider, LV_PART_KNOB, LV_STATE_DEFAULT, buf);

View File

@@ -29,7 +29,7 @@ void lv_example_slider_3(void)
// //
//static void slider_event_cb(lv_obj_t * slider, lv_event_t event) //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]; // static char buf[8];
// lv_snprintf(buf, sizeof(buf), "%d - %d", lv_slider_get_value(slider), lv_slider_get_left_value(slider)); // 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); // lv_obj_set_style_content_text(slider, LV_PART_INDICATOR, LV_STATE_DEFAULT, buf);

View File

@@ -4,18 +4,18 @@
static lv_obj_t * spinbox; 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); lv_event_code_t code = lv_event_get_code(e);
if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) { if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
lv_spinbox_increment(spinbox); 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); lv_event_code_t code = lv_event_get_code(e);
if(e == LV_EVENT_SHORT_CLICKED || e == LV_EVENT_LONG_PRESSED_REPEAT) { if(code == LV_EVENT_SHORT_CLICKED || code == LV_EVENT_LONG_PRESSED_REPEAT) {
lv_spinbox_decrement(spinbox); lv_spinbox_decrement(spinbox);
} }
} }

View File

@@ -1,9 +1,11 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_SWITCH && LV_BUILD_EXAMPLES #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"); LV_LOG_USER("State: %s\n", lv_obj_has_state(obj, LV_STATE_CHECKED) ? "On" : "Off");
} }
} }

View File

@@ -1,10 +1,12 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_TABLE && LV_BUILD_EXAMPLES #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_event_code_t code = lv_event_get_code(e);
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); 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 the cells are drawn...*/
if(dsc->part == LV_PART_ITEMS) { if(dsc->part == LV_PART_ITEMS) {
uint32_t row = dsc->id / lv_table_get_col_cnt(obj); uint32_t row = dsc->id / lv_table_get_col_cnt(obj);

View File

@@ -3,10 +3,12 @@
#define ITEM_CNT 200 #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_event_code_t code = lv_event_get_code(e);
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); 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 the cells are drawn...*/
if(dsc->part == LV_PART_ITEMS) { if(dsc->part == LV_PART_ITEMS) {
bool chk = lv_table_has_cell_ctrl(obj, dsc->id, 0, LV_TABLE_CELL_CTRL_CUSTOM_1); 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); 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 col;
uint16_t row; uint16_t row;
lv_table_get_selected_cell(obj, &row, &col); lv_table_get_selected_cell(obj, &row, &col);

View File

@@ -2,10 +2,12 @@
#if LV_USE_TEXTAREA && LV_BUILD_EXAMPLES #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_event_code_t code = lv_event_get_code(e);
lv_obj_t * ta = lv_event_get_user_data(); 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)); 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); if(strcmp(txt, LV_SYMBOL_BACKSPACE) == 0) lv_textarea_del_char(ta);

View File

@@ -1,7 +1,7 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES #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; 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*/ 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*/ /*Focus on the clicked text area*/
if(kb != NULL) if(kb != NULL)
lv_keyboard_set_textarea(kb, ta); lv_keyboard_set_textarea(kb, ta);
} }
else if(event == LV_EVENT_INSERT) { else if(code == LV_EVENT_INSERT) {
const char * str = lv_event_get_param(); const char * str = lv_event_get_param(e);
if(str[0] == '\n') { if(str[0] == '\n') {
LV_LOG_USER("Ready\n"); LV_LOG_USER("Ready\n");
} }

View File

@@ -1,7 +1,7 @@
#include "../../lv_examples.h" #include "../../lv_examples.h"
#if LV_USE_TEXTAREA && LV_USE_KEYBOARD && LV_BUILD_EXAMPLES #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; static lv_obj_t * kb;
@@ -26,9 +26,11 @@ void lv_example_textarea_3(void)
lv_keyboard_set_textarea(kb, ta); 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); const char * txt = lv_textarea_get_text(ta);
if(txt[0] >= '0' && txt[0] <= '9' && if(txt[0] >= '0' && txt[0] <= '9' &&
txt[1] >= '0' && txt[1] <= '9' && txt[1] >= '0' && txt[1] <= '9' &&

View File

@@ -2,9 +2,11 @@
#if LV_USE_WIN && LV_BUILD_EXAMPLES #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)); LV_LOG_USER("Button %d clicked", lv_obj_get_child_id(obj));
} }
} }

View File

@@ -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_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_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);
static void lv_obj_event_cb(lv_obj_t * obj, 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 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 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 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 lv_obj_set_state(lv_obj_t * obj, lv_state_t new_state);
static void base_dir_refr_children(lv_obj_t * obj); 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 * STATIC VARIABLES
@@ -200,7 +200,7 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent)
* Event/Signal sending * 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; 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; 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; else base = class_p->base_class;
/*Find a base in which Call the ancestor's event handler_cb is set*/ /*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 == NULL) return LV_RES_OK;
if(base->event_cb == 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 /* 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 * It's important to know if an this object was deleted by a nested event
* called from this `event_cb`. */ * called from this `event_cb`. */
lv_event_temp_data_t event_temp_data; 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.deleted = false;
event_temp_data.prev = NULL; 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; event_temp_data_head = &event_temp_data;
/*Call the actual event callback*/ /*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; lv_res_t res = LV_RES_OK;
/*Stop if the object is deleted*/ /*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) 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_event_code_t code = lv_event_get_code(e);
lv_cover_check_info_t * info = lv_event_get_param(); 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(info->res == LV_DRAW_RES_MASKED) return;
if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) { if(lv_obj_get_style_clip_corner(obj, LV_PART_MAIN)) {
info->res = LV_DRAW_RES_MASKED; 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; info->res = LV_DRAW_RES_COVER;
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
const lv_area_t * clip_area = lv_event_get_param(); const lv_area_t * clip_area = lv_event_get_param(e);
lv_draw_rect_dsc_t draw_dsc; lv_draw_rect_dsc_t draw_dsc;
lv_draw_rect_dsc_init(&draw_dsc); lv_draw_rect_dsc_init(&draw_dsc);
/*If the border is drawn later disable loading its properties*/ /*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 #endif
} }
else if(e == LV_EVENT_DRAW_POST) { else if(code == LV_EVENT_DRAW_POST) {
const lv_area_t * clip_area = lv_event_get_param(); const lv_area_t * clip_area = lv_event_get_param(e);
draw_scrollbar(obj, clip_area); draw_scrollbar(obj, clip_area);
#if LV_DRAW_COMPLEX #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" #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); 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); 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*/ /*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_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); 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 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); 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)) { if(lv_obj_has_flag(obj, LV_OBJ_FLAG_CHECKABLE)) {
uint32_t state = 0; 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) { if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
lv_obj_add_state(obj, LV_STATE_CHECKED); lv_obj_add_state(obj, LV_STATE_CHECKED);
state = 1; 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; 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)) { if(lv_obj_has_flag(obj, LV_OBJ_FLAG_SCROLL_ON_FOCUS)) {
lv_obj_scroll_to_view_recursive(obj, LV_ANIM_ON); 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); 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); 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); 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*/ /*if using focus mode, change target to parent*/
obj = lv_obj_get_focused_obj(obj); obj = lv_obj_get_focused_obj(obj);
lv_obj_clear_state(obj, LV_STATE_FOCUSED | LV_STATE_EDITED | LV_STATE_FOCUS_KEY); 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; uint32_t i;
for(i = 0; i < lv_obj_get_child_cnt(obj); i++) { for(i = 0; i < lv_obj_get_child_cnt(obj); i++) {
lv_obj_t * child = lv_obj_get_child(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); 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 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 h = lv_obj_get_style_height(obj, LV_PART_MAIN);
lv_coord_t align = lv_obj_get_style_align(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); 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. /*The layout might depend on the base dir.
*E.g. the first is element is on the left or right*/ *E.g. the first is element is on the left or right*/
lv_obj_mark_layout_as_dirty(obj); 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) { if(lv_obj_get_scrollbar_mode(obj) == LV_SCROLLBAR_MODE_ACTIVE) {
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
} }
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 d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN); lv_coord_t d = lv_obj_calculate_ext_draw_size(obj, LV_PART_MAIN);
*s = LV_MAX(*s, d); *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*/ /*Padding might have changed so the layout should be recalculated*/
uint32_t i; uint32_t i;
for(i = 0; i < lv_obj_get_child_cnt(obj); 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); lv_obj_refresh_ext_draw_size(obj);
} }
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) { else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) {
lv_obj_draw(obj, e); 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; 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 /*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 *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*/ /*Call the input device's feedback callback if set*/
lv_indev_t * indev_act = lv_indev_get_act(); lv_indev_t * indev_act = lv_indev_get_act();
if(indev_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_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0);
lv_res_t res = LV_RES_OK; 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; uint32_t i = 0;
while(event_dsc && res == LV_RES_OK) { 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; void * event_act_user_data_cb_save = event_act_user_data_cb;
event_act_user_data_cb = event_dsc->user_data; 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; 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); 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; event_act_param = event_act_param_save;
/*Remove this element from the list*/ /*Remove this element from the list*/
event_temp_data_head = event_temp_data_head->prev; 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) { 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; 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) { switch(e) {
case LV_EVENT_HIT_TEST: case LV_EVENT_HIT_TEST:

View File

@@ -91,6 +91,15 @@ typedef enum {
LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/ LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/
_LV_EVENT_LAST /** Number of default events*/ _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; }lv_event_t;
/** /**
@@ -98,7 +107,7 @@ typedef enum {
* Events are used to notify the user of some action being taken on the object. * Events are used to notify the user of some action being taken on the object.
* For details, see ::lv_event_t. * 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 * 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`) * @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 * @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);
/** lv_obj_t * lv_event_get_target(lv_event_t * e);
* Get the `param` parameter of the current event
* @return the `param` parameter
*/
void * lv_event_get_param(void);
/** lv_event_code_t lv_event_get_code(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_param(lv_event_t * e);
*/
void * lv_event_get_user_data(void); 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. * Get the original target of the event. It's different than the "normal" target if the event is bubbled.

View File

@@ -24,7 +24,7 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void my_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_day_of_week(uint32_t year, uint32_t month, uint32_t day);
static uint8_t get_month_length(int32_t year, int32_t month); 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_event_code_t code = lv_event_get_code(e);
lv_obj_draw_dsc_t * dsc = lv_event_get_param(); 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) { if(dsc->part == LV_PART_ITEMS) {
/*Day name styles*/ /*Day name styles*/
if(dsc->id < 7) { if(dsc->id < 7) {

View File

@@ -25,7 +25,7 @@
/********************** /**********************
* STATIC PROTOTYPES * 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 * 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 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 * 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; const lv_calendar_date_t * d;
d = lv_calendar_get_showed_date(calendar); d = lv_calendar_get_showed_date(calendar);

View File

@@ -24,8 +24,8 @@
/********************** /**********************
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void year_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_obj_t * btn, lv_event_t e); static void month_event_cb(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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 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); 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); 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); uint16_t sel = lv_dropdown_get_selected(dropdown);

View File

@@ -33,10 +33,10 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_colorwheel_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_disc_grad(lv_event_t * e);
static void draw_knob(lv_obj_t * obj); static void draw_knob(lv_event_t * e);
static void invalidate_knob(lv_obj_t * obj); static void invalidate_knob(lv_obj_t * obj);
static lv_area_t get_knob_area(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); 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 w = lv_obj_get_width(obj);
lv_coord_t h = lv_obj_get_height(obj); lv_coord_t h = lv_obj_get_height(obj);
lv_coord_t cx = obj->coords.x1 + w / 2; lv_coord_t cx = obj->coords.x1 + w / 2;
@@ -286,9 +287,10 @@ static void draw_disc_grad(lv_obj_t * obj)
#endif #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_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
lv_draw_rect_dsc_t cir_dsc; 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; 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*/ /*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; 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; 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 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 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 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 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 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); *s = LV_MAX(*s, knob_pad);
} }
else if(e == LV_EVENT_SIZE_CHANGED) { else if(code == LV_EVENT_SIZE_CHANGED) {
void * param = lv_event_get_param(); void * param = lv_event_get_param(e);
/*Refresh extended draw area to make knob visible*/ /*Refresh extended draw area to make knob visible*/
if(lv_obj_get_width(obj) != lv_area_get_width(param) || if(lv_obj_get_width(obj) != lv_area_get_width(param) ||
lv_obj_get_height(obj) != lv_area_get_height(param)) { lv_obj_get_height(obj) != lv_area_get_height(param)) {
refr_knob_pos(obj); 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*/ /*Refresh extended draw area to make knob visible*/
refr_knob_pos(obj); refr_knob_pos(obj);
} }
else if(e == LV_EVENT_KEY) { else if(code == LV_EVENT_KEY) {
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 || c == LV_KEY_UP) { if(c == LV_KEY_RIGHT || c == LV_KEY_UP) {
lv_color_hsv_t hsv_cur; 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(); colorwheel->last_change_time = lv_tick_get();
lv_indev_get_point(lv_indev_get_act(), &colorwheel->last_press_point); lv_indev_get_point(lv_indev_get_act(), &colorwheel->last_press_point);
res = double_click_reset(obj); res = double_click_reset(obj);
if(res != LV_RES_OK) return; 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(); lv_indev_t * indev = lv_indev_get_act();
if(indev == NULL) return; 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; if(res != LV_RES_OK) return;
} }
} }
else if(e == LV_EVENT_HIT_TEST) { else if(code == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = lv_event_get_param();; lv_hit_test_info_t * info = lv_event_get_param(e);;
/*Valid clicks can be only in the circle*/ /*Valid clicks can be only in the circle*/
info->result = _lv_area_is_point_on(&obj->coords, info->point, LV_RADIUS_CIRCLE); info->result = _lv_area_is_point_on(&obj->coords, info->point, LV_RADIUS_CIRCLE);
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_disc_grad(obj); draw_disc_grad(e);
draw_knob(obj); draw_knob(e);
} }
else if(e == LV_EVENT_COVER_CHECK) { else if(code == LV_EVENT_COVER_CHECK) {
lv_cover_check_info_t * info = lv_event_get_param(); 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; if(info->res != LV_DRAW_RES_MASKED) info->res = LV_DRAW_RES_NOT_COVER;
} }
} }

View File

@@ -24,8 +24,8 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_imgbtn_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 draw_main(lv_event_t * e);
static void lv_imgbtn_event(lv_obj_t * imgbtn, lv_event_t e); static void lv_imgbtn_event(lv_event_t * e);
static void refr_img(lv_obj_t * imgbtn); static void refr_img(lv_obj_t * imgbtn);
static lv_imgbtn_state_t suggest_state(lv_obj_t * imgbtn, lv_imgbtn_state_t state); 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); 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(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); refr_img(obj);
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); draw_main(e);
} }
else if(e == LV_EVENT_COVER_CHECK) { else if(code == LV_EVENT_COVER_CHECK) {
lv_cover_check_info_t * info = lv_event_get_param(); 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; 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; 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*/ /*Just draw_main an image*/
lv_imgbtn_state_t state = suggest_state(obj, get_state(obj)); lv_imgbtn_state_t state = suggest_state(obj, get_state(obj));

View File

@@ -220,15 +220,17 @@ lv_keyboard_mode_t lv_keyboard_get_mode(const lv_obj_t * obj)
* @param kb pointer to a keyboard * @param kb pointer to a keyboard
* @param event the triggering event * @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; lv_keyboard_t * keyboard = (lv_keyboard_t *)obj;
uint16_t btn_id = lv_btnmatrix_get_selected_btn(obj); uint16_t btn_id = lv_btnmatrix_get_selected_btn(obj);
if(btn_id == LV_BTNMATRIX_BTN_NONE) return; 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_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)); const char * txt = lv_btnmatrix_get_btn_text(obj, lv_btnmatrix_get_selected_btn(obj));
if(txt == NULL) return; if(txt == NULL) return;

View File

@@ -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 kb pointer to a keyboard
* @param event the triggering event * @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 * MACROS

View File

@@ -30,7 +30,7 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_led_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 * 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; 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; lv_res_t res;
/* Call the ancestor's event handler */ /* 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(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*/ /*Make darker colors in a temporary style according to the brightness*/
lv_led_t * led = (lv_led_t *)obj; 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) / rect_dsc.shadow_spread = ((led->bright - LV_LED_BRIGHT_MIN) * rect_dsc.shadow_spread) /
(LV_LED_BRIGHT_MAX - LV_LED_BRIGHT_MIN); (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); lv_draw_rect(&obj->coords, clip_area, &rect_dsc);
} }
} }

View File

@@ -21,7 +21,7 @@
/********************** /**********************
* STATIC PROTOTYPES * 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 * STATIC VARIABLES
@@ -138,9 +138,11 @@ void lv_msgbox_close(lv_obj_t * mbox)
* STATIC FUNCTIONS * 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_obj_t * mbox = lv_obj_get_parent(btn);
lv_msgbox_close(mbox); lv_msgbox_close(mbox);
} }

View File

@@ -23,7 +23,7 @@
**********************/ **********************/
static void lv_spinbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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); 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"); 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*/ /*Call the ancestor's event handler*/
lv_res_t res = LV_RES_OK; 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; 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; 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*/ /*If released with an ENCODER then move to the next digit*/
lv_indev_t * indev = lv_indev_get_act(); lv_indev_t * indev = lv_indev_get_act();
if(lv_indev_get_type(indev) == LV_INDEV_TYPE_ENCODER) { 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; 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()); 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(c == LV_KEY_RIGHT) {
if(indev_type == LV_INDEV_TYPE_ENCODER) if(indev_type == LV_INDEV_TYPE_ENCODER)
lv_spinbox_increment(obj); lv_spinbox_increment(obj);

View File

@@ -22,8 +22,8 @@
**********************/ **********************/
static void lv_tabview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 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 btns_event_cb(lv_event_t * e);
static void cont_event_cb(lv_obj_t * cont, lv_event_t e); static void cont_event_cb(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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; 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); lv_obj_t * tv = lv_obj_get_parent(btns);
uint32_t id = lv_btnmatrix_get_selected_btn(btns); uint32_t id = lv_btnmatrix_get_selected_btn(btns);
lv_tabview_set_act(tv, id, LV_ANIM_ON); 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_obj_t * tv = lv_obj_get_parent(cont);
lv_point_t p; lv_point_t p;

View File

@@ -22,7 +22,7 @@
**********************/ **********************/
static void lv_tileview_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 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 * 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 w = lv_obj_get_width_fit(tv);
lv_coord_t h = lv_obj_get_height_fit(tv); lv_coord_t h = lv_obj_get_height_fit(tv);

View File

@@ -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; uint32_t * d32 = (uint32_t *)d8;

View File

@@ -31,8 +31,8 @@
**********************/ **********************/
static void lv_arc_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_draw(lv_event_t * e);
static void lv_arc_event(lv_obj_t * obj, 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 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_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); 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"); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(res != LV_RES_OK) return;
lv_arc_t * arc = (lv_arc_t *)obj; lv_event_code_t code = lv_event_get_code(e);
if(e == LV_EVENT_PRESSING) { 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(); lv_indev_t * indev = lv_indev_get_act();
if(indev == NULL) return; 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*/ 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; arc->dragging = false;
/*Leave edit mode if released. (No need to wait for LONG_PRESS)*/ /*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) { else if(code == LV_EVENT_KEY) {
char c = *((char *)lv_event_get_param()); char c = *((char *)lv_event_get_param(e));
int16_t old_value =arc->value; int16_t old_value =arc->value;
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { 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; 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_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_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); 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_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 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); *s = LV_MAX(*s, knob_pad - bg_pad);
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
lv_arc_draw(obj); 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; 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_point_t center;
lv_coord_t arc_r; lv_coord_t arc_r;

View File

@@ -47,8 +47,8 @@
**********************/ **********************/
static void lv_bar_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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 lv_bar_event(lv_event_t * e);
static void draw_indic(lv_obj_t * bar); 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, 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); 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); 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); 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; 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_area_t bar_coords;
lv_obj_get_coords(obj, &bar_coords); lv_obj_get_coords(obj, &bar_coords);
@@ -465,21 +466,24 @@ static void draw_indic(lv_obj_t * obj)
#endif #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_ASSERT_OBJ(obj, MY_CLASS);
lv_res_t res; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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; lv_coord_t indic_size;
indic_size = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR); indic_size = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
/*Bg size is handled by lv_obj*/ /*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); *s = LV_MAX(*s, indic_size);
/*Calculate the indicator area*/ /*Calculate the indicator area*/
@@ -492,11 +496,11 @@ static void lv_bar_event(lv_obj_t * obj, lv_event_t e)
if(pad < 0) { if(pad < 0) {
*s = LV_MAX(*s, -pad); *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_bar_t * bar = (lv_bar_t *)obj;
lv_obj_invalidate_area(obj, &bar->indic_area); lv_obj_invalidate_area(obj, &bar->indic_area);
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
draw_indic(obj); draw_indic(e);
} }
} }

View File

@@ -34,8 +34,8 @@
**********************/ **********************/
static void lv_btnmatrix_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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 lv_btnmatrix_event(lv_event_t * e);
static void draw_main(lv_obj_t * obj); static void draw_main(lv_event_t * e);
static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits); static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits);
static bool button_is_hidden(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"); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
lv_point_t p; lv_point_t p;
if(e == LV_EVENT_STYLE_CHANGED) { if(code == LV_EVENT_STYLE_CHANGED) {
lv_btnmatrix_set_map(obj, btnm->map_p); 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); lv_btnmatrix_set_map(obj, btnm->map_p);
} }
else if(e == LV_EVENT_PRESSED) { else if(code == LV_EVENT_PRESSED) {
void * param = lv_event_get_param(); void * param = lv_event_get_param(e);
invalidate_button_area(obj, btnm->btn_id_sel); invalidate_button_area(obj, btnm->btn_id_sel);
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); 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) { else if(code == LV_EVENT_PRESSING) {
void * param = lv_event_get_param(); void * param = lv_event_get_param(e);
uint16_t btn_pr = LV_BTNMATRIX_BTN_NONE; uint16_t btn_pr = LV_BTNMATRIX_BTN_NONE;
/*Search the pressed area*/ /*Search the pressed area*/
lv_indev_t * indev = lv_indev_get_act(); 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) { if(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
/*Toggle the button if enabled*/ /*Toggle the button if enabled*/
if(button_is_tgl_enabled(btnm->ctrl_bits[btnm->btn_id_sel]) && 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; 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(btnm->btn_id_sel != LV_BTNMATRIX_BTN_NONE) {
if(button_is_repeat_disabled(btnm->ctrl_bits[btnm->btn_id_sel]) == false && if(button_is_repeat_disabled(btnm->ctrl_bits[btnm->btn_id_sel]) == false &&
button_is_inactive(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); invalidate_button_area(obj, btnm->btn_id_sel);
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE; 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_t * indev = lv_indev_get_act();
lv_indev_type_t indev_type = lv_indev_get_type(indev); 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; 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); 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; 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); 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(c == LV_KEY_RIGHT) {
if(btnm->btn_id_sel == LV_BTNMATRIX_BTN_NONE) btnm->btn_id_sel = 0; if(btnm->btn_id_sel == LV_BTNMATRIX_BTN_NONE) btnm->btn_id_sel = 0;
else btnm->btn_id_sel++; 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); invalidate_button_area(obj, btnm->btn_id_sel);
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); 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; lv_btnmatrix_t * btnm = (lv_btnmatrix_t *)obj;
if(btnm->btn_cnt == 0) return; 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; obj->skip_trans = 1;
lv_area_t area_obj; lv_area_t area_obj;

View File

@@ -38,7 +38,7 @@
**********************/ **********************/
static void lv_chart_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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_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); 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"); 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*/ /*Call the ancestor's event handler*/
lv_res_t res; 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; 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; 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_indev_t * indev = lv_indev_get_act();
lv_point_t p; lv_point_t p;
lv_indev_get_point(indev, &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; chart->pressed_point_id = id;
lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL); 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); invalidate_point(obj, chart->pressed_point_id);
chart->pressed_point_id = LV_CHART_POINT_NONE; chart->pressed_point_id = LV_CHART_POINT_NONE;
} 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);
*s = LV_MAX4(*s, chart->tick[LV_CHART_AXIS_X].draw_size, *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); 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) { } else if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(); lv_point_t * p = lv_event_get_param(e);
p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8; p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8;
p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8; p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8;
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
const lv_area_t * clip_area = lv_event_get_param(); const lv_area_t * clip_area = lv_event_get_param(e);
draw_div_lines(obj, clip_area); draw_div_lines(obj, clip_area);
draw_axes(obj, clip_area); draw_axes(obj, clip_area);

View File

@@ -28,8 +28,8 @@
**********************/ **********************/
static void lv_checkbox_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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_event(lv_event_t * e);
static void lv_checkbox_draw(lv_obj_t * obj); static void lv_checkbox_draw(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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"); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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); lv_obj_invalidate(obj);
} }
else if (e == LV_EVENT_GET_SELF_SIZE) { else if (code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(); lv_point_t * p = lv_event_get_param(e);
lv_checkbox_t * cb = (lv_checkbox_t *)obj; lv_checkbox_t * cb = (lv_checkbox_t *)obj;
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); 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->x = marker_size.x + txt_size.x + bg_colp;
p->y = LV_MAX(marker_size.y, txt_size.y); p->y = LV_MAX(marker_size.y, txt_size.y);
} }
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 m = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR); lv_coord_t m = lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR);
*s = LV_MAX(*s, m); *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; uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
lv_checkbox_draw(obj); 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; 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); 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); lv_coord_t font_h = lv_font_get_line_height(font);

View File

@@ -39,13 +39,13 @@
static lv_obj_t * lv_dropdown_list_create(lv_obj_t * parent); 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_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_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 lv_dropdown_event(lv_event_t * e);
static void draw_main(lv_obj_t * obj); 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_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_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 lv_dropdown_list_event(lv_event_t * e);
static void draw_list(lv_obj_t * obj); 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(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); 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; 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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; 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); lv_group_t * g = lv_obj_get_group(obj);
bool editing = lv_group_get_editing(g); bool editing = lv_group_get_editing(g);
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); 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); 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); lv_dropdown_close(obj);
} }
else if(e == LV_EVENT_RELEASED) { else if(code == LV_EVENT_RELEASED) {
lv_indev_t * indev = lv_indev_get_act(); lv_indev_t * indev = lv_indev_get_act();
if(lv_indev_get_scroll_obj(indev) == NULL) { if(lv_indev_get_scroll_obj(indev) == NULL) {
if(dropdown->list) { if(dropdown->list) {
@@ -654,16 +656,16 @@ static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
lv_obj_invalidate(obj); 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); if(dropdown->list) lv_dropdown_close(obj);
} }
else if(e == LV_EVENT_GET_SELF_SIZE) { else if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(); lv_point_t * p = lv_event_get_param(e);
const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN); const lv_font_t * font = lv_obj_get_style_text_font(obj, LV_PART_MAIN);
p->y = lv_font_get_line_height(font); p->y = lv_font_get_line_height(font);
} }
else if(e == LV_EVENT_KEY) { else if(code == LV_EVENT_KEY) {
char c = *((char *)lv_event_get_param()); char c = *((char *)lv_event_get_param(e));
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) { if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
if(dropdown->list == NULL) { if(dropdown->list == NULL) {
lv_dropdown_open(obj); 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); lv_dropdown_close(obj);
} }
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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; 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_obj_t * dropdown_obj = ((lv_dropdown_list_t *)list)->dropdown;
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj; 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) { if(lv_indev_get_scroll_obj(lv_indev_get_act()) == NULL) {
list_release_handler(list); list_release_handler(list);
} }
} }
else if(e == LV_EVENT_PRESSED) { else if(code == LV_EVENT_PRESSED) {
page_press_handler(list); 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; dropdown->pr_opt_id = LV_DROPDOWN_PR_NONE;
lv_obj_invalidate(list); lv_obj_invalidate(list);
} }
else if(e == LV_EVENT_DRAW_POST) { else if(code == LV_EVENT_DRAW_POST) {
draw_list(list); 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; 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 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); 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_dropdown_list_t * list = (lv_dropdown_list_t *)list_obj;
lv_obj_t * dropdown_obj = list->dropdown; lv_obj_t * dropdown_obj = list->dropdown;
lv_dropdown_t * dropdown = (lv_dropdown_t *)dropdown_obj; 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*/ /*Draw the box labels if the list is not being deleted*/
if(dropdown->list) { if(dropdown->list) {

View File

@@ -30,8 +30,8 @@
**********************/ **********************/
static void lv_img_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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);
static void draw_img(lv_obj_t * obj, lv_event_t e); static void draw_img(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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*/ /*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*/ /*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; if(res != LV_RES_OK) return;
} }
lv_obj_t * obj = lv_event_get_target(e);
lv_img_t * img = (lv_img_t *)obj; 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*/ /*Refresh the file name to refresh the symbol text size*/
if(img->src_type == LV_IMG_SRC_SYMBOL) { if(img->src_type == LV_IMG_SRC_SYMBOL) {
lv_img_set_src(obj, img->src); 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); lv_coord_t transf_zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
transf_zoom = (transf_zoom * img->zoom) >> 8; 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); *s = LV_MAX(*s, pad_ori + a.y2 - h);
} }
} }
else if(e == LV_EVENT_HIT_TEST) { else if(code == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = lv_event_get_param(); 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); lv_coord_t zoom = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
zoom = (zoom * img->zoom) >> 8; zoom = (zoom * img->zoom) >> 8;
@@ -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); info->result = _lv_area_is_point_on(&a, info->point, 0);
} }
} }
else if(e == LV_EVENT_GET_SELF_SIZE) { else if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param();; lv_point_t * p = lv_event_get_param(e);;
p->x = img->w; p->x = img->w;
p->y = img->h; p->y = img->h;
} }
else if(e == LV_EVENT_DRAW_MAIN || e == LV_EVENT_DRAW_POST || e == LV_EVENT_COVER_CHECK) { else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST || code == LV_EVENT_COVER_CHECK) {
draw_img(obj, e); 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; lv_img_t * img = (lv_img_t *)obj;
if(e == LV_EVENT_COVER_CHECK) { if(code == LV_EVENT_COVER_CHECK) {
lv_cover_check_info_t * info = lv_event_get_param(); lv_cover_check_info_t * info = lv_event_get_param(e);
if(info->res == LV_DRAW_RES_MASKED) return; if(info->res == LV_DRAW_RES_MASKED) return;
if(img->src_type == LV_IMG_SRC_UNKNOWN || img->src_type == LV_IMG_SRC_SYMBOL) { if(img->src_type == LV_IMG_SRC_UNKNOWN || img->src_type == LV_IMG_SRC_SYMBOL) {
info->res = LV_DRAW_RES_NOT_COVER; 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; 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(zoom_final == LV_IMG_ZOOM_NONE) {
if(_lv_area_is_in(clip_area, &obj->coords, 0) == false) { if(_lv_area_is_in(clip_area, &obj->coords, 0) == false) {
info->res = LV_DRAW_RES_NOT_COVER; 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); int32_t zoom_final = lv_obj_get_style_transform_zoom(obj, LV_PART_MAIN);
zoom_final = (zoom_final * img->zoom) >> 8; 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(&ori_coords, &obj->coords);
lv_area_copy(&obj->coords, &bg_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; if(res != LV_RES_OK) return;
lv_area_copy(&obj->coords, &ori_coords); 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(img->h == 0 || img->w == 0) return;
if(zoom_final == 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_t img_max_area;
lv_area_copy(&img_max_area, &obj->coords); lv_area_copy(&img_max_area, &obj->coords);

View File

@@ -36,8 +36,8 @@
**********************/ **********************/
static void lv_label_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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 lv_label_event_cb(lv_event_t * e);
static void draw_main(lv_obj_t * obj); static void draw_main(lv_event_t * e);
static void lv_label_refr_text(lv_obj_t * obj); static void lv_label_refr_text(lv_obj_t * obj);
static void lv_label_revert_dots(lv_obj_t * label); 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; 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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*/ /*Revert dots for proper refresh*/
lv_label_revert_dots(obj); lv_label_revert_dots(obj);
lv_label_refr_text(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_revert_dots(obj);
lv_label_refr_text(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 #if LV_USE_BIDI
lv_label_t * label = (lv_label_t *)obj; lv_label_t * label = (lv_label_t *)obj;
if(label->static_txt == 0) lv_label_set_text(obj, NULL); if(label->static_txt == 0) lv_label_set_text(obj, NULL);
#endif #endif
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); 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; 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; lv_area_t txt_coords;
get_txt_coords(obj, &txt_coords); get_txt_coords(obj, &txt_coords);

View File

@@ -29,7 +29,7 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_line_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 * 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"); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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*/ /*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 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; 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_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 w = 0;
lv_coord_t h = 0; lv_coord_t h = 0;
if(line->point_num > 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->x = w;
p->y = h; 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; 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; if(line->point_num == 0 || line->point_array == NULL) return;

View File

@@ -29,7 +29,7 @@
**********************/ **********************/
static void lv_meter_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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_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_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); 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(res != LV_RES_OK) return;
if(e == LV_EVENT_DRAW_MAIN) { lv_event_code_t code = lv_event_get_code(e);
const lv_area_t * clip_area = lv_event_get_param(); 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_area_t scale_area;
lv_obj_get_coords_fit(obj, &scale_area); lv_obj_get_coords_fit(obj, &scale_area);

View File

@@ -29,10 +29,10 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_roller_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_event(lv_event_t * 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);
static void draw_main(lv_obj_t * obj, lv_event_t e); static void draw_main(lv_event_t * e);
static void draw_label(lv_obj_t * label_obj); static void draw_label(lv_event_t * e);
static void refr_position(lv_obj_t * obj, lv_anim_enable_t animen); static void refr_position(lv_obj_t * obj, lv_anim_enable_t animen);
static lv_res_t release_handler(lv_obj_t * obj); static lv_res_t release_handler(lv_obj_t * obj);
static void inf_normalize(lv_obj_t * obj_scrl); 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"); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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; lv_roller_t * roller = (lv_roller_t*)obj;
if(e == LV_EVENT_GET_SELF_SIZE) { if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(); lv_point_t * p = lv_event_get_param(e);
p->x = get_selected_label_width(obj); 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); lv_obj_t * label = get_label(obj);
/*Be sure the label's style is updated before processing the roller*/ /*Be sure the label's style is updated before processing the roller*/
if(label) lv_event_send(label, LV_EVENT_STYLE_CHANGED, NULL); if(label) lv_event_send(label, LV_EVENT_STYLE_CHANGED, NULL);
lv_obj_handle_self_size_chg(obj); lv_obj_handle_self_size_chg(obj);
refr_position(obj, false); refr_position(obj, false);
} }
else if(e == LV_EVENT_SIZE_CHANGED) { else if(code == LV_EVENT_SIZE_CHANGED) {
refr_position(obj, false); refr_position(obj, false);
} }
else if(e == LV_EVENT_PRESSED) { else if(code == LV_EVENT_PRESSED) {
roller->moved = 0; roller->moved = 0;
lv_anim_del(get_label(obj), set_y_anim); 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_indev_t * indev = lv_indev_get_act();
lv_point_t p; lv_point_t p;
lv_indev_get_vect(indev, &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; roller->moved = 1;
} }
} }
else if(e == LV_EVENT_RELEASED) { else if(code == LV_EVENT_RELEASED) {
release_handler(obj); release_handler(obj);
} }
else if(e == LV_EVENT_FOCUSED) { else if(code == LV_EVENT_FOCUSED) {
lv_group_t * g = lv_obj_get_group(obj); lv_group_t * g = lv_obj_get_group(obj);
bool editing = lv_group_get_editing(g); bool editing = lv_group_get_editing(g);
lv_indev_type_t indev_type = lv_indev_get_type(lv_indev_get_act()); 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*/ ENTER won't be pressed*/
} }
} }
else if(e == LV_EVENT_DEFOCUSED) { else if(code == LV_EVENT_DEFOCUSED) {
/*Revert the original state*/ /*Revert the original state*/
if(roller->sel_opt_id != roller->sel_opt_id_ori) { if(roller->sel_opt_id != roller->sel_opt_id_ori) {
roller->sel_opt_id = roller->sel_opt_id_ori; roller->sel_opt_id = roller->sel_opt_id_ori;
refr_position(obj, true); refr_position(obj, true);
} }
} }
else if(e == LV_EVENT_KEY) { else if(code == LV_EVENT_KEY) {
char c = *((char *)lv_event_get_param()); char c = *((char *)lv_event_get_param(e));
if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) { if(c == LV_KEY_RIGHT || c == LV_KEY_DOWN) {
if(roller->sel_opt_id + 1 < roller->option_cnt) { 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*/ 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) { else if(code == LV_EVENT_DRAW_MAIN || code == LV_EVENT_DRAW_POST) {
draw_main(obj, e); 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_res_t res;
lv_event_code_t code = lv_event_get_code(e);
/*LV_EVENT_DRAW_MAIN will be called in the draw function*/ /*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 */ /* 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(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*/ /*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_obj_t * obj = lv_obj_get_parent(label);
lv_coord_t sel_w = get_selected_label_width(obj); lv_coord_t sel_w = get_selected_label_width(obj);
lv_coord_t label_w = lv_obj_get_width(label); lv_coord_t label_w = lv_obj_get_width(label);
*s = LV_MAX(*s, sel_w - label_w); *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); refr_position(lv_obj_get_parent(label), LV_ANIM_OFF);
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_label(label); 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*/ /*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); 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 line_space = lv_obj_get_style_text_line_space(obj, LV_PART_MAIN);
lv_coord_t font_h = lv_font_get_line_height(font); 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); lv_draw_rect(&rect_area, clip_area, &sel_dsc);
} }
/*Post draw when the children are drawn*/ /*Post draw when the children are drawn*/
else if(e == LV_EVENT_DRAW_POST) { else if(code == LV_EVENT_DRAW_POST) {
const lv_area_t * clip_area = lv_event_get_param(); const lv_area_t * clip_area = lv_event_get_param(e);
lv_draw_label_dsc_t label_dsc; lv_draw_label_dsc_t label_dsc;
lv_draw_label_dsc_init(&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) /* Split the drawing of the label into an upper (above the selected area)
* and a lower (below 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_obj_t * roller = lv_obj_get_parent(label_obj);
lv_draw_label_dsc_t label_draw_dsc; lv_draw_label_dsc_t label_draw_dsc;
lv_draw_label_dsc_init(&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; const lv_font_t * font = label_draw_dsc.font;
lv_coord_t line_space = label_draw_dsc.line_space; lv_coord_t line_space = label_draw_dsc.line_space;
lv_coord_t font_h = lv_font_get_line_height(font); 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; lv_area_t rect_area;
rect_area.y1 = roller->coords.y1 + (lv_obj_get_height(roller) - font_h - line_space) / 2; rect_area.y1 = roller->coords.y1 + (lv_obj_get_height(roller) - font_h - line_space) / 2;

View File

@@ -32,9 +32,9 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_slider_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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 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 * 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)); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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_t * slider = (lv_slider_t *)obj;
lv_slider_mode_t type = lv_slider_get_mode(obj); lv_slider_mode_t type = lv_slider_get_mode(obj);
/*Advanced hit testing: react only on dragging the knob(s)*/ /*Advanced hit testing: react only on dragging the knob(s)*/
if(e == LV_EVENT_HIT_TEST) { if(code == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = lv_event_get_param(); lv_hit_test_info_t * info = lv_event_get_param(e);
/*Ordinary slider: was the knob area hit?*/ /*Ordinary slider: was the knob area hit?*/
info->result = _lv_area_is_point_on(&slider->right_knob_area, info->point, 0); 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); 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; lv_point_t p;
slider->dragging = true; slider->dragging = true;
if(type == LV_SLIDER_MODE_NORMAL || type == LV_SLIDER_MODE_SYMMETRICAL) { 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(); lv_indev_t * indev = lv_indev_get_act();
if(lv_indev_get_type(indev) != LV_INDEV_TYPE_POINTER) return; 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->dragging = false;
slider->value_to_set = NULL; 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()); 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) { if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) {
slider->left_knob_focus = 0; 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); 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_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_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); 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); knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB);
/*Indic. size is handled by bar*/ /*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); *s = LV_MAX(*s, knob_size);
} }
else if(e == LV_EVENT_KEY) { else if(code == LV_EVENT_KEY) {
char c = *((char *)lv_event_get_param()); char c = *((char *)lv_event_get_param(e));
if(c == LV_KEY_RIGHT || c == LV_KEY_UP) { 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); 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); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
} }
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
draw_knob(obj); 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; 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_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
lv_coord_t objw = lv_obj_get_width(obj); lv_coord_t objw = lv_obj_get_width(obj);

View File

@@ -34,8 +34,8 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_switch_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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);
static void draw_main(lv_obj_t * obj); static void draw_main(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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_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_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); 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 += 2; /*For rounding error*/
knob_size += lv_obj_calculate_ext_draw_size(obj, LV_PART_KNOB); 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, knob_size);
*s = LV_MAX(*s, lv_obj_calculate_ext_draw_size(obj, LV_PART_INDICATOR)); *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; uint32_t v = lv_obj_get_state(obj) & LV_STATE_CHECKED ? 1 : 0;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &v);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); 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); lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
/*Calculate the indicator area*/ /*Calculate the indicator area*/

View File

@@ -31,8 +31,8 @@
**********************/ **********************/
static void lv_table_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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 lv_table_event(lv_event_t * e);
static void draw_main(lv_obj_t * obj); 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, 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 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); 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); 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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; lv_table_t * table = (lv_table_t *)obj;
if(e == LV_EVENT_STYLE_CHANGED) { if(code == LV_EVENT_STYLE_CHANGED) {
refr_size(obj, 0); refr_size(obj, 0);
} }
else if(e == LV_EVENT_GET_SELF_SIZE) { else if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_param(); lv_point_t * p = lv_event_get_param(e);
uint32_t i; uint32_t i;
lv_coord_t w = 0; lv_coord_t w = 0;
for(i = 0; i < table->col_cnt; i++) w += table->col_w[i]; 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->x = w;
p->y = h; 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 col;
uint16_t row; uint16_t row;
lv_res_t pr_res = get_pressed_cell(obj, &row, &col); 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); lv_obj_invalidate(obj);
} }
else if(e == LV_EVENT_RELEASED) { else if(code == LV_EVENT_RELEASED) {
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
lv_indev_t * indev = lv_indev_get_act(); lv_indev_t * indev = lv_indev_get_act();
lv_obj_t * scroll_obj = lv_indev_get_scroll_obj(indev); 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; table->row_act = LV_TABLE_CELL_NONE;
} }
} }
else if(e == LV_EVENT_FOCUSED) { else if(code == LV_EVENT_FOCUSED) {
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} else if(e == LV_EVENT_KEY) { } else if(code == LV_EVENT_KEY) {
int32_t c = *((int32_t *)lv_event_get_param()); int32_t c = *((int32_t *)lv_event_get_param(e));
int32_t col = table->col_act; int32_t col = table->col_act;
int32_t row = table->row_act; int32_t row = table->row_act;
if(col == LV_TABLE_CELL_NONE || row == LV_TABLE_CELL_NONE) { 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); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
} }
} else if(e == LV_EVENT_DRAW_MAIN) { } else if(code == LV_EVENT_DRAW_MAIN) {
draw_main(obj); 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; 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_point_t txt_size;
lv_area_t cell_area; lv_area_t cell_area;

View File

@@ -44,7 +44,7 @@
**********************/ **********************/
static void lv_textarea_constructor(const lv_obj_class_t * class_p, lv_obj_t * obj); 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_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 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(void * obj, int32_t x);
static void pwd_char_hider_anim_ready(lv_anim_t * a); 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 bool char_is_accepted(lv_obj_t * obj, uint32_t c);
static void start_cursor_blink(lv_obj_t * obj); static void start_cursor_blink(lv_obj_t * obj);
static void refr_cursor_area(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 lv_res_t insert_handler(lv_obj_t * obj, const char * txt);
static void draw_placeholder(lv_obj_t * obj); static void draw_placeholder(lv_event_t * e);
static void draw_cursor(lv_obj_t * obj); static void draw_cursor(lv_event_t * e);
/********************** /**********************
* STATIC VARIABLES * 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; lv_res_t res;
/*Call the ancestor's event handler*/ /*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(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; lv_textarea_t * ta = (lv_textarea_t *)obj;
if(e == LV_EVENT_STYLE_CHANGED) { if(code == LV_EVENT_STYLE_CHANGED) {
if(ta->label) { if(ta->label) {
lv_label_set_text(ta->label, NULL); lv_label_set_text(ta->label, NULL);
refr_cursor_area(obj); refr_cursor_area(obj);
start_cursor_blink(obj); start_cursor_blink(obj);
} }
} }
else if(e == LV_EVENT_FOCUSED) { else if(code == LV_EVENT_FOCUSED) {
start_cursor_blink(obj); 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*/ /*Set the label width according to the text area width*/
if(ta->label) { if(ta->label) {
lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj)); 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); refr_cursor_area(obj);
} }
} }
else if(e == LV_EVENT_KEY) { else if(code == LV_EVENT_KEY) {
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(c == LV_KEY_RIGHT)
lv_textarea_cursor_right(obj); lv_textarea_cursor_right(obj);
else if(c == LV_KEY_LEFT) 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); lv_textarea_add_char(obj, c);
} }
} }
else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING || e == LV_EVENT_PRESS_LOST || else if(code == LV_EVENT_PRESSED || code == LV_EVENT_PRESSING || code == LV_EVENT_PRESS_LOST ||
e == LV_EVENT_RELEASED) { code == LV_EVENT_RELEASED) {
update_cursor_position_on_click(obj, e); update_cursor_position_on_click(e);
} }
else if(e == LV_EVENT_DRAW_MAIN) { else if(code == LV_EVENT_DRAW_MAIN) {
draw_placeholder(obj); draw_placeholder(e);
} }
else if(e == LV_EVENT_DRAW_POST) { else if(code == LV_EVENT_DRAW_POST) {
draw_cursor(obj); draw_cursor(e);
} }
} }
@@ -1129,11 +1131,13 @@ static void refr_cursor_area(lv_obj_t * obj)
lv_obj_invalidate_area(obj, &area_tmp); 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(); lv_indev_t * click_source = lv_indev_get_act();
if(click_source == NULL) return; 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; lv_textarea_t * ta = (lv_textarea_t *)obj;
if(ta->cursor.click_pos == 0) return; 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; ta->text_sel_in_prog = 1;
lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); 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*/ /*Input device may be moving. Store the end position*/
ta->sel_end = char_id_at_click; 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.*/ /*Input device is released. Check if anything was selected.*/
lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); 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*/ /*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; 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); 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 #endif
} }
@@ -1260,10 +1264,11 @@ static lv_res_t insert_handler(lv_obj_t * obj, const char * txt)
return LV_RES_OK; 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; 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); const char * txt = lv_label_get_text(ta->label);
/*Draw the place holder*/ /*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; 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); const char * txt = lv_label_get_text(ta->label);
if(ta->cursor.show == 0) return; if(ta->cursor.show == 0) return;