feat(obj): merge signals into events

This commit is contained in:
Gabor Kiss-Vamosi
2021-03-18 15:13:35 +01:00
parent a7084509b5
commit 6b7fe23fb8
32 changed files with 365 additions and 530 deletions

View File

@@ -81,7 +81,7 @@ void lv_group_del(lv_group_t * group)
{ {
/*Defocus the currently focused object*/ /*Defocus the currently focused object*/
if(group->obj_focus != NULL) { if(group->obj_focus != NULL) {
lv_signal_send(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL);
lv_obj_invalidate(*group->obj_focus); lv_obj_invalidate(*group->obj_focus);
} }
@@ -160,7 +160,7 @@ void lv_group_remove_obj(lv_obj_t * obj)
/*If this is the only object in the group then focus to nothing.*/ /*If this is the only object in the group then focus to nothing.*/
if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) { if(_lv_ll_get_head(&g->obj_ll) == g->obj_focus && _lv_ll_get_tail(&g->obj_ll) == g->obj_focus) {
lv_signal_send(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL); lv_event_send(*g->obj_focus, LV_EVENT_DEFOCUSED, NULL);
} }
/*If there more objects in the group then focus to the next/prev object*/ /*If there more objects in the group then focus to the next/prev object*/
else { else {
@@ -196,7 +196,7 @@ void lv_group_remove_all_objs(lv_group_t * group)
{ {
/*Defocus the currently focused object*/ /*Defocus the currently focused object*/
if(group->obj_focus != NULL) { if(group->obj_focus != NULL) {
lv_signal_send(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL); lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL);
lv_obj_invalidate(*group->obj_focus); lv_obj_invalidate(*group->obj_focus);
group->obj_focus = NULL; group->obj_focus = NULL;
} }
@@ -231,7 +231,6 @@ void lv_group_focus_obj(lv_obj_t * obj)
_LV_LL_READ(&g->obj_ll, i) { _LV_LL_READ(&g->obj_ll, i) {
if(*i == obj) { if(*i == obj) {
if(g->obj_focus != NULL) { if(g->obj_focus != NULL) {
lv_signal_send(*g->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
lv_res_t res = lv_event_send(*g->obj_focus, LV_EVENT_DEFOCUSED, NULL); lv_res_t res = lv_event_send(*g->obj_focus, LV_EVENT_DEFOCUSED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(*g->obj_focus); lv_obj_invalidate(*g->obj_focus);
@@ -240,7 +239,6 @@ void lv_group_focus_obj(lv_obj_t * obj)
g->obj_focus = i; g->obj_focus = i;
if(g->obj_focus != NULL) { if(g->obj_focus != NULL) {
lv_signal_send(*g->obj_focus, LV_SIGNAL_FOCUS, NULL);
if(g->focus_cb) g->focus_cb(g); if(g->focus_cb) g->focus_cb(g);
lv_res_t res = lv_event_send(*g->obj_focus, LV_EVENT_FOCUSED, NULL); lv_res_t res = lv_event_send(*g->obj_focus, LV_EVENT_FOCUSED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
@@ -295,9 +293,6 @@ lv_res_t lv_group_send_data(lv_group_t * group, uint32_t c)
lv_res_t res; lv_res_t res;
res = lv_signal_send(act, LV_SIGNAL_CONTROL, &c);
if(res != LV_RES_OK) return res;
res = lv_event_send(act, LV_EVENT_KEY, &c); res = lv_event_send(act, LV_EVENT_KEY, &c);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return res;
@@ -330,7 +325,6 @@ void lv_group_set_editing(lv_group_t * group, bool edit)
lv_obj_t * focused = lv_group_get_focused(group); lv_obj_t * focused = lv_group_get_focused(group);
if(focused) { if(focused) {
lv_signal_send(focused, LV_SIGNAL_FOCUS, NULL); /*Focus again to properly leave/open edit/navigate mode*/
lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL); lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
@@ -486,7 +480,6 @@ static void focus_next_core(lv_group_t * group, void * (*begin)(const lv_ll_t *)
if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/ if(obj_next == group->obj_focus) return; /*There's only one visible object and it's already focused*/
if(group->obj_focus) { if(group->obj_focus) {
lv_signal_send(*group->obj_focus, LV_SIGNAL_DEFOCUS, NULL);
lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL); lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_DEFOCUSED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(*group->obj_focus); lv_obj_invalidate(*group->obj_focus);
@@ -494,10 +487,7 @@ static void focus_next_core(lv_group_t * group, void * (*begin)(const lv_ll_t *)
group->obj_focus = obj_next; group->obj_focus = obj_next;
lv_res_t res; lv_res_t res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL);
res = lv_signal_send(*group->obj_focus, LV_SIGNAL_FOCUS, NULL);
if(res != LV_RES_OK) return;
res = lv_event_send(*group->obj_focus, LV_EVENT_FOCUSED, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(*group->obj_focus); lv_obj_invalidate(*group->obj_focus);

View File

@@ -399,8 +399,6 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
/*Send the ENTER as a normal KEY*/ /*Send the ENTER as a normal KEY*/
lv_group_send_data(g, LV_KEY_ENTER); lv_group_send_data(g, LV_KEY_ENTER);
lv_signal_send(indev_obj_act, LV_SIGNAL_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -432,8 +430,6 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
else if(data->state == LV_INDEV_STATE_PRESSED && prev_state == LV_INDEV_STATE_PRESSED) { else if(data->state == LV_INDEV_STATE_PRESSED && prev_state == LV_INDEV_STATE_PRESSED) {
if(data->key == LV_KEY_ENTER) { if(data->key == LV_KEY_ENTER) {
lv_signal_send(indev_obj_act, LV_SIGNAL_PRESSING, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_PRESSING, NULL); lv_event_send(indev_obj_act, LV_EVENT_PRESSING, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -443,8 +439,6 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
i->proc.long_pr_sent = 1; i->proc.long_pr_sent = 1;
if(data->key == LV_KEY_ENTER) { if(data->key == LV_KEY_ENTER) {
i->proc.longpr_rep_timestamp = lv_tick_get(); i->proc.longpr_rep_timestamp = lv_tick_get();
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -457,8 +451,6 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
/*Send LONG_PRESS_REP on ENTER*/ /*Send LONG_PRESS_REP on ENTER*/
if(data->key == LV_KEY_ENTER) { if(data->key == LV_KEY_ENTER) {
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS_REP, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -488,7 +480,7 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
data->key = prev_key; data->key = prev_key;
if(data->key == LV_KEY_ENTER) { if(data->key == LV_KEY_ENTER) {
lv_signal_send(indev_obj_act, LV_SIGNAL_RELEASED, NULL); lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
if(i->proc.long_pr_sent == 0) { if(i->proc.long_pr_sent == 0) {
@@ -499,8 +491,6 @@ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data)
lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL); lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return;
} }
i->proc.pr_timestamp = 0; i->proc.pr_timestamp = 0;
i->proc.long_pr_sent = 0; i->proc.long_pr_sent = 0;
@@ -555,9 +545,6 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
bool editable = lv_obj_is_editable(indev_obj_act); bool editable = lv_obj_is_editable(indev_obj_act);
if(lv_group_get_editing(g) == true || editable == false) { if(lv_group_get_editing(g) == true || editable == false) {
lv_signal_send(indev_obj_act, LV_SIGNAL_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -602,8 +589,6 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
} }
/*If not editable then just send a long press signal*/ /*If not editable then just send a long press signal*/
else { else {
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -617,8 +602,6 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
i->proc.longpr_rep_timestamp = lv_tick_get(); i->proc.longpr_rep_timestamp = lv_tick_get();
if(data->key == LV_KEY_ENTER) { if(data->key == LV_KEY_ENTER) {
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS_REP, NULL);
if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
} }
@@ -647,7 +630,7 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
/*The button was released on a non-editable object. Just send enter*/ /*The button was released on a non-editable object. Just send enter*/
if(editable == false) { if(editable == false) {
lv_signal_send(indev_obj_act, LV_SIGNAL_RELEASED, NULL); lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
if(i->proc.long_pr_sent == 0) lv_event_send(indev_obj_act, LV_EVENT_SHORT_CLICKED, NULL); if(i->proc.long_pr_sent == 0) lv_event_send(indev_obj_act, LV_EVENT_SHORT_CLICKED, NULL);
@@ -656,14 +639,12 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL); lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return;
} }
/*An object is being edited and the button is released. */ /*An object is being edited and the button is released. */
else if(g->editing) { else if(g->editing) {
/*Ignore long pressed enter release because it comes from mode switch*/ /*Ignore long pressed enter release because it comes from mode switch*/
if(!i->proc.long_pr_sent || _lv_ll_get_len(&g->obj_ll) <= 1) { if(!i->proc.long_pr_sent || _lv_ll_get_len(&g->obj_ll) <= 1) {
lv_signal_send(indev_obj_act, LV_SIGNAL_RELEASED, NULL); lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_SHORT_CLICKED, NULL); lv_event_send(indev_obj_act, LV_EVENT_SHORT_CLICKED, NULL);
@@ -672,8 +653,6 @@ static void indev_encoder_proc(lv_indev_t * i, lv_indev_data_t * data)
lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL); lv_event_send(indev_obj_act, LV_EVENT_CLICKED, NULL);
if(indev_reset_check(&i->proc)) return; if(indev_reset_check(&i->proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(&i->proc)) return;
lv_group_send_data(g, LV_KEY_ENTER); lv_group_send_data(g, LV_KEY_ENTER);
} }
@@ -819,8 +798,6 @@ static void indev_proc_press(lv_indev_proc_t * proc)
/*Save the obj because in special cases `act_obj` can change in the signal function*/ /*Save the obj because in special cases `act_obj` can change in the signal function*/
lv_obj_t * last_obj = proc->types.pointer.act_obj; lv_obj_t * last_obj = proc->types.pointer.act_obj;
lv_signal_send(last_obj, LV_SIGNAL_PRESS_LOST, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(last_obj, LV_EVENT_PRESS_LOST, NULL); lv_event_send(last_obj, LV_EVENT_PRESS_LOST, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
@@ -842,9 +819,6 @@ static void indev_proc_press(lv_indev_proc_t * proc)
proc->types.pointer.vect.y = 0; proc->types.pointer.vect.y = 0;
/*Send a signal about the press*/ /*Send a signal about the press*/
lv_signal_send(indev_obj_act, LV_SIGNAL_PRESSED, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_PRESSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
@@ -870,9 +844,7 @@ static void indev_proc_press(lv_indev_proc_t * proc)
proc->types.pointer.scroll_throw_vect_ori = proc->types.pointer.scroll_throw_vect; proc->types.pointer.scroll_throw_vect_ori = proc->types.pointer.scroll_throw_vect;
if(indev_obj_act) { if(indev_obj_act) {
lv_signal_send(indev_obj_act, LV_SIGNAL_PRESSING, indev_act); lv_event_send(indev_obj_act, LV_EVENT_PRESSING, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_PRESSING, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
if(indev_act->proc.wait_until_release) return; if(indev_act->proc.wait_until_release) return;
@@ -886,8 +858,6 @@ static void indev_proc_press(lv_indev_proc_t * proc)
if(proc->types.pointer.scroll_obj == NULL && proc->long_pr_sent == 0) { if(proc->types.pointer.scroll_obj == NULL && proc->long_pr_sent == 0) {
/*Send a signal about the long press if enough time elapsed*/ /*Send a signal about the long press if enough time elapsed*/
if(lv_tick_elaps(proc->pr_timestamp) > indev_act->driver->long_press_time) { if(lv_tick_elaps(proc->pr_timestamp) > indev_act->driver->long_press_time) {
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
@@ -903,8 +873,6 @@ static void indev_proc_press(lv_indev_proc_t * proc)
if(proc->types.pointer.scroll_obj == NULL && proc->long_pr_sent == 1) { if(proc->types.pointer.scroll_obj == NULL && proc->long_pr_sent == 1) {
/*Send a signal about the long press repeat if enough time elapsed*/ /*Send a signal about the long press repeat if enough time elapsed*/
if(lv_tick_elaps(proc->longpr_rep_timestamp) > indev_act->driver->long_press_rep_time) { if(lv_tick_elaps(proc->longpr_rep_timestamp) > indev_act->driver->long_press_rep_time) {
lv_signal_send(indev_obj_act, LV_SIGNAL_LONG_PRESS_REP, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL); lv_event_send(indev_obj_act, LV_EVENT_LONG_PRESSED_REPEAT, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
proc->longpr_rep_timestamp = lv_tick_get(); proc->longpr_rep_timestamp = lv_tick_get();
@@ -934,9 +902,6 @@ static void indev_proc_release(lv_indev_proc_t * proc)
LV_LOG_INFO("released"); LV_LOG_INFO("released");
/*Send RELEASE signal and event*/ /*Send RELEASE signal and event*/
lv_signal_send(indev_obj_act, LV_SIGNAL_RELEASED, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL); lv_event_send(indev_obj_act, LV_EVENT_RELEASED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
@@ -1016,14 +981,10 @@ static void indev_click_focus(lv_indev_proc_t * proc)
/*The object are not in group*/ /*The object are not in group*/
else { else {
if(proc->types.pointer.last_pressed) { if(proc->types.pointer.last_pressed) {
lv_signal_send(proc->types.pointer.last_pressed, LV_SIGNAL_DEFOCUS, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL); lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
lv_signal_send(obj_to_focus, LV_SIGNAL_FOCUS, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(obj_to_focus, LV_EVENT_FOCUSED, NULL); lv_event_send(obj_to_focus, LV_EVENT_FOCUSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
@@ -1032,8 +993,6 @@ static void indev_click_focus(lv_indev_proc_t * proc)
else { else {
/*If the prev. obj. is not in a group then defocus it.*/ /*If the prev. obj. is not in a group then defocus it.*/
if(g_prev == NULL && proc->types.pointer.last_pressed) { if(g_prev == NULL && proc->types.pointer.last_pressed) {
lv_signal_send(proc->types.pointer.last_pressed, LV_SIGNAL_DEFOCUS, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL); lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
@@ -1042,15 +1001,11 @@ static void indev_click_focus(lv_indev_proc_t * proc)
if(proc->types.pointer.last_pressed) { if(proc->types.pointer.last_pressed) {
/*If the prev. object also wasn't in a group defocus it*/ /*If the prev. object also wasn't in a group defocus it*/
if(g_prev == NULL) { if(g_prev == NULL) {
lv_signal_send(proc->types.pointer.last_pressed, LV_SIGNAL_DEFOCUS, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL); lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_DEFOCUSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
/*If the prev. object also was in a group at least "LEAVE" it instead of defocus*/ /*If the prev. object also was in a group at least "LEAVE" it instead of defocus*/
else { else {
lv_signal_send(proc->types.pointer.last_pressed, LV_SIGNAL_LEAVE, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_LEAVE, NULL); lv_event_send(proc->types.pointer.last_pressed, LV_EVENT_LEAVE, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
@@ -1063,8 +1018,6 @@ static void indev_click_focus(lv_indev_proc_t * proc)
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
else { else {
lv_signal_send(obj_to_focus, LV_SIGNAL_FOCUS, NULL);
if(indev_reset_check(proc)) return;
lv_event_send(obj_to_focus, LV_EVENT_FOCUSED, NULL); lv_event_send(obj_to_focus, LV_EVENT_FOCUSED, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }
@@ -1121,8 +1074,6 @@ void indev_gesture(lv_indev_proc_t * proc)
proc->types.pointer.gesture_dir = LV_GESTURE_DIR_TOP; proc->types.pointer.gesture_dir = LV_GESTURE_DIR_TOP;
} }
lv_signal_send(gesture_obj, LV_SIGNAL_GESTURE, indev_act);
if(indev_reset_check(proc)) return;
lv_event_send(gesture_obj, LV_EVENT_GESTURE, NULL); lv_event_send(gesture_obj, LV_EVENT_GESTURE, NULL);
if(indev_reset_check(proc)) return; if(indev_reset_check(proc)) return;
} }

View File

@@ -56,8 +56,6 @@ void _lv_indev_scroll_handler(lv_indev_proc_t * proc)
init_scroll_limits(proc); init_scroll_limits(proc);
lv_indev_t * indev_act = lv_indev_get_act(); lv_indev_t * indev_act = lv_indev_get_act();
lv_signal_send(scroll_obj, LV_SIGNAL_SCROLL_BEGIN, indev_act);
if(proc->reset_query) return;
lv_event_send(scroll_obj, LV_EVENT_SCROLL_BEGIN, indev_act); lv_event_send(scroll_obj, LV_EVENT_SCROLL_BEGIN, indev_act);
if(proc->reset_query) return; if(proc->reset_query) return;
} }
@@ -189,8 +187,6 @@ void _lv_indev_scroll_throw_handler(lv_indev_proc_t * proc)
} }
} }
lv_signal_send(scroll_obj, LV_SIGNAL_SCROLL_END, indev_act);
if(proc->reset_query) return;
lv_event_send(scroll_obj, LV_EVENT_SCROLL_END, indev_act); lv_event_send(scroll_obj, LV_EVENT_SCROLL_END, indev_act);
if(proc->reset_query) return; if(proc->reset_query) return;

View File

@@ -62,7 +62,7 @@ typedef struct {
static void lv_obj_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_obj_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_obj_destructor(lv_obj_t * obj); static void lv_obj_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_obj_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_obj_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_obj_event_cb(lv_obj_t * obj, 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);
@@ -79,7 +79,7 @@ static void * event_act_user_data_cb;
const lv_obj_class_t lv_obj_class = { const lv_obj_class_t lv_obj_class = {
.constructor_cb = lv_obj_constructor, .constructor_cb = lv_obj_constructor,
.destructor_cb = lv_obj_destructor, .destructor_cb = lv_obj_destructor,
.signal_cb = lv_obj_signal, .event_cb = lv_obj_event_cb,
.draw_cb = lv_obj_draw, .draw_cb = lv_obj_draw,
.instance_size = (sizeof(lv_obj_t)), .instance_size = (sizeof(lv_obj_t)),
.base_class = NULL, .base_class = NULL,
@@ -201,12 +201,6 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param)
EVENT_TRACE("Sending event %d to 0x%p with 0x%p param", event, obj, param); EVENT_TRACE("Sending event %d to 0x%p with 0x%p param", event, obj, param);
/*Nothing to do if no event function and not bubbled*/
lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0);
if(event_dsc == NULL && lv_obj_has_flag(obj, LV_OBJ_FLAG_EVENT_BUBBLE) == false) {
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`. */
@@ -231,8 +225,11 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param)
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);
} }
lv_obj_event_base(NULL, obj, event);
uint32_t i = 0; uint32_t i = 0;
lv_res_t res = LV_RES_OK; lv_res_t res = LV_RES_OK;
lv_event_dsc_t * event_dsc = lv_obj_get_event_dsc(obj, 0);
while(event_dsc) { while(event_dsc) {
if(event_dsc->cb) { if(event_dsc->cb) {
void * event_act_user_data_cb_save = event_act_user_data_cb; void * event_act_user_data_cb_save = event_act_user_data_cb;
@@ -269,6 +266,48 @@ lv_res_t lv_event_send(lv_obj_t * obj, lv_event_t event, void * param)
return res; return res;
} }
lv_res_t lv_obj_event_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_event_t e)
{
const lv_obj_class_t * base;
if(class_p == NULL) base = obj->class_p;
else base = class_p->base_class;
/*Find a base in which signal_cb is set*/
while(base && base->event_cb == NULL) base = base->base_class;
if(base == NULL) return LV_RES_OK;
if(base->event_cb == NULL) return LV_RES_OK;
/* Build a simple linked list from the objects used in the events
* It's important to know if an this object was deleted by a nested event
* called from this `event_cb`. */
lv_event_temp_data_t event_temp_data;
event_temp_data.obj = obj;
event_temp_data.deleted = false;
event_temp_data.prev = NULL;
if(event_temp_data_head) {
event_temp_data.prev = event_temp_data_head;
}
event_temp_data_head = &event_temp_data;
/*Call the actual event callback*/
base->event_cb(obj, e);
lv_res_t res = LV_RES_OK;
/*Stop if the object is deleted*/
if(event_temp_data.deleted) res = LV_RES_INV;
/*Remove this element from the list*/
event_temp_data_head = event_temp_data_head->prev;
return res;
}
void * lv_event_get_param(void) void * lv_event_get_param(void)
{ {
return event_act_param; return event_act_param;
@@ -296,23 +335,6 @@ void _lv_event_mark_deleted(lv_obj_t * obj)
} }
} }
lv_res_t lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param)
{
if(obj == NULL) return LV_RES_OK;
SIGNAL_TRACE("Sending signal %d to 0x%p with 0x%p param", signal, obj, param);
const lv_obj_class_t * class_p = obj->class_p;
while(class_p && class_p->signal_cb == NULL) class_p = class_p->base_class;
if(class_p == NULL) return LV_RES_OK;
lv_res_t res = LV_RES_OK;
if(class_p->signal_cb) res = class_p->signal_cb(obj, signal, param);
return res;
}
/*===================== /*=====================
* Setter functions * Setter functions
*====================*/ *====================*/
@@ -435,7 +457,7 @@ void lv_obj_set_base_dir(lv_obj_t * obj, lv_bidi_dir_t dir)
lv_obj_allocate_spec_attr(obj); lv_obj_allocate_spec_attr(obj);
obj->spec_attr->base_dir = dir; obj->spec_attr->base_dir = dir;
lv_signal_send(obj, LV_SIGNAL_BASE_DIR_CHG, NULL); lv_event_send(obj, LV_EVENT_BASE_DIR_CHG, NULL);
/* Notify the children about the parent base dir has changed. /* Notify the children about the parent base dir has changed.
* (The children might have `LV_BIDI_DIR_INHERIT`)*/ * (The children might have `LV_BIDI_DIR_INHERIT`)*/
@@ -868,29 +890,27 @@ static lv_res_t scrollbar_init_draw_dsc(lv_obj_t * obj, lv_draw_rect_dsc_t * dsc
} }
static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_obj_event_cb(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res = LV_RES_OK; if(e == LV_EVENT_PRESSED) {
if(sign == LV_SIGNAL_PRESSED) {
lv_obj_add_state(obj, LV_STATE_PRESSED); lv_obj_add_state(obj, LV_STATE_PRESSED);
} }
else if(sign == LV_SIGNAL_RELEASED) { else if(e == 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();
/*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(sign == LV_SIGNAL_PRESS_LOST) { else if(e == LV_EVENT_PRESS_LOST) {
lv_obj_clear_state(obj, LV_STATE_PRESSED); lv_obj_clear_state(obj, LV_STATE_PRESSED);
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == 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 *)param); char c = *((char *)lv_event_get_param());
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;
@@ -899,11 +919,11 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_obj_clear_state(obj, LV_STATE_CHECKED); lv_obj_clear_state(obj, LV_STATE_CHECKED);
state = 0; state = 0;
} }
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &state); lv_res_t res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &state);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
} }
} }
else if(sign == LV_SIGNAL_FOCUS) { else if(e == 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);
} }
@@ -929,21 +949,22 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_obj_clear_state(obj, LV_STATE_EDITED); lv_obj_clear_state(obj, LV_STATE_EDITED);
} }
} }
else if(sign == LV_SIGNAL_SCROLL_BEGIN) { else if(e == LV_EVENT_SCROLL_BEGIN) {
lv_obj_add_state(obj, LV_STATE_SCROLLED); lv_obj_add_state(obj, LV_STATE_SCROLLED);
} }
else if(sign == LV_SIGNAL_SCROLL_END) { else if(e == LV_EVENT_SCROLL_END) {
lv_obj_clear_state(obj, LV_STATE_SCROLLED); lv_obj_clear_state(obj, LV_STATE_SCROLLED);
} }
else if(sign == LV_SIGNAL_DEFOCUS) { else if(e == 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(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
bool w_new = true; bool w_new = true;
bool h_new = true; bool h_new = true;
void * param = lv_event_get_param();
if(param) { if(param) {
if(lv_area_get_width(param) == lv_obj_get_width(obj)) w_new = false; if(lv_area_get_width(param) == lv_obj_get_width(obj)) w_new = false;
if(lv_area_get_height(param) == lv_obj_get_height(obj)) h_new = false; if(lv_area_get_height(param) == lv_obj_get_height(obj)) h_new = false;
@@ -991,33 +1012,29 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
} }
} }
else if(sign == LV_SIGNAL_CHILD_CHG) { else if(e == LV_EVENT_CHILD_CHG) {
lv_obj_mark_layout_as_dirty(obj); lv_obj_mark_layout_as_dirty(obj);
if(obj->w_set == LV_SIZE_CONTENT || obj->h_set == LV_SIZE_CONTENT) { if(obj->w_set == LV_SIZE_CONTENT || obj->h_set == LV_SIZE_CONTENT) {
lv_obj_set_size(obj, obj->w_set, obj->h_set); lv_obj_set_size(obj, obj->w_set, obj->h_set);
} }
} }
else if(sign == LV_SIGNAL_BASE_DIR_CHG) { else if(e == LV_EVENT_BASE_DIR_CHG) {
/* 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(sign == LV_SIGNAL_SCROLL) { else if(e == LV_EVENT_SCROLL_END) {
res = lv_event_send(obj, LV_EVENT_SCROLL, NULL);
if(res != LV_RES_OK) return res;
}
else if(sign == LV_SIGNAL_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(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
lv_coord_t * s = param; lv_coord_t * s = lv_event_get_param();
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(sign == LV_SIGNAL_STYLE_CHG) { else if(e == LV_EVENT_STYLE_CHG) {
/* Padding might have changed so the layout should be recalculated*/ /* Padding might have changed so the layout should be recalculated*/
lv_obj_mark_layout_as_dirty(obj); lv_obj_mark_layout_as_dirty(obj);
@@ -1035,7 +1052,6 @@ static lv_res_t lv_obj_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
lv_obj_refresh_ext_draw_size(obj); lv_obj_refresh_ext_draw_size(obj);
} }
return res;
} }
/** /**
@@ -1114,7 +1130,7 @@ static void base_dir_refr_children(lv_obj_t * obj)
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);
if(lv_obj_get_base_dir(child) == LV_BIDI_DIR_INHERIT) { if(lv_obj_get_base_dir(child) == LV_BIDI_DIR_INHERIT) {
lv_signal_send(child, LV_SIGNAL_BASE_DIR_CHG, NULL); lv_event_send(child, LV_EVENT_BASE_DIR_CHG, NULL);
base_dir_refr_children(child); base_dir_refr_children(child);
} }
} }

View File

@@ -38,6 +38,8 @@ struct _lv_obj_t;
* EVENTS * EVENTS
*---------------------*/ *---------------------*/
/** /**
* Type of event being sent to the object. * Type of event being sent to the object.
*/ */
@@ -77,6 +79,16 @@ typedef enum {
LV_EVENT_READY, /**< A process has finished */ LV_EVENT_READY, /**< A process has finished */
LV_EVENT_CANCEL, /**< A process has been cancelled */ LV_EVENT_CANCEL, /**< A process has been cancelled */
/*General signals*/
LV_EVENT_CHILD_CHG, /**< Child was removed/added */
LV_EVENT_COORD_CHG, /**< Object coordinates/size have changed */
LV_EVENT_STYLE_CHG, /**< Object's style has changed */
LV_EVENT_BASE_DIR_CHG, /**< The base dir has changed*/
LV_EVENT_GET_SELF_SIZE, /**< Get the internal size of a widget*/
/*Input device related*/
LV_EVENT_HIT_TEST, /**< Advanced hit-testing */
_LV_EVENT_LAST /** Number of default events*/ _LV_EVENT_LAST /** Number of default events*/
}lv_event_t; }lv_event_t;
@@ -96,45 +108,6 @@ typedef struct {
* EVENTS * EVENTS
*---------------------*/ *---------------------*/
/** Signals are for use by the object itself or to extend the object's functionality.
* They determine a widget with a given type should behave.
* Applications should use ::lv_obj_set_event_cb to be notified of events that occur
* on the object. */
typedef enum {
/*General signals*/
LV_SIGNAL_CHILD_CHG, /**< Child was removed/added */
LV_SIGNAL_COORD_CHG, /**< Object coordinates/size have changed */
LV_SIGNAL_STYLE_CHG, /**< Object's style has changed */
LV_SIGNAL_BASE_DIR_CHG, /**< The base dir has changed*/
LV_SIGNAL_REFR_EXT_DRAW_SIZE, /**< Object's extra padding has changed */
LV_SIGNAL_GET_SELF_SIZE, /**< Get the internal size of a widget*/
/*Input device related*/
LV_SIGNAL_HIT_TEST, /**< Advanced hit-testing */
LV_SIGNAL_PRESSED, /**< The object has been pressed*/
LV_SIGNAL_PRESSING, /**< The object is being pressed (called continuously while pressing)*/
LV_SIGNAL_PRESS_LOST, /**< User is still pressing but slid cursor/finger off of the object */
LV_SIGNAL_RELEASED, /**< User pressed object for a short period of time, then released it. Not called if scrolled. */
LV_SIGNAL_LONG_PRESS, /**< Object has been pressed for at least `LV_INDEV_LONG_PRESS_TIME`. Not called if scrolled.*/
LV_SIGNAL_LONG_PRESS_REP, /**< Called after `LV_INDEV_LONG_PRESS_TIME` in every `LV_INDEV_LONG_PRESS_REP_TIME` ms. Not called if scrolled.*/
LV_SIGNAL_SCROLL_BEGIN, /**< The scrolling has just begun */
LV_SIGNAL_SCROLL, /**< The object has been scrolled */
LV_SIGNAL_SCROLL_END, /**< The scrolling has ended */
LV_SIGNAL_GESTURE, /**< The object has been gesture*/
LV_SIGNAL_LEAVE, /**< Another object is clicked or chosen via an input device */
LV_SIGNAL_FOCUS, /**< The object was focused */
LV_SIGNAL_DEFOCUS, /**< The object was de-focused */
LV_SIGNAL_CONTROL, /**< Send a (control) character to the widget */
} lv_signal_t;
/**
* @brief Signal callback.
* Signals are used to notify the widget of the action related to the object.
* For details, see ::lv_signal_t.
*/
typedef lv_res_t (*lv_signal_cb_t)(struct _lv_obj_t * obj, lv_signal_t sign, void * param);
/** /**
* Possible states of a widget. * Possible states of a widget.
* OR-ed values are possible * OR-ed values are possible
@@ -329,6 +302,8 @@ lv_obj_t * lv_obj_create(lv_obj_t * parent, const lv_obj_t * copy);
*/ */
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_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);
/** /**
* Get the `param` parameter of the current event * Get the `param` parameter of the current event
* @return the `param` parameter * @return the `param` parameter
@@ -361,14 +336,6 @@ uint32_t lv_event_register_id(void);
*/ */
void _lv_event_mark_deleted(lv_obj_t * obj); void _lv_event_mark_deleted(lv_obj_t * obj);
/**
* Send an event to the object
* @param obj pointer to an object
* @param event the type of the event from `lv_event_t`.
* @return LV_RES_OK or LV_RES_INV
*/
lv_res_t lv_signal_send(lv_obj_t * obj, lv_signal_t signal, void * param);
/*===================== /*=====================
* Setter functions * Setter functions
*====================*/ *====================*/

View File

@@ -57,7 +57,7 @@ lv_obj_t * lv_obj_create_from_class(const lv_obj_class_t * class_p, lv_obj_t * p
if(parent) { if(parent) {
/* Send a signal to the parent to notify it about the new child. /* Send a signal to the parent to notify it about the new child.
* Also triggers layout update*/ * Also triggers layout update*/
lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
/*Invalidate the area if not screen created*/ /*Invalidate the area if not screen created*/
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
@@ -83,21 +83,6 @@ void _lv_obj_destruct(lv_obj_t * obj)
} }
} }
lv_res_t lv_obj_signal_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_signal_t sign, void * param)
{
if(class_p == NULL) return LV_RES_OK;
/*Find a base in which signal_cb is set*/
const lv_obj_class_t * base = class_p->base_class;
while(base && base->signal_cb == NULL) base = base->base_class;
if(base == NULL) return LV_RES_OK;
if(base->signal_cb == NULL) return LV_RES_OK;
return base->signal_cb(obj, sign, param);
}
lv_draw_res_t lv_obj_draw_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode) lv_draw_res_t lv_obj_draw_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode)
{ {
if(class_p == NULL) return LV_DRAW_RES_OK; if(class_p == NULL) return LV_DRAW_RES_OK;

View File

@@ -41,7 +41,7 @@ typedef struct _lv_obj_class_t{
const struct _lv_obj_class_t * base_class; const struct _lv_obj_class_t * base_class;
void (*constructor_cb)(struct _lv_obj_t * obj, const struct _lv_obj_t * copy); void (*constructor_cb)(struct _lv_obj_t * obj, const struct _lv_obj_t * copy);
void (*destructor_cb)(struct _lv_obj_t * obj); void (*destructor_cb)(struct _lv_obj_t * obj);
lv_signal_cb_t signal_cb; /**< Object type specific signal function*/ lv_event_cb_t event_cb; /**< Object type specific event function*/
lv_draw_cb_t draw_cb; /**< Object type specific draw function*/ lv_draw_cb_t draw_cb; /**< Object type specific draw function*/
uint32_t editable :2; /**< Value from ::lv_obj_class_editable_t */ uint32_t editable :2; /**< Value from ::lv_obj_class_editable_t */
uint32_t instance_size :20; uint32_t instance_size :20;
@@ -62,8 +62,6 @@ struct _lv_obj_t * lv_obj_create_from_class(const struct _lv_obj_class_t * class
void _lv_obj_destruct(struct _lv_obj_t * obj); void _lv_obj_destruct(struct _lv_obj_t * obj);
lv_res_t lv_obj_signal_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, lv_signal_t sign, void * param);
lv_draw_res_t lv_obj_draw_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); lv_draw_res_t lv_obj_draw_base(const lv_obj_class_t * class_p, struct _lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
bool lv_obj_is_editable(struct _lv_obj_t * obj); bool lv_obj_is_editable(struct _lv_obj_t * obj);

View File

@@ -387,7 +387,6 @@ void lv_obj_refresh_ext_draw_size(lv_obj_t * obj)
lv_coord_t s_old = _lv_obj_get_ext_draw_size(obj); lv_coord_t s_old = _lv_obj_get_ext_draw_size(obj);
lv_coord_t s_new = 0; lv_coord_t s_new = 0;
lv_signal_send(obj, LV_SIGNAL_REFR_EXT_DRAW_SIZE, &s_new);
lv_event_send(obj, LV_EVENT_REFR_EXT_DRAW_SIZE, &s_new); lv_event_send(obj, LV_EVENT_REFR_EXT_DRAW_SIZE, &s_new);
if(s_new != s_old) lv_obj_invalidate(obj); if(s_new != s_old) lv_obj_invalidate(obj);

View File

@@ -435,14 +435,14 @@ lv_coord_t lv_obj_get_width_visible(const lv_obj_t * obj)
lv_coord_t lv_obj_get_self_width(struct _lv_obj_t * obj) lv_coord_t lv_obj_get_self_width(struct _lv_obj_t * obj)
{ {
lv_point_t p = {0, LV_COORD_MIN}; lv_point_t p = {0, LV_COORD_MIN};
lv_signal_send((lv_obj_t * )obj, LV_SIGNAL_GET_SELF_SIZE, &p); lv_event_send((lv_obj_t * )obj, LV_EVENT_GET_SELF_SIZE, &p);
return p.x; return p.x;
} }
lv_coord_t lv_obj_get_self_height(struct _lv_obj_t * obj) lv_coord_t lv_obj_get_self_height(struct _lv_obj_t * obj)
{ {
lv_point_t p = {LV_COORD_MIN, 0}; lv_point_t p = {LV_COORD_MIN, 0};
lv_signal_send((lv_obj_t * )obj, LV_SIGNAL_GET_SELF_SIZE, &p); lv_event_send((lv_obj_t * )obj, LV_EVENT_GET_SELF_SIZE, &p);
return p.y; return p.y;
} }
@@ -504,10 +504,10 @@ void lv_obj_move_to(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, bool notify)
lv_obj_move_children_by(obj, diff.x, diff.y, false); lv_obj_move_children_by(obj, diff.x, diff.y, false);
/*Inform the object about its new coordinates*/ /*Inform the object about its new coordinates*/
lv_signal_send(obj, LV_SIGNAL_COORD_CHG, &ori); lv_event_send(obj, LV_EVENT_COORD_CHG, &ori);
/*Send a signal to the parent too*/ /*Send a signal to the parent too*/
if(parent && notify) lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); if(parent && notify) lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
/*Invalidate the new area*/ /*Invalidate the new area*/
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
@@ -652,7 +652,7 @@ bool lv_obj_hit_test(lv_obj_t * obj, const lv_point_t * point)
lv_hit_test_info_t hit_info; lv_hit_test_info_t hit_info;
hit_info.point = point; hit_info.point = point;
hit_info.result = true; hit_info.result = true;
lv_signal_send(obj, LV_SIGNAL_HIT_TEST, &hit_info); lv_event_send(obj, LV_EVENT_HIT_TEST, &hit_info);
return hit_info.result; return hit_info.result;
} }
@@ -714,10 +714,10 @@ static bool refr_size(lv_obj_t * obj, lv_coord_t w, lv_coord_t h)
} }
/*Send a signal to the object with its new coordinates*/ /*Send a signal to the object with its new coordinates*/
lv_signal_send(obj, LV_SIGNAL_COORD_CHG, &ori); lv_event_send(obj, LV_EVENT_COORD_CHG, &ori);
/*Send a signal to the parent too*/ /*Send a signal to the parent too*/
if(parent != NULL) lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); if(parent != NULL) lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
/*Invalidate the new area*/ /*Invalidate the new area*/
lv_obj_invalidate(obj); lv_obj_invalidate(obj);

View File

@@ -254,9 +254,6 @@ void lv_obj_scroll_by(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, lv_anim_enable
if(x) { if(x) {
lv_res_t res; lv_res_t res;
res = lv_signal_send(obj, LV_SIGNAL_SCROLL_BEGIN, NULL);
if(res != LV_RES_OK) return;
res = lv_event_send(obj, LV_EVENT_SCROLL_BEGIN, NULL); res = lv_event_send(obj, LV_EVENT_SCROLL_BEGIN, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
@@ -273,9 +270,6 @@ void lv_obj_scroll_by(lv_obj_t * obj, lv_coord_t x, lv_coord_t y, lv_anim_enable
if(y) { if(y) {
lv_res_t res; lv_res_t res;
res = lv_signal_send(obj, LV_SIGNAL_SCROLL_BEGIN, NULL);
if(res != LV_RES_OK) return;
res = lv_event_send(obj, LV_EVENT_SCROLL_BEGIN, NULL); res = lv_event_send(obj, LV_EVENT_SCROLL_BEGIN, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
@@ -541,7 +535,7 @@ static void scroll_by_raw(lv_obj_t * obj, lv_coord_t x, lv_coord_t y)
obj->spec_attr->scroll.y += y; obj->spec_attr->scroll.y += y;
lv_obj_move_children_by(obj, x, y, true); lv_obj_move_children_by(obj, x, y, true);
lv_res_t res = lv_signal_send(obj, LV_SIGNAL_SCROLL, NULL); lv_res_t res = lv_event_send(obj, LV_EVENT_SCROLL, NULL);
if(res != LV_RES_OK) return; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
@@ -558,9 +552,6 @@ static void scroll_y_anim(void * obj, int32_t v)
static void scroll_anim_ready_cb(lv_anim_t * a) static void scroll_anim_ready_cb(lv_anim_t * a)
{ {
lv_res_t res = lv_signal_send(a->var, LV_SIGNAL_SCROLL_END, NULL);
if(res != LV_RES_OK) return;
lv_event_send(a->var, LV_EVENT_SCROLL_END, NULL); lv_event_send(a->var, LV_EVENT_SCROLL_END, NULL);
} }

View File

@@ -171,7 +171,7 @@ void lv_obj_refresh_style(lv_obj_t * obj, lv_part_t part, lv_style_prop_t prop)
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
if((part == LV_PART_ANY || part == LV_PART_MAIN) && (prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_PROP_LAYOUT_REFR))) { if((part == LV_PART_ANY || part == LV_PART_MAIN) && (prop == LV_STYLE_PROP_ALL || (prop & LV_STYLE_PROP_LAYOUT_REFR))) {
lv_signal_send(obj, LV_SIGNAL_STYLE_CHG, NULL); /*To update layout*/ lv_event_send(obj, LV_EVENT_STYLE_CHG, NULL); /*To update layout*/
} else if(prop & LV_STYLE_PROP_EXT_DRAW) { } else if(prop & LV_STYLE_PROP_EXT_DRAW) {
lv_obj_refresh_ext_draw_size(obj); lv_obj_refresh_ext_draw_size(obj);
} }
@@ -569,7 +569,7 @@ static void refresh_children_style(lv_obj_t * obj)
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);
lv_obj_invalidate(child); lv_obj_invalidate(child);
lv_signal_send(child, LV_SIGNAL_STYLE_CHG, NULL); lv_event_send(child, LV_EVENT_STYLE_CHG, NULL);
lv_obj_invalidate(child); lv_obj_invalidate(child);
refresh_children_style(child); /*Check children too*/ refresh_children_style(child); /*Check children too*/

View File

@@ -72,7 +72,7 @@ void lv_obj_del(lv_obj_t * obj)
par->spec_attr->scroll.x = 0; par->spec_attr->scroll.x = 0;
par->spec_attr->scroll.y = 0; par->spec_attr->scroll.y = 0;
} }
lv_signal_send(par, LV_SIGNAL_CHILD_CHG, NULL); lv_event_send(par, LV_EVENT_CHILD_CHG, NULL);
} }
/*Handle if the active screen was deleted*/ /*Handle if the active screen was deleted*/
@@ -178,10 +178,10 @@ void lv_obj_set_parent(lv_obj_t * obj, lv_obj_t * parent)
} }
/*Notify the original parent because one of its children is lost*/ /*Notify the original parent because one of its children is lost*/
lv_signal_send(old_parent, LV_SIGNAL_CHILD_CHG, obj); lv_event_send(old_parent, LV_EVENT_CHILD_CHG, obj);
/*Notify the new parent about the child*/ /*Notify the new parent about the child*/
lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
@@ -201,7 +201,7 @@ void lv_obj_move_foreground(lv_obj_t * obj)
parent->spec_attr->children[lv_obj_get_child_cnt(parent) - 1] = obj; parent->spec_attr->children[lv_obj_get_child_cnt(parent) - 1] = obj;
/*Notify the new parent about the child*/ /*Notify the new parent about the child*/
lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
lv_obj_invalidate(parent); lv_obj_invalidate(parent);
} }
@@ -221,7 +221,7 @@ void lv_obj_move_background(lv_obj_t * obj)
parent->spec_attr->children[0] = obj; parent->spec_attr->children[0] = obj;
/*Notify the new parent about the child*/ /*Notify the new parent about the child*/
lv_signal_send(parent, LV_SIGNAL_CHILD_CHG, obj); lv_event_send(parent, LV_EVENT_CHILD_CHG, obj);
lv_obj_invalidate(parent); lv_obj_invalidate(parent);
} }

View File

@@ -349,7 +349,7 @@ static void children_repos(lv_obj_t * cont, int32_t item_first_id, int32_t item_
if(lv_area_get_height(&old_coords) != area_get_main_size(&item->coords)) { if(lv_area_get_height(&old_coords) != area_get_main_size(&item->coords)) {
lv_obj_invalidate(item); lv_obj_invalidate(item);
lv_signal_send(item, LV_SIGNAL_COORD_CHG, &old_coords); lv_event_send(item, LV_EVENT_COORD_CHG, &old_coords);
lv_obj_invalidate(item); lv_obj_invalidate(item);
} }
} }

View File

@@ -421,7 +421,7 @@ static void item_repos(lv_obj_t * item, _lv_grid_calc_t * c, item_repos_hint_t *
lv_area_set_width(&item->coords, item_w); lv_area_set_width(&item->coords, item_w);
lv_area_set_height(&item->coords, item_h); lv_area_set_height(&item->coords, item_h);
lv_obj_invalidate(item); lv_obj_invalidate(item);
lv_signal_send(item, LV_SIGNAL_COORD_CHG, &old_coords); lv_event_send(item, LV_EVENT_COORD_CHG, &old_coords);
} }
bool moved = true; bool moved = true;

View File

@@ -33,7 +33,7 @@
**********************/ **********************/
static void lv_colorwheel_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_colorwheel_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_colorwheel_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_colorwheel_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_colorwheel_event(lv_obj_t * obj, lv_event_t e);
static void draw_disc_grad(lv_obj_t * obj, const lv_area_t * mask); static void draw_disc_grad(lv_obj_t * obj, const lv_area_t * mask);
static void draw_knob(lv_obj_t * obj, const lv_area_t * mask); static void draw_knob(lv_obj_t * obj, const lv_area_t * mask);
@@ -52,7 +52,7 @@ static uint16_t get_angle(lv_obj_t * obj);
const lv_obj_class_t lv_colorwheel_class = {.instance_size = sizeof(lv_colorwheel_t), .base_class = &lv_obj_class, const lv_obj_class_t lv_colorwheel_class = {.instance_size = sizeof(lv_colorwheel_t), .base_class = &lv_obj_class,
.constructor_cb = lv_colorwheel_constructor, .constructor_cb = lv_colorwheel_constructor,
.draw_cb = lv_colorwheel_draw, .draw_cb = lv_colorwheel_draw,
.signal_cb = lv_colorwheel_signal, .event_cb = lv_colorwheel_event,
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
}; };
@@ -353,45 +353,39 @@ 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)
* Signal function of the color_picker
* @param colorwheel pointer to a color_picker object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/
static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
{ {
/* Include the ancient signal function */ /* Include the ancient signal function */
lv_res_t res = lv_obj_signal_base(MY_CLASS, obj, sign, param); lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj; lv_colorwheel_t * colorwheel = (lv_colorwheel_t *)obj;
if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { if(e == 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 = param; lv_coord_t * s = lv_event_get_param();
*s = LV_MAX(*s, knob_pad); *s = LV_MAX(*s, knob_pad);
} }
else if(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
void * param = lv_event_get_param();
/*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(sign == LV_SIGNAL_STYLE_CHG) { else if(e == LV_EVENT_STYLE_CHG) {
/*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(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
uint32_t c = *((uint32_t *)param); /*uint32_t because can be UTF-8*/ uint32_t c = *((uint32_t *)lv_event_get_param()); /*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;
@@ -411,7 +405,7 @@ static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * pa
if(lv_colorwheel_set_hsv(obj, hsv_cur)) { if(lv_colorwheel_set_hsv(obj, hsv_cur)) {
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 res; if(res != LV_RES_OK) return;
} }
} }
else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) { else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) {
@@ -432,19 +426,19 @@ static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * pa
if(lv_colorwheel_set_hsv(obj, hsv_cur)) { if(lv_colorwheel_set_hsv(obj, hsv_cur)) {
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 res; if(res != LV_RES_OK) return;
} }
} }
} }
else if(sign == LV_SIGNAL_PRESSED) { else if(e == 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 res; if(res != LV_RES_OK) return;
} }
else if(sign == LV_SIGNAL_PRESSING) { else if(e == LV_EVENT_PRESSING) {
lv_indev_t * indev = lv_indev_get_act(); lv_indev_t * indev = lv_indev_get_act();
if(indev == NULL) return res; if(indev == NULL) return;
lv_indev_type_t indev_type = lv_indev_get_type(indev); lv_indev_type_t indev_type = lv_indev_get_type(indev);
lv_point_t p; lv_point_t p;
@@ -494,11 +488,11 @@ static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * pa
if(!on_ring && diff > indev->driver->long_press_time && !colorwheel->mode_fixed) { if(!on_ring && diff > indev->driver->long_press_time && !colorwheel->mode_fixed) {
next_color_mode(obj); next_color_mode(obj);
lv_indev_wait_release(lv_indev_get_act()); lv_indev_wait_release(lv_indev_get_act());
return res; return;
} }
/*Set the angle only if pressed on the ring*/ /*Set the angle only if pressed on the ring*/
if(!on_ring) return res; if(!on_ring) return;
angle = lv_atan2(p.x, p.y) % 360; angle = lv_atan2(p.x, p.y) % 360;
@@ -519,17 +513,15 @@ static lv_res_t lv_colorwheel_signal(lv_obj_t * obj, lv_signal_t sign, void * pa
if(lv_colorwheel_set_hsv(obj, hsv_cur)) { if(lv_colorwheel_set_hsv(obj, hsv_cur)) {
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 res; if(res != LV_RES_OK) return;
} }
} }
else if(sign == LV_SIGNAL_HIT_TEST) { else if(e == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = param; lv_hit_test_info_t * info = lv_event_get_param();;
/*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);
} }
return res;
} }

View File

@@ -25,7 +25,7 @@
**********************/ **********************/
static void lv_imgbtn_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_imgbtn_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_imgbtn_draw(lv_obj_t * imgbtn, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_imgbtn_draw(lv_obj_t * imgbtn, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_imgbtn_signal(lv_obj_t * imgbtn, lv_signal_t sign, void * param); static void lv_imgbtn_event(lv_obj_t * imgbtn, 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);
@@ -37,7 +37,7 @@ const lv_obj_class_t lv_imgbtn_class = {
.base_class = &lv_obj_class, .base_class = &lv_obj_class,
.instance_size = sizeof(lv_imgbtn_t), .instance_size = sizeof(lv_imgbtn_t),
.constructor_cb = lv_imgbtn_constructor, .constructor_cb = lv_imgbtn_constructor,
.signal_cb = lv_imgbtn_signal, .event_cb = lv_imgbtn_event,
.draw_cb = lv_imgbtn_draw, .draw_cb = lv_imgbtn_draw,
}; };
@@ -272,23 +272,14 @@ static lv_draw_res_t lv_imgbtn_draw(lv_obj_t * obj, const lv_area_t * clip_area,
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
/** static void lv_imgbtn_event(lv_obj_t * obj, lv_event_t e)
* Signal function of the image button
* @param imgbtn pointer to a image button object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/
static lv_res_t lv_imgbtn_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
{ {
lv_res_t res = lv_obj_signal_base(&lv_imgbtn_class, obj, sign, param); lv_res_t res = lv_obj_event_base(&lv_imgbtn_class, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_PRESSED || sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { if(e == LV_EVENT_PRESSED || e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) {
refr_img(obj); refr_img(obj);
} }
return res;
} }
static void refr_img(lv_obj_t * obj) static void refr_img(lv_obj_t * obj)

View File

@@ -23,7 +23,7 @@
**********************/ **********************/
static void lv_spinbox_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_spinbox_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_res_t lv_spinbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e);
static void lv_spinbox_updatevalue(lv_obj_t * obj); static void lv_spinbox_updatevalue(lv_obj_t * obj);
/********************** /**********************
@@ -31,7 +31,7 @@ static void lv_spinbox_updatevalue(lv_obj_t * obj);
**********************/ **********************/
const lv_obj_class_t lv_spinbox_class = { const lv_obj_class_t lv_spinbox_class = {
.constructor_cb = lv_spinbox_constructor, .constructor_cb = lv_spinbox_constructor,
.signal_cb = lv_spinbox_signal, .event_cb = lv_spinbox_event,
.instance_size = sizeof(lv_spinbox_t), .instance_size = sizeof(lv_spinbox_t),
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
.base_class = &lv_textarea_class .base_class = &lv_textarea_class
@@ -301,15 +301,15 @@ static void lv_spinbox_constructor(lv_obj_t * obj, const lv_obj_t * copy)
LV_LOG_TRACE("Spinbox constructor finished"); LV_LOG_TRACE("Spinbox constructor finished");
} }
static lv_res_t lv_spinbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_spinbox_event(lv_obj_t * obj, lv_event_t e)
{ {
/* Include the ancient signal function */ /* Include the ancient signal function */
lv_res_t res = LV_RES_OK; lv_res_t res = LV_RES_OK;
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_spinbox_t * spinbox = (lv_spinbox_t *)obj; lv_spinbox_t * spinbox = (lv_spinbox_t *)obj;
if(sign == LV_SIGNAL_RELEASED) { if(e == 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) {
@@ -359,10 +359,10 @@ static lv_res_t lv_spinbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param
for(i = 0; i < pos; i++) spinbox->step *= 10; for(i = 0; i < pos; i++) spinbox->step *= 10;
} }
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == 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 *)param); /*uint32_t because can be UTF-8*/ uint32_t c = *((uint32_t *)lv_event_get_param()); /*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);
@@ -385,8 +385,6 @@ static lv_res_t lv_spinbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param
lv_textarea_add_char(obj, c); lv_textarea_add_char(obj, c);
} }
} }
return res;
} }
static void lv_spinbox_updatevalue(lv_obj_t * obj) static void lv_spinbox_updatevalue(lv_obj_t * obj)

View File

@@ -169,7 +169,7 @@ void lv_disp_drv_update(lv_disp_t * disp, lv_disp_drv_t * new_drv)
lv_obj_get_coords(disp->screens[i], &prev_coords); lv_obj_get_coords(disp->screens[i], &prev_coords);
lv_area_set_width(&disp->screens[i]->coords, w); lv_area_set_width(&disp->screens[i]->coords, w);
lv_area_set_height(&disp->screens[i]->coords, h); lv_area_set_height(&disp->screens[i]->coords, h);
lv_signal_send(disp->screens[i], LV_SIGNAL_COORD_CHG, &prev_coords); lv_event_send(disp->screens[i], LV_EVENT_COORD_CHG, &prev_coords);
} }
/* /*

View File

@@ -31,8 +31,8 @@
**********************/ **********************/
static void lv_arc_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_arc_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_arc_draw(lv_obj_t * arc, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_arc_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_arc_signal(lv_obj_t * arc, lv_signal_t sign, void * param); static void lv_arc_event(lv_obj_t * obj, lv_event_t e);
static void inv_arc_area(lv_obj_t * arc, uint16_t start_angle, uint16_t end_angle, uint8_t part); static void inv_arc_area(lv_obj_t * arc, uint16_t start_angle, uint16_t end_angle, uint8_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);
@@ -43,7 +43,7 @@ static void value_update(lv_obj_t * arc);
**********************/ **********************/
const lv_obj_class_t lv_arc_class = { const lv_obj_class_t lv_arc_class = {
.constructor_cb = lv_arc_constructor, .constructor_cb = lv_arc_constructor,
.signal_cb = lv_arc_signal, .event_cb = lv_arc_event,
.draw_cb = lv_arc_draw, .draw_cb = lv_arc_draw,
.instance_size = sizeof(lv_arc_t), .instance_size = sizeof(lv_arc_t),
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
@@ -591,22 +591,22 @@ static lv_draw_res_t lv_arc_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_arc_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_arc_t * arc = (lv_arc_t *)obj; lv_arc_t * arc = (lv_arc_t *)obj;
if(sign == LV_SIGNAL_PRESSING) { if(e == LV_EVENT_PRESSING) {
lv_indev_t * indev = lv_indev_get_act(); lv_indev_t * indev = lv_indev_get_act();
if(indev == NULL) return res; if(indev == NULL) return;
/*Handle only pointers here*/ /*Handle only pointers here*/
lv_indev_type_t indev_type = lv_indev_get_type(indev); lv_indev_type_t indev_type = lv_indev_get_type(indev);
if(indev_type != LV_INDEV_TYPE_POINTER) return res; if(indev_type != LV_INDEV_TYPE_POINTER) return;
lv_point_t p; lv_point_t p;
lv_indev_get_point(indev, &p); lv_indev_get_point(indev, &p);
@@ -631,10 +631,10 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
/*It must be in "dragging" mode to turn the arc*/ /*It must be in "dragging" mode to turn the arc*/
if(arc->dragging == false) return res; if(arc->dragging == false) return;
/*No angle can be determined if exactly the middle of the arc is being pressed*/ /*No angle can be determined if exactly the middle of the arc is being pressed*/
if(p.x == 0 && p.y == 0) return res; if(p.x == 0 && p.y == 0) return;
/*Calculate the angle of the pressed point*/ /*Calculate the angle of the pressed point*/
int16_t angle; int16_t angle;
@@ -695,7 +695,7 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_arc_set_value(obj, new_value); /*set_value caches the last_angle for the next iteration*/ lv_arc_set_value(obj, new_value); /*set_value caches the last_angle for the next iteration*/
if(new_value != old_value) { if(new_value != old_value) {
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 res; if(res != LV_RES_OK) return;
} }
} }
@@ -704,7 +704,7 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
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(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { else if(e == LV_EVENT_RELEASED || e == 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) */
@@ -716,8 +716,8 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
char c = *((char *)param); char c = *((char *)lv_event_get_param());
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) {
@@ -729,10 +729,10 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
if(old_value !=arc->value) { if(old_value !=arc->value) {
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 res; if(res != LV_RES_OK) return;
} }
} }
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { else if(e == 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);
@@ -745,11 +745,9 @@ static lv_res_t lv_arc_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
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 = param; lv_coord_t * s = lv_event_get_param();
*s = LV_MAX(*s, knob_pad - bg_pad); *s = LV_MAX(*s, knob_pad - bg_pad);
} }
return res;
} }
static void inv_arc_area(lv_obj_t * obj, uint16_t start_angle, uint16_t end_angle, uint8_t part) static void inv_arc_area(lv_obj_t * obj, uint16_t start_angle, uint16_t end_angle, uint8_t part)

View File

@@ -48,7 +48,7 @@
static void lv_bar_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_bar_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_bar_destructor(lv_obj_t * obj); static void lv_bar_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_bar_draw(lv_obj_t * bar, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_bar_draw(lv_obj_t * bar, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_bar_signal(lv_obj_t * bar, lv_signal_t sign, void * param); static void lv_bar_event(lv_obj_t * bar, lv_event_t e);
static void draw_indic(lv_obj_t * bar, const lv_area_t * clip_area); static void draw_indic(lv_obj_t * bar, const lv_area_t * clip_area);
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);
@@ -62,7 +62,7 @@ static void lv_bar_anim_ready(lv_anim_t * a);
const lv_obj_class_t lv_bar_class = { const lv_obj_class_t lv_bar_class = {
.constructor_cb = lv_bar_constructor, .constructor_cb = lv_bar_constructor,
.destructor_cb = lv_bar_destructor, .destructor_cb = lv_bar_destructor,
.signal_cb = lv_bar_signal, .event_cb = lv_bar_event,
.draw_cb = lv_bar_draw, .draw_cb = lv_bar_draw,
.instance_size = sizeof(lv_bar_t), .instance_size = sizeof(lv_bar_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -501,21 +501,21 @@ static void draw_indic(lv_obj_t * obj, const lv_area_t * clip_area)
lv_draw_rect(&bar->indic_area, clip_area, &draw_indic_dsc); lv_draw_rect(&bar->indic_area, clip_area, &draw_indic_dsc);
} }
static lv_res_t lv_bar_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_bar_event(lv_obj_t * obj, lv_event_t e)
{ {
LV_ASSERT_OBJ(obj, MY_CLASS); LV_ASSERT_OBJ(obj, MY_CLASS);
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { if(e == 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 = param; lv_coord_t * s = lv_event_get_param();
*s = LV_MAX(*s, indic_size); *s = LV_MAX(*s, indic_size);
/*Calculate the indicator area*/ /*Calculate the indicator area*/
@@ -529,8 +529,6 @@ static lv_res_t lv_bar_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
*s = LV_MAX(*s, -pad); *s = LV_MAX(*s, -pad);
} }
} }
return res;
} }
static void lv_bar_anim(void * var, int32_t value) static void lv_bar_anim(void * var, int32_t value)

View File

@@ -34,7 +34,7 @@
**********************/ **********************/
static void lv_btnmatrix_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_btnmatrix_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_btnmatrix_destructor(lv_obj_t * obj); static void lv_btnmatrix_destructor(lv_obj_t * obj);
static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e);
static lv_draw_res_t lv_btnmatrix_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_btnmatrix_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits); static uint8_t get_button_width(lv_btnmatrix_ctrl_t ctrl_bits);
@@ -57,7 +57,7 @@ static const char * lv_btnmatrix_def_map[] = {"Btn1", "Btn2", "Btn3", "\n", "Btn
const lv_obj_class_t lv_btnmatrix_class = { const lv_obj_class_t lv_btnmatrix_class = {
.constructor_cb = lv_btnmatrix_constructor, .constructor_cb = lv_btnmatrix_constructor,
.destructor_cb = lv_btnmatrix_destructor, .destructor_cb = lv_btnmatrix_destructor,
.signal_cb = lv_btnmatrix_signal, .event_cb = lv_btnmatrix_event,
.draw_cb = lv_btnmatrix_draw, .draw_cb = lv_btnmatrix_draw,
.instance_size = sizeof(lv_btnmatrix_t), .instance_size = sizeof(lv_btnmatrix_t),
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
@@ -550,28 +550,30 @@ static lv_draw_res_t lv_btnmatrix_draw(lv_obj_t * obj, const lv_area_t * clip_ar
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_btnmatrix_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
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(sign == LV_SIGNAL_STYLE_CHG) { if(e == LV_EVENT_STYLE_CHG) {
lv_btnmatrix_set_map(obj, btnm->map_p); lv_btnmatrix_set_map(obj, btnm->map_p);
} }
else if(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
void * param = lv_event_get_param();
if(param && if(param &&
(lv_obj_get_width(obj) != lv_area_get_width(param) || lv_obj_get_height(obj) != lv_area_get_height(param))) (lv_obj_get_width(obj) != lv_area_get_width(param) || lv_obj_get_height(obj) != lv_area_get_height(param)))
{ {
lv_btnmatrix_set_map(obj, btnm->map_p); lv_btnmatrix_set_map(obj, btnm->map_p);
} }
} }
else if(sign == LV_SIGNAL_PRESSED) { else if(e == LV_EVENT_PRESSED) {
void * param = lv_event_get_param();
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());
@@ -596,16 +598,17 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) { button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) {
uint32_t b = btnm->btn_id_sel; uint32_t b = btnm->btn_id_sel;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
} }
} }
} }
else if(sign == LV_SIGNAL_PRESSING) { else if(e == LV_EVENT_PRESSING) {
void * param = lv_event_get_param();
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();
lv_indev_type_t indev_type = lv_indev_get_type(indev); lv_indev_type_t indev_type = lv_indev_get_type(indev);
if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) return LV_RES_OK; if(indev_type == LV_INDEV_TYPE_ENCODER || indev_type == LV_INDEV_TYPE_KEYPAD) return;
lv_indev_get_point(indev, &p); lv_indev_get_point(indev, &p);
btn_pr = get_button_from_point(obj, &p); btn_pr = get_button_from_point(obj, &p);
@@ -626,12 +629,12 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
if(button_is_click_trig(btnm->ctrl_bits[btn_pr]) == false) { if(button_is_click_trig(btnm->ctrl_bits[btn_pr]) == false) {
uint32_t b = btn_pr; uint32_t b = btn_pr;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
} }
} }
} }
} }
else if(sign == LV_SIGNAL_RELEASED) { else if(e == 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]) &&
@@ -651,7 +654,7 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) { button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) {
uint32_t b = btnm->btn_id_sel; uint32_t b = btnm->btn_id_sel;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
} }
} }
@@ -663,22 +666,22 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE; btnm->btn_id_sel = LV_BTNMATRIX_BTN_NONE;
} }
} }
else if(sign == LV_SIGNAL_LONG_PRESS_REP) { else if(e == 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 &&
button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) { button_is_hidden(btnm->ctrl_bits[btnm->btn_id_sel]) == false) {
uint32_t b = btnm->btn_id_sel; uint32_t b = btnm->btn_id_sel;
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &b);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
} }
} }
} }
else if(sign == LV_SIGNAL_PRESS_LOST) { else if(e == 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(sign == LV_SIGNAL_FOCUS) { else if(e == 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);
@@ -707,15 +710,15 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
btnm->btn_id_sel = b; btnm->btn_id_sel = b;
} }
} }
else if(sign == LV_SIGNAL_DEFOCUS || sign == LV_SIGNAL_LEAVE) { else if(e == LV_EVENT_DEFOCUSED || e == 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(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
invalidate_button_area(obj, btnm->btn_id_sel); invalidate_button_area(obj, btnm->btn_id_sel);
char c = *((char *)param); char c = *((char *)lv_event_get_param());
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++;
@@ -793,7 +796,6 @@ static lv_res_t lv_btnmatrix_signal(lv_obj_t * obj, lv_signal_t sign, void * par
invalidate_button_area(obj, btnm->btn_id_sel); invalidate_button_area(obj, btnm->btn_id_sel);
} }
return res;
} }
/** /**

View File

@@ -39,7 +39,7 @@
static void lv_chart_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_chart_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_chart_destructor(lv_obj_t * obj); static void lv_chart_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_chart_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_chart_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_chart_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_chart_event(lv_obj_t * obj, 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);
@@ -55,7 +55,7 @@ static void invalidate_point(lv_obj_t * obj, uint16_t i);
const lv_obj_class_t lv_chart_class = { const lv_obj_class_t lv_chart_class = {
.constructor_cb = lv_chart_constructor, .constructor_cb = lv_chart_constructor,
.destructor_cb = lv_chart_destructor, .destructor_cb = lv_chart_destructor,
.signal_cb = lv_chart_signal, .event_cb = lv_chart_event,
.draw_cb = lv_chart_draw, .draw_cb = lv_chart_draw,
.instance_size = sizeof(lv_chart_t), .instance_size = sizeof(lv_chart_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -642,19 +642,16 @@ static lv_draw_res_t lv_chart_draw(lv_obj_t * obj, const lv_area_t * clip_area,
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_chart_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_chart_event(lv_obj_t * obj, lv_event_t e)
{ {
/* Include the ancient signal function */ /* Include the ancient signal function */
lv_res_t res; lv_res_t res;
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return;
lv_chart_t * chart = (lv_chart_t *)obj; lv_chart_t * chart = (lv_chart_t *)obj;
if(sign == LV_SIGNAL_GET_SELF_SIZE) { if(e == LV_EVENT_PRESSED) {
lv_point_t * p = param;
p->x = (lv_obj_get_width_fit(obj) * chart->zoom_x) >> 8;
p->y = (lv_obj_get_height_fit(obj) * chart->zoom_y) >> 8;
} else if(sign == LV_SIGNAL_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);
@@ -667,15 +664,13 @@ static lv_res_t lv_chart_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
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(sign == LV_SIGNAL_RELEASED) { } else if(e == LV_EVENT_RELEASED) {
chart->pressed_point_id = LV_CHART_POINT_NONE; chart->pressed_point_id = LV_CHART_POINT_NONE;
} else if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { } else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
lv_coord_t * s = param; lv_coord_t * s = lv_event_get_param();
*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);
} }
return res;
} }
static void draw_div_lines(lv_obj_t * obj, const lv_area_t * clip_area) static void draw_div_lines(lv_obj_t * obj, const lv_area_t * clip_area)

View File

@@ -29,7 +29,7 @@
static void lv_checkbox_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_checkbox_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_checkbox_destructor(lv_obj_t * obj); static void lv_checkbox_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_checkbox_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_checkbox_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_checkbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e);
/********************** /**********************
* STATIC VARIABLES * STATIC VARIABLES
@@ -37,7 +37,7 @@ static lv_res_t lv_checkbox_signal(lv_obj_t * obj, lv_signal_t sign, void * para
const lv_obj_class_t lv_checkbox_class = { const lv_obj_class_t lv_checkbox_class = {
.constructor_cb = lv_checkbox_constructor, .constructor_cb = lv_checkbox_constructor,
.destructor_cb = lv_checkbox_destructor, .destructor_cb = lv_checkbox_destructor,
.signal_cb = lv_checkbox_signal, .event_cb = lv_checkbox_event,
.draw_cb = lv_checkbox_draw, .draw_cb = lv_checkbox_draw,
.instance_size = sizeof(lv_checkbox_t), .instance_size = sizeof(lv_checkbox_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -208,15 +208,15 @@ static lv_draw_res_t lv_checkbox_draw(lv_obj_t * obj, const lv_area_t * clip_are
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_checkbox_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_checkbox_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if (sign == LV_SIGNAL_GET_SELF_SIZE) { if (e == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = param; lv_point_t * p = lv_event_get_param();
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);
@@ -240,20 +240,18 @@ static lv_res_t lv_checkbox_signal(lv_obj_t * obj, lv_signal_t sign, void * para
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(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
lv_coord_t *s = param; lv_coord_t *s = lv_event_get_param();;
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(sign == LV_SIGNAL_RELEASED) { else if(e == 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 res; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
return res;
} }
#endif #endif

View File

@@ -39,12 +39,12 @@ static lv_obj_t * lv_dropdown_list_create(lv_obj_t * parent, const lv_obj_t * co
static void lv_dropdown_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_dropdown_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_dropdown_destructor(lv_obj_t * obj); static void lv_dropdown_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_dropdown_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_dropdown_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e);
static void lv_dropdown_list_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_dropdown_list_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_dropdown_list_destructor(lv_obj_t * list_obj); static void lv_dropdown_list_destructor(lv_obj_t * list_obj);
static lv_draw_res_t lv_dropdown_list_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_dropdown_list_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_dropdown_list_signal(lv_obj_t * list, lv_signal_t sign, void * param); static void lv_dropdown_list_event(lv_obj_t * 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);
@@ -60,7 +60,7 @@ static lv_obj_t * get_label(const lv_obj_t * obj);
const lv_obj_class_t lv_dropdown_class = { const lv_obj_class_t lv_dropdown_class = {
.constructor_cb = lv_dropdown_constructor, .constructor_cb = lv_dropdown_constructor,
.destructor_cb = lv_dropdown_destructor, .destructor_cb = lv_dropdown_destructor,
.signal_cb = lv_dropdown_signal, .event_cb = lv_dropdown_event,
.draw_cb = lv_dropdown_draw, .draw_cb = lv_dropdown_draw,
.instance_size = sizeof(lv_dropdown_t), .instance_size = sizeof(lv_dropdown_t),
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
@@ -70,7 +70,7 @@ const lv_obj_class_t lv_dropdown_class = {
const lv_obj_class_t lv_dropdown_list_class = { const lv_obj_class_t lv_dropdown_list_class = {
.constructor_cb = lv_dropdown_list_constructor, .constructor_cb = lv_dropdown_list_constructor,
.destructor_cb = lv_dropdown_list_destructor, .destructor_cb = lv_dropdown_list_destructor,
.signal_cb = lv_dropdown_list_signal, .event_cb = lv_dropdown_list_event,
.draw_cb = lv_dropdown_list_draw, .draw_cb = lv_dropdown_list_draw,
.instance_size = sizeof(lv_dropdown_list_t), .instance_size = sizeof(lv_dropdown_list_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -783,17 +783,17 @@ static void lv_dropdown_list_destructor(lv_obj_t * list_obj)
dropdown->list = NULL; dropdown->list = NULL;
} }
static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_dropdown_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_dropdown_t * dropdown = (lv_dropdown_t *)obj; lv_dropdown_t * dropdown = (lv_dropdown_t *)obj;
if(sign == LV_SIGNAL_FOCUS) { if(e == 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());
@@ -807,10 +807,10 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * para
lv_dropdown_close(obj); lv_dropdown_close(obj);
} }
} }
else if(sign == LV_SIGNAL_DEFOCUS || sign == LV_SIGNAL_LEAVE) { else if(e == LV_EVENT_DEFOCUSED || e == LV_EVENT_LEAVE) {
lv_dropdown_close(obj); lv_dropdown_close(obj);
} }
else if(sign == LV_SIGNAL_RELEASED) { else if(e == 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) {
@@ -819,7 +819,7 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * para
dropdown->sel_opt_id_orig = dropdown->sel_opt_id; dropdown->sel_opt_id_orig = dropdown->sel_opt_id;
uint32_t id = dropdown->sel_opt_id; /*Just to use uint32_t in event data*/ uint32_t id = dropdown->sel_opt_id; /*Just to use uint32_t in event data*/
res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &id); res = lv_event_send(obj, LV_EVENT_VALUE_CHANGED, &id);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
lv_indev_type_t indev_type = lv_indev_get_type(indev); lv_indev_type_t indev_type = lv_indev_get_type(indev);
@@ -836,16 +836,16 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * para
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
} }
else if(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
if(dropdown->list) lv_dropdown_close(obj); if(dropdown->list) lv_dropdown_close(obj);
} }
else if(sign == LV_SIGNAL_GET_SELF_SIZE) { else if(e == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = param; lv_point_t * p = lv_event_get_param();
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(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
char c = *((char *)param); char c = *((char *)lv_event_get_param());
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);
@@ -870,8 +870,6 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * para
lv_dropdown_close(obj); lv_dropdown_close(obj);
} }
} }
return res;
} }
/** /**
@@ -881,30 +879,29 @@ static lv_res_t lv_dropdown_signal(lv_obj_t * obj, lv_signal_t sign, void * para
* @param param pointer to a signal specific variable * @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/ */
static lv_res_t lv_dropdown_list_signal(lv_obj_t * list, lv_signal_t sign, void * param) static void lv_dropdown_list_event(lv_obj_t * list, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS_LIST, list, sign, param); res = lv_obj_event_base(MY_CLASS_LIST, list, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
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(sign == LV_SIGNAL_RELEASED) { if(e == 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(sign == LV_SIGNAL_PRESSED) { else if(e == LV_EVENT_PRESSED) {
page_press_handler(list); page_press_handler(list);
} }
else if(sign == LV_SIGNAL_SCROLL_BEGIN) { else if(e == 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);
} }
return res;
} }
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)

View File

@@ -31,7 +31,7 @@
static void lv_img_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_img_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_img_destructor(lv_obj_t * obj); static void lv_img_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_img_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_img_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_img_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_img_event(lv_obj_t * obj, lv_event_t e);
/********************** /**********************
* STATIC VARIABLES * STATIC VARIABLES
@@ -39,7 +39,7 @@ static lv_res_t lv_img_signal(lv_obj_t * obj, lv_signal_t sign, void * param);
const lv_obj_class_t lv_img_class = { const lv_obj_class_t lv_img_class = {
.constructor_cb = lv_img_constructor, .constructor_cb = lv_img_constructor,
.destructor_cb = lv_img_destructor, .destructor_cb = lv_img_destructor,
.signal_cb = lv_img_signal, .event_cb = lv_img_event,
.draw_cb = lv_img_draw, .draw_cb = lv_img_draw,
.instance_size = sizeof(lv_img_t), .instance_size = sizeof(lv_img_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -550,25 +550,23 @@ static lv_draw_res_t lv_img_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_img_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_img_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); lv_res_t res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_img_t * img = (lv_img_t *)obj; lv_img_t * img = (lv_img_t *)obj;
if(sign == LV_SIGNAL_STYLE_CHG) { if(e == LV_EVENT_STYLE_CHG) {
/*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(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { else if(e == LV_EVENT_REFR_EXT_DRAW_SIZE) {
lv_coord_t * s = param; lv_coord_t * s = lv_event_get_param();
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;
@@ -588,8 +586,8 @@ static lv_res_t lv_img_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
*s = LV_MAX(*s, pad_ori + a.y2 - h); *s = LV_MAX(*s, pad_ori + a.y2 - h);
} }
} }
else if(sign == LV_SIGNAL_HIT_TEST) { else if(e == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = param; lv_hit_test_info_t * info = lv_event_get_param();
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;
@@ -618,13 +616,11 @@ static lv_res_t lv_img_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
info->result = _lv_area_is_point_on(&a, info->point, 0); info->result = _lv_area_is_point_on(&a, info->point, 0);
} }
} }
else if(sign == LV_SIGNAL_GET_SELF_SIZE) { else if(e == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = param; lv_point_t * p = lv_event_get_param();;
p->x = img->w; p->x = img->w;
p->y = img->h; p->y = img->h;
} }
return res;
} }
#endif #endif

View File

@@ -36,7 +36,7 @@
**********************/ **********************/
static void lv_label_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_label_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_label_destructor(lv_obj_t * obj); static void lv_label_destructor(lv_obj_t * obj);
static lv_res_t lv_label_signal(lv_obj_t * label, lv_signal_t sign, void * param); static void lv_label_event_cb(lv_obj_t * label, lv_event_t e);
static lv_draw_res_t lv_label_draw(lv_obj_t * label, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_label_draw(lv_obj_t * label, const lv_area_t * clip_area, lv_draw_mode_t mode);
static void lv_label_refr_text(lv_obj_t * obj); static void lv_label_refr_text(lv_obj_t * obj);
@@ -55,7 +55,7 @@ static void set_ofs_y_anim(void * obj, int32_t v);
const lv_obj_class_t lv_label_class = { const lv_obj_class_t lv_label_class = {
.constructor_cb = lv_label_constructor, .constructor_cb = lv_label_constructor,
.destructor_cb = lv_label_destructor, .destructor_cb = lv_label_destructor,
.signal_cb = lv_label_signal, .event_cb = lv_label_event_cb,
.draw_cb = lv_label_draw, .draw_cb = lv_label_draw,
.instance_size = sizeof(lv_label_t), .instance_size = sizeof(lv_label_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -835,34 +835,33 @@ static lv_draw_res_t lv_label_draw(lv_obj_t * obj, const lv_area_t * clip_area,
* @param param pointer to a signal specific variable * @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted * @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/ */
static lv_res_t lv_label_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_label_event_cb(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_STYLE_CHG) { if(e == LV_EVENT_STYLE_CHG) {
/*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(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
void * param = lv_event_get_param();
if(lv_area_get_width(&obj->coords) != lv_area_get_width(param) || if(lv_area_get_width(&obj->coords) != lv_area_get_width(param) ||
lv_area_get_height(&obj->coords) != lv_area_get_height(param)) { lv_area_get_height(&obj->coords) != lv_area_get_height(param)) {
lv_label_revert_dots(obj); lv_label_revert_dots(obj);
lv_label_refr_text(obj); lv_label_refr_text(obj);
} }
} }
else if(sign == LV_SIGNAL_BASE_DIR_CHG) { else if(e == LV_EVENT_BASE_DIR_CHG) {
#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
} }
return res;
} }

View File

@@ -30,14 +30,14 @@
**********************/ **********************/
static void lv_line_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_line_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_line_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_line_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_line_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_line_event(lv_obj_t * obj, lv_event_t e);
/********************** /**********************
* STATIC VARIABLES * STATIC VARIABLES
**********************/ **********************/
const lv_obj_class_t lv_line_class = { const lv_obj_class_t lv_line_class = {
.constructor_cb = lv_line_constructor, .constructor_cb = lv_line_constructor,
.signal_cb = lv_line_signal, .event_cb = lv_line_event,
.draw_cb = lv_line_draw, .draw_cb = lv_line_draw,
.instance_size = sizeof(lv_line_t), .instance_size = sizeof(lv_line_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -177,24 +177,24 @@ static lv_draw_res_t lv_line_draw(lv_obj_t * obj, const lv_area_t * clip_area, l
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_line_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_line_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { if(e == 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 = param; lv_coord_t * s = lv_event_get_param();
if(*s < line_width) *s = line_width; if(*s < line_width) *s = line_width;
} }
else if(sign == LV_SIGNAL_GET_SELF_SIZE) { else if(e == 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 = param; lv_point_t * p = lv_event_get_param();
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) {
@@ -211,7 +211,5 @@ static lv_res_t lv_line_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
p->y = h; p->y = h;
} }
} }
return res;
} }
#endif #endif

View File

@@ -31,8 +31,8 @@
static void lv_roller_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_roller_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_roller_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_roller_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_draw_res_t lv_roller_label_draw(lv_obj_t * label_obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_roller_label_draw(lv_obj_t * label_obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_roller_event(lv_obj_t * obj, lv_event_t e);
static lv_res_t lv_roller_label_signal(lv_obj_t * label, lv_signal_t sign, void * param); static void lv_roller_label_event(lv_obj_t * 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);
@@ -46,7 +46,7 @@ static void set_y_anim(void * obj, int32_t v);
**********************/ **********************/
const lv_obj_class_t lv_roller_class = { const lv_obj_class_t lv_roller_class = {
.constructor_cb = lv_roller_constructor, .constructor_cb = lv_roller_constructor,
.signal_cb = lv_roller_signal, .event_cb = lv_roller_event,
.draw_cb = lv_roller_draw, .draw_cb = lv_roller_draw,
.instance_size = sizeof(lv_roller_t), .instance_size = sizeof(lv_roller_t),
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
@@ -54,7 +54,7 @@ const lv_obj_class_t lv_roller_class = {
}; };
const lv_obj_class_t lv_roller_label_class = { const lv_obj_class_t lv_roller_label_class = {
.signal_cb = lv_roller_label_signal, .event_cb = lv_roller_label_event,
.draw_cb = lv_roller_label_draw, .draw_cb = lv_roller_label_draw,
.instance_size = sizeof(lv_label_t), .instance_size = sizeof(lv_label_t),
.base_class = &lv_label_class .base_class = &lv_label_class
@@ -448,39 +448,40 @@ static lv_draw_res_t lv_roller_label_draw(lv_obj_t * label_obj, const lv_area_t
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_roller_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_roller_t * roller = (lv_roller_t*)obj; lv_roller_t * roller = (lv_roller_t*)obj;
if(sign == LV_SIGNAL_GET_SELF_SIZE) { if(e == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = param; lv_point_t * p = lv_event_get_param();
p->x = get_selected_label_width(obj); p->x = get_selected_label_width(obj);
} }
else if(sign == LV_SIGNAL_STYLE_CHG) { else if(e == LV_EVENT_STYLE_CHG) {
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_signal_send(label, LV_SIGNAL_STYLE_CHG, NULL); if(label) lv_event_send(label, LV_EVENT_STYLE_CHG, 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(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
void * param = lv_event_get_param();
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_position(obj, false); refr_position(obj, false);
} }
} }
else if(sign == LV_SIGNAL_PRESSED) { else if(e == 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(sign == LV_SIGNAL_PRESSING) { else if(e == 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);
@@ -490,10 +491,10 @@ static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
roller->moved = 1; roller->moved = 1;
} }
} }
else if(sign == LV_SIGNAL_RELEASED) { else if(e == LV_EVENT_RELEASED) {
release_handler(obj); release_handler(obj);
} }
else if(sign == LV_SIGNAL_FOCUS) { else if(e == 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());
@@ -517,15 +518,15 @@ static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
ENTER won't be pressed*/ ENTER won't be pressed*/
} }
} }
else if(sign == LV_SIGNAL_DEFOCUS) { else if(e == 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(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
char c = *((char *)param); char c = *((char *)lv_event_get_param());
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*/
@@ -542,35 +543,24 @@ static lv_res_t lv_roller_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
} }
} }
return res;
} }
/** static void lv_roller_label_event(lv_obj_t * label, lv_event_t e)
* Signal function of the roller's label
* @param label pointer to a roller's label object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/
static lv_res_t lv_roller_label_signal(lv_obj_t * label, lv_signal_t sign, void * param)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS_LABEL, label, sign, param); res = lv_obj_event_base(MY_CLASS_LABEL, label, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { if(e == 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 = param; lv_coord_t * s = lv_event_get_param();
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);
} }
return res;
} }
/** /**

View File

@@ -33,7 +33,7 @@
**********************/ **********************/
static void lv_slider_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_slider_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_draw_res_t lv_slider_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_slider_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_slider_event(lv_obj_t * obj, 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, const lv_area_t * clip_area); static void draw_knob(lv_obj_t * obj, const lv_area_t * clip_area);
@@ -42,7 +42,7 @@ static void draw_knob(lv_obj_t * obj, const lv_area_t * clip_area);
**********************/ **********************/
const lv_obj_class_t lv_slider_class = { const lv_obj_class_t lv_slider_class = {
.constructor_cb = lv_slider_constructor, .constructor_cb = lv_slider_constructor,
.signal_cb = lv_slider_signal, .event_cb = lv_slider_event,
.draw_cb = lv_slider_draw, .draw_cb = lv_slider_draw,
.editable = LV_OBJ_CLASS_EDITABLE_TRUE, .editable = LV_OBJ_CLASS_EDITABLE_TRUE,
.instance_size = sizeof(lv_slider_t), .instance_size = sizeof(lv_slider_t),
@@ -121,20 +121,20 @@ static lv_draw_res_t lv_slider_draw(lv_obj_t * obj, const lv_area_t * clip_area,
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_slider_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_slider_t * slider = (lv_slider_t *)obj; lv_slider_t * slider = (lv_slider_t *)obj;
lv_slider_type_t type = lv_slider_get_type(obj); lv_slider_type_t type = lv_slider_get_type(obj);
/* Advanced hit testing: react only on dragging the knob(s) */ /* Advanced hit testing: react only on dragging the knob(s) */
if(sign == LV_SIGNAL_HIT_TEST) { if(e == LV_EVENT_HIT_TEST) {
lv_hit_test_info_t * info = param; lv_hit_test_info_t * info = lv_event_get_param();
/* 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);
@@ -144,14 +144,14 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
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(sign == LV_SIGNAL_PRESSED) { else if(e == LV_EVENT_PRESSED) {
lv_point_t p; lv_point_t p;
slider->dragging = true; slider->dragging = true;
if(type == LV_SLIDER_TYPE_NORMAL || type == LV_SLIDER_TYPE_SYMMETRICAL) { if(type == LV_SLIDER_TYPE_NORMAL || type == LV_SLIDER_TYPE_SYMMETRICAL) {
slider->value_to_set = &slider->bar.cur_value; slider->value_to_set = &slider->bar.cur_value;
} }
else if(type == LV_SLIDER_TYPE_RANGE) { else if(type == LV_SLIDER_TYPE_RANGE) {
lv_indev_get_point(param, &p); lv_indev_get_point(lv_indev_get_act(), &p);
bool hor = lv_obj_get_width(obj) >= lv_obj_get_height(obj); bool hor = lv_obj_get_width(obj) >= lv_obj_get_height(obj);
lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj); lv_bidi_dir_t base_dir = lv_obj_get_base_dir(obj);
@@ -206,11 +206,12 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
} }
} }
else if(sign == LV_SIGNAL_PRESSING && slider->value_to_set != NULL) { else if(e == LV_EVENT_PRESSING && slider->value_to_set != NULL) {
if(lv_indev_get_type(param) != LV_INDEV_TYPE_POINTER) return res; lv_indev_t * indev = lv_indev_get_act();
if(lv_indev_get_type(indev) != LV_INDEV_TYPE_POINTER) return;
lv_point_t p; lv_point_t p;
lv_indev_get_point(param, &p); lv_indev_get_point(indev, &p);
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 w = lv_obj_get_width(obj); lv_coord_t w = lv_obj_get_width(obj);
@@ -259,11 +260,11 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
*slider->value_to_set = new_value; *slider->value_to_set = new_value;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
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 res; if(res != LV_RES_OK) return;
} }
} }
else if(sign == LV_SIGNAL_RELEASED || sign == LV_SIGNAL_PRESS_LOST) { else if(e == LV_EVENT_RELEASED || e == LV_EVENT_PRESS_LOST) {
slider->dragging = false; slider->dragging = false;
slider->value_to_set = NULL; slider->value_to_set = NULL;
@@ -287,21 +288,22 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
} }
} }
else if(sign == LV_SIGNAL_FOCUS) { else if(e == 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(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
/* The knob size depends on slider size. /* The knob size depends on slider size.
* During the drawing method the obj. size is used by the knob so refresh the obj. size.*/ * During the drawing method the obj. size is used by the knob so refresh the obj. size.*/
void * param = lv_event_get_param();
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)) {
lv_obj_refresh_ext_draw_size(obj); lv_obj_refresh_ext_draw_size(obj);
} }
} }
else if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { else if(e == 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);
@@ -317,30 +319,28 @@ static lv_res_t lv_slider_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
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 = param; lv_coord_t * s = lv_event_get_param();
*s = LV_MAX(*s, knob_size); *s = LV_MAX(*s, knob_size);
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
char c = *((char *)param); char c = *((char *)lv_event_get_param());
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);
else lv_slider_set_left_value(obj, lv_slider_get_left_value(obj) + 1, LV_ANIM_ON); else lv_slider_set_left_value(obj, lv_slider_get_left_value(obj) + 1, LV_ANIM_ON);
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 res; if(res != LV_RES_OK) return;
} }
else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) { else if(c == LV_KEY_LEFT || c == LV_KEY_DOWN) {
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);
else lv_slider_set_left_value(obj, lv_slider_get_left_value(obj) - 1, LV_ANIM_ON); else lv_slider_set_left_value(obj, lv_slider_get_left_value(obj) - 1, LV_ANIM_ON);
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 res; if(res != LV_RES_OK) return;
} }
} }
return res;
} }
static void draw_knob(lv_obj_t * obj, const lv_area_t * clip_area) static void draw_knob(lv_obj_t * obj, const lv_area_t * clip_area)

View File

@@ -34,7 +34,7 @@
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void lv_switch_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_switch_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static lv_res_t lv_switch_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_switch_event(lv_obj_t * obj, lv_event_t e);
static lv_draw_res_t lv_switch_draw(lv_obj_t * sw, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_switch_draw(lv_obj_t * sw, const lv_area_t * clip_area, lv_draw_mode_t mode);
/********************** /**********************
@@ -42,7 +42,7 @@ static lv_draw_res_t lv_switch_draw(lv_obj_t * sw, const lv_area_t * clip_area,
**********************/ **********************/
const lv_obj_class_t lv_switch_class = { const lv_obj_class_t lv_switch_class = {
.constructor_cb = lv_switch_constructor, .constructor_cb = lv_switch_constructor,
.signal_cb = lv_switch_signal, .event_cb = lv_switch_event,
.draw_cb = lv_switch_draw, .draw_cb = lv_switch_draw,
.instance_size = sizeof(lv_switch_t), .instance_size = sizeof(lv_switch_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -166,16 +166,16 @@ static lv_draw_res_t lv_switch_draw(lv_obj_t * obj, const lv_area_t * clip_area,
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_switch_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_switch_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
if(sign == LV_SIGNAL_REFR_EXT_DRAW_SIZE) { if(e == 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);
@@ -190,19 +190,17 @@ static lv_res_t lv_switch_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
knob_size = (knob_size - lv_obj_get_height(obj)) / 2; knob_size = (knob_size - lv_obj_get_height(obj)) / 2;
lv_coord_t * s = param; lv_coord_t * s = lv_event_get_param();
*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(sign == LV_SIGNAL_RELEASED) { else if(e == 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 res; if(res != LV_RES_OK) return;
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
return res;
} }
#endif #endif

View File

@@ -32,7 +32,7 @@
static void lv_table_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_table_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_table_destructor(lv_obj_t * obj); static void lv_table_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_table_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_table_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_table_event(lv_obj_t * obj, 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);
@@ -45,7 +45,7 @@ static lv_res_t get_pressed_cell(lv_obj_t * obj, uint16_t * row, uint16_t * col)
const lv_obj_class_t lv_table_class = { const lv_obj_class_t lv_table_class = {
.constructor_cb = lv_table_constructor, .constructor_cb = lv_table_constructor,
.destructor_cb = lv_table_destructor, .destructor_cb = lv_table_destructor,
.signal_cb = lv_table_signal, .event_cb = lv_table_event,
.draw_cb = lv_table_draw, .draw_cb = lv_table_draw,
.base_class = &lv_obj_class, .base_class = &lv_obj_class,
.instance_size = sizeof(lv_table_t), .instance_size = sizeof(lv_table_t),
@@ -644,21 +644,21 @@ static lv_draw_res_t lv_table_draw(lv_obj_t * obj, const lv_area_t * clip_area,
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param) static void lv_table_event(lv_obj_t * obj, lv_event_t e)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_table_t * table = (lv_table_t *)obj; lv_table_t * table = (lv_table_t *)obj;
if(sign == LV_SIGNAL_STYLE_CHG) { if(e == LV_EVENT_STYLE_CHG) {
refr_size(obj, 0); refr_size(obj, 0);
} }
else if(sign == LV_SIGNAL_GET_SELF_SIZE) { else if(e == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = param; lv_point_t * p = lv_event_get_param();
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];
@@ -669,7 +669,7 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
p->x = w; p->x = w;
p->y = h; p->y = h;
} }
else if(sign == LV_SIGNAL_PRESSED || sign == LV_SIGNAL_PRESSING) { else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING) {
uint16_t col; uint16_t col;
uint16_t row; uint16_t row;
get_pressed_cell(obj, &row, &col); get_pressed_cell(obj, &row, &col);
@@ -680,12 +680,12 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
} }
else if(sign == LV_SIGNAL_RELEASED) { else if(e == LV_EVENT_RELEASED) {
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);
if(table->col_act != 0xFFFF && table->row_act != 0xFFFF && scroll_obj == NULL) { if(table->col_act != 0xFFFF && table->row_act != 0xFFFF && scroll_obj == NULL) {
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 res; if(res != LV_RES_OK) return;
} }
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());
@@ -695,8 +695,8 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
} }
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
int32_t c = *((int32_t *)param); int32_t c = *((int32_t *)lv_event_get_param());
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(c == LV_KEY_LEFT) col--; if(c == LV_KEY_LEFT) col--;
@@ -724,11 +724,9 @@ static lv_res_t lv_table_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
lv_obj_invalidate(obj); lv_obj_invalidate(obj);
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 res; if(res != LV_RES_OK) return;
} }
} }
return res;
} }

View File

@@ -48,7 +48,7 @@
static void lv_textarea_constructor(lv_obj_t * obj, const lv_obj_t * copy); static void lv_textarea_constructor(lv_obj_t * obj, const lv_obj_t * copy);
static void lv_textarea_destructor(lv_obj_t * obj); static void lv_textarea_destructor(lv_obj_t * obj);
static lv_draw_res_t lv_textarea_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode); static lv_draw_res_t lv_textarea_draw(lv_obj_t * obj, const lv_area_t * clip_area, lv_draw_mode_t mode);
static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * param); static void lv_textarea_event(lv_obj_t * obj, 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);
@@ -56,7 +56,7 @@ 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_signal_t sign, lv_indev_t * click_source); static void update_cursor_position_on_click(lv_obj_t * obj, 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, const lv_area_t * clip_area); static void draw_placeholder(lv_obj_t * obj, const lv_area_t * clip_area);
static void draw_cursor(lv_obj_t * obj, const lv_area_t * clip_area); static void draw_cursor(lv_obj_t * obj, const lv_area_t * clip_area);
@@ -67,7 +67,7 @@ static void draw_cursor(lv_obj_t * obj, const lv_area_t * clip_area);
const lv_obj_class_t lv_textarea_class = { const lv_obj_class_t lv_textarea_class = {
.constructor_cb = lv_textarea_constructor, .constructor_cb = lv_textarea_constructor,
.destructor_cb = lv_textarea_destructor, .destructor_cb = lv_textarea_destructor,
.signal_cb = lv_textarea_signal, .event_cb = lv_textarea_event,
.draw_cb = lv_textarea_draw, .draw_cb = lv_textarea_draw,
.instance_size = sizeof(lv_textarea_t), .instance_size = sizeof(lv_textarea_t),
.base_class = &lv_obj_class .base_class = &lv_obj_class
@@ -1041,23 +1041,16 @@ static lv_draw_res_t lv_textarea_draw(lv_obj_t * obj, const lv_area_t * clip_are
return LV_DRAW_RES_OK; return LV_DRAW_RES_OK;
} }
/** static void lv_textarea_event(lv_obj_t * obj, lv_event_t e)
* Signal function of the text area
* @param ta pointer to a text area object
* @param sign a signal type from lv_signal_t enum
* @param param pointer to a signal specific variable
* @return LV_RES_OK: the object is not deleted in the function; LV_RES_INV: the object is deleted
*/
static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * param)
{ {
lv_res_t res; lv_res_t res;
/* Include the ancient signal function */ /* Include the ancient signal function */
res = lv_obj_signal_base(MY_CLASS, obj, sign, param); res = lv_obj_event_base(MY_CLASS, obj, e);
if(res != LV_RES_OK) return res; if(res != LV_RES_OK) return;
lv_textarea_t * ta = (lv_textarea_t *)obj; lv_textarea_t * ta = (lv_textarea_t *)obj;
if(sign == LV_SIGNAL_STYLE_CHG) { if(e == LV_EVENT_STYLE_CHG) {
if(ta->label) { if(ta->label) {
if(ta->one_line) { if(ta->one_line) {
lv_coord_t top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN); lv_coord_t top = lv_obj_get_style_pad_top(obj, LV_PART_MAIN);
@@ -1080,12 +1073,13 @@ static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * para
start_cursor_blink(obj); start_cursor_blink(obj);
} }
} }
else if(sign == LV_SIGNAL_FOCUS) { else if(e == LV_EVENT_FOCUSED) {
start_cursor_blink(obj); start_cursor_blink(obj);
} }
else if(sign == LV_SIGNAL_COORD_CHG) { else if(e == LV_EVENT_COORD_CHG) {
/*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) {
void * param = lv_event_get_param();
if(lv_obj_get_width(obj) != lv_area_get_width(param) || lv_obj_get_height(obj) != lv_area_get_height(param)) { if(lv_obj_get_width(obj) != lv_area_get_width(param) || lv_obj_get_height(obj) != lv_area_get_height(param)) {
lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj)); lv_obj_set_width(ta->label, lv_obj_get_width_fit(obj));
lv_obj_set_pos(ta->label, 0, 0); lv_obj_set_pos(ta->label, 0, 0);
@@ -1095,8 +1089,8 @@ static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * para
} }
} }
} }
else if(sign == LV_SIGNAL_CONTROL) { else if(e == LV_EVENT_KEY) {
uint32_t c = *((uint32_t *)param); /*uint32_t because can be UTF-8*/ uint32_t c = *((uint32_t *)lv_event_get_param()); /*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)
@@ -1119,11 +1113,10 @@ static lv_res_t lv_textarea_signal(lv_obj_t * obj, lv_signal_t sign, void * para
lv_textarea_add_char(obj, c); lv_textarea_add_char(obj, c);
} }
} }
else if(sign == LV_SIGNAL_PRESSED || sign == LV_SIGNAL_PRESSING || sign == LV_SIGNAL_PRESS_LOST || else if(e == LV_EVENT_PRESSED || e == LV_EVENT_PRESSING || e == LV_EVENT_PRESS_LOST ||
sign == LV_SIGNAL_RELEASED) { e == LV_EVENT_RELEASED) {
update_cursor_position_on_click(obj, sign, (lv_indev_t *)param); update_cursor_position_on_click(obj, e);
} }
return res;
} }
/** /**
@@ -1347,8 +1340,9 @@ 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_signal_t sign, lv_indev_t * click_source) static void update_cursor_position_on_click(lv_obj_t * obj, lv_event_t e)
{ {
lv_indev_t * click_source = lv_indev_get_act();
if(click_source == NULL) return; if(click_source == NULL) return;
lv_textarea_t * ta = (lv_textarea_t *)obj; lv_textarea_t * ta = (lv_textarea_t *)obj;
@@ -1394,24 +1388,24 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_signal_t sign, lv
} }
if(ta->text_sel_en) { if(ta->text_sel_en) {
if(!ta->text_sel_in_prog && !click_outside_label && sign == LV_SIGNAL_PRESSED) { if(!ta->text_sel_in_prog && !click_outside_label && e == LV_EVENT_PRESSED) {
/*Input device just went down. Store the selection start position*/ /*Input device just went down. Store the selection start position*/
ta->sel_start = char_id_at_click; ta->sel_start = char_id_at_click;
ta->sel_end = LV_LABEL_TEXT_SEL_OFF; ta->sel_end = LV_LABEL_TEXT_SEL_OFF;
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 && sign == LV_SIGNAL_PRESSING) { else if(ta->text_sel_in_prog && e == 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 && (sign == LV_SIGNAL_PRESS_LOST || sign == LV_SIGNAL_RELEASED)) { else if(ta->text_sel_in_prog && (e == LV_EVENT_PRESS_LOST || e == 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);
} }
} }
if(ta->text_sel_in_prog || sign == LV_SIGNAL_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click); if(ta->text_sel_in_prog || e == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click);
if(ta->text_sel_in_prog) { if(ta->text_sel_in_prog) {
/*If the selected area has changed then update the real values and*/ /*If the selected area has changed then update the real values and*/
@@ -1439,7 +1433,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_signal_t sign, lv
} }
} }
/*Finish selection if necessary */ /*Finish selection if necessary */
if(sign == LV_SIGNAL_PRESS_LOST || sign == LV_SIGNAL_RELEASED) { if(e == LV_EVENT_PRESS_LOST || e == LV_EVENT_RELEASED) {
ta->text_sel_in_prog = 0; ta->text_sel_in_prog = 0;
} }
} }
@@ -1456,7 +1450,7 @@ static void update_cursor_position_on_click(lv_obj_t * obj, lv_signal_t sign, lv
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(sign == LV_SIGNAL_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click); if(e == LV_EVENT_PRESSED) lv_textarea_set_cursor_pos(obj, char_id_at_click);
#endif #endif
} }