feat(obj): merge signals into events
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
*====================*/
|
*====================*/
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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*/
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user