/* Set relative the position of an object (relative to the parent)  */
void lv_obj_set_pos(lv_obj_t *obj, lv_coord_t x, lv_coord_t y)
/* Set relative the position of an object (relative to the parent)  */
void lv_obj_set_pos(lv_obj_t *obj, lv_coord_t x, lv_coord_t y)
{
    lv_obj_t * par = obj->par;
    x = x + par->coords.x1;
    y = y + par->coords.y1;
    lv_point_t diff;
    diff.x =  x - obj->coords.x1;
    diff.y =  y - obj->coords.y1;
    if(diff.x == 0 && diff.y == 0) return;
    lv_obj_invalidate(obj);
    lv_area_t ori;
    lv_obj_get_coords(obj, &ori);
    obj->coords.x1 += diff.x;
    obj->coords.y1 += diff.y;
    obj->coords.x2 += diff.x;
    obj->coords.y2 += diff.y;
    refresh_childen_position(obj, diff.x, diff.y);
    obj->signal_func(obj, LV_SIGNAL_CORD_CHG, &ori);
    par->signal_func(par, LV_SIGNAL_CHILD_CHG, obj);
    lv_obj_invalidate(obj);
}