diff --git a/lv_core/lv_indev.c b/lv_core/lv_indev.c index acf23aaab..d2b06e6fe 100644 --- a/lv_core/lv_indev.c +++ b/lv_core/lv_indev.c @@ -655,10 +655,14 @@ static void indev_drag(lv_indev_proc_t * state) lv_coord_t act_y = lv_obj_get_y(drag_obj); uint16_t inv_buf_size = lv_refr_get_buf_size(); /*Get the number of currently invalidated areas*/ + lv_coord_t prev_x = drag_obj->coords.x1; + lv_coord_t prev_y = drag_obj->coords.y1; + lv_obj_set_pos(drag_obj, act_x + state->vect.x, act_y + state->vect.y); /*Set the drag in progress flag if the object is really moved*/ - if(lv_obj_get_x(drag_obj) != act_x || lv_obj_get_y(drag_obj) != act_y) { + + if(drag_obj->coords.x1 != prev_x || drag_obj->coords.y1 != prev_y) { if(state->drag_range_out != 0) { /*Send the drag begin signal on first move*/ drag_obj->signal_func(drag_obj, LV_SIGNAL_DRAG_BEGIN, indev_act); if(state->reset_query != 0) return; diff --git a/lv_objx/lv_cont.c b/lv_objx/lv_cont.c index 0f0104f1c..7a3e09be8 100644 --- a/lv_objx/lv_cont.c +++ b/lv_objx/lv_cont.c @@ -135,7 +135,9 @@ void lv_cont_set_fit(lv_obj_t * cont, bool hor_en, bool ver_en) ext->ver_fit = ver_en == false ? 0 : 1; /*Send a signal to set a new size*/ - cont->signal_func(cont, LV_SIGNAL_CORD_CHG, cont); + lv_area_t area; + lv_obj_get_coords(cont, &area); + cont->signal_func(cont, LV_SIGNAL_CORD_CHG, &area); } /*=====================