fix(imgbtn) consider width==LV_SIZE_CONTENT if only mid. img is set

fixes #2305
This commit is contained in:
Gabor Kiss-Vamosi
2021-06-28 13:46:22 +02:00
parent 4faede19e9
commit 8080b5f718

View File

@@ -175,6 +175,19 @@ static void lv_imgbtn_event(const lv_obj_class_t * class_p, lv_event_t * e)
lv_cover_check_info_t * info = lv_event_get_param(e);
if(info->res != LV_COVER_RES_MASKED) info->res = LV_COVER_RES_NOT_COVER;
}
else if(code == LV_EVENT_GET_SELF_SIZE) {
lv_point_t * p = lv_event_get_self_size_info(e);
lv_imgbtn_t * imgbtn = (lv_imgbtn_t *)obj;
lv_imgbtn_state_t state = suggest_state(obj, get_state(obj));
if(imgbtn->img_src_left[state] == NULL &&
imgbtn->img_src_mid[state] != NULL &&
imgbtn->img_src_right[state] == NULL)
{
lv_img_header_t header;
lv_img_decoder_get_info(imgbtn->img_src_mid, &header);
p->x = LV_MAX(p->x, header.w);
}
}
}
static void draw_main(lv_event_t * e)
@@ -271,6 +284,7 @@ static void refr_img(lv_obj_t * obj)
if(info_res == LV_RES_OK) {
imgbtn->act_cf = header.cf;
lv_obj_refresh_self_size(obj);
lv_obj_set_height(obj, header.h); /*Keep the user defined width*/
}
else {