1
0
mirror of https://github.com/lvgl/lvgl.git synced 2025-01-14 06:42:58 +08:00

Merge branch 'beta' into dev-5.2

This commit is contained in:
Gabor Kiss-Vamosi 2018-07-07 08:09:14 +02:00
commit 48375bb780
3 changed files with 71 additions and 8 deletions

View File

@ -449,7 +449,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, lv_desig
rect_area.y1 += ext->sel_opt_id * (font_h + style->text.line_space); rect_area.y1 += ext->sel_opt_id * (font_h + style->text.line_space);
rect_area.y1 -= style->text.line_space / 2; rect_area.y1 -= style->text.line_space / 2;
rect_area.y2 = rect_area.y1 + font_h + style->text.line_space; rect_area.y2 = rect_area.y1 + font_h + style->text.line_space - 1;
rect_area.x1 = ddlist->coords.x1; rect_area.x1 = ddlist->coords.x1;
rect_area.x2 = ddlist->coords.x2; rect_area.x2 = ddlist->coords.x2;
@ -476,7 +476,7 @@ static bool lv_ddlist_design(lv_obj_t * ddlist, const lv_area_t * mask, lv_desig
area_sel.y1 += ext->sel_opt_id * (font_h + style->text.line_space); area_sel.y1 += ext->sel_opt_id * (font_h + style->text.line_space);
area_sel.y1 -= style->text.line_space / 2; area_sel.y1 -= style->text.line_space / 2;
area_sel.y2 = area_sel.y1 + font_h + style->text.line_space; area_sel.y2 = area_sel.y1 + font_h + style->text.line_space - 1;
area_sel.x1 = ddlist->coords.x1; area_sel.x1 = ddlist->coords.x1;
area_sel.x2 = ddlist->coords.x2; area_sel.x2 = ddlist->coords.x2;
lv_area_t mask_sel; lv_area_t mask_sel;
@ -636,9 +636,12 @@ static lv_res_t lv_ddlist_release_action(lv_obj_t * ddlist)
uint16_t new_opt = 0; uint16_t new_opt = 0;
const char * txt = lv_label_get_text(ext->label); const char * txt = lv_label_get_text(ext->label);
uint16_t i; uint32_t i = 0;
for(i = 0; i < letter_i; i++) { uint32_t line_cnt = 0;
if(txt[i] == '\n') new_opt ++; uint32_t letter;
for(line_cnt = 0; line_cnt < letter_i; line_cnt++) {
letter = lv_txt_utf8_next(txt, &i);
if(letter == '\n') new_opt ++;
} }
ext->sel_opt_id = new_opt; ext->sel_opt_id = new_opt;

View File

@ -21,6 +21,7 @@
* DEFINES * DEFINES
*********************/ *********************/
#define LV_PAGE_SB_MIN_SIZE (LV_DPI / 8) #define LV_PAGE_SB_MIN_SIZE (LV_DPI / 8)
#define LV_PAGE_GROUP_SCROLL_ANIM_TIME 200
/********************** /**********************
* TYPEDEFS * TYPEDEFS
@ -292,6 +293,16 @@ void lv_page_glue_obj(lv_obj_t * obj, bool glue)
*/ */
void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, uint16_t anim_time) void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, uint16_t anim_time)
{ {
#if USE_LV_ANIMATION == 0
anim_tiem = 0;
#endif
/* Be sure there is no position changing animation in progress
* because it can overide the current changes*/
lv_anim_del(page, (lv_anim_fp_t)lv_obj_set_y);
lv_anim_del(page, (lv_anim_fp_t)lv_obj_set_pos);
lv_page_ext_t * ext = lv_obj_get_ext_attr(page); lv_page_ext_t * ext = lv_obj_get_ext_attr(page);
lv_style_t * style = lv_page_get_style(page, LV_PAGE_STYLE_BG); lv_style_t * style = lv_page_get_style(page, LV_PAGE_STYLE_BG);
lv_style_t * style_scrl = lv_page_get_style(page, LV_PAGE_STYLE_SCRL); lv_style_t * style_scrl = lv_page_get_style(page, LV_PAGE_STYLE_SCRL);
@ -525,7 +536,54 @@ static lv_res_t lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param)
/*Ensure ext. size for the scrollbars if they are out of the page*/ /*Ensure ext. size for the scrollbars if they are out of the page*/
if(page->ext_size < (-ext->sb.style->body.padding.hor)) page->ext_size = -ext->sb.style->body.padding.hor; if(page->ext_size < (-ext->sb.style->body.padding.hor)) page->ext_size = -ext->sb.style->body.padding.hor;
if(page->ext_size < (-ext->sb.style->body.padding.ver)) page->ext_size = -ext->sb.style->body.padding.ver; if(page->ext_size < (-ext->sb.style->body.padding.ver)) page->ext_size = -ext->sb.style->body.padding.ver;
} else if(sign == LV_SIGNAL_GET_TYPE) { } else if(sign == LV_SIGNAL_CONTROLL) {
uint32_t c = *((uint32_t *) param);
lv_obj_t * scrl = lv_page_get_scrl(page);
if(c == LV_GROUP_KEY_DOWN || c == LV_GROUP_KEY_RIGHT) {
#if USE_LV_ANIMATION
lv_anim_t a;
a.var = scrl;
a.start = lv_obj_get_y(scrl);
a.end = a.start - LV_DPI / 2;
a.fp = (lv_anim_fp_t)lv_obj_set_y;
a.path = lv_anim_path_linear;
a.end_cb = NULL;
a.act_time = 0;
a.time = LV_PAGE_GROUP_SCROLL_ANIM_TIME;
a.playback = 0;
a.playback_pause = 0;
a.repeat = 0;
a.repeat_pause = 0;
lv_anim_create(&a);
#else
lv_obj_set_y(scrl, lv_obj_get_y(scrl) - LV_DPI / 2);
#endif
}
else if(c == LV_GROUP_KEY_UP || c == LV_GROUP_KEY_LEFT) {
#if USE_LV_ANIMATION
lv_anim_t a;
a.var = scrl;
a.start = lv_obj_get_y(scrl);
a.end = a.start + LV_DPI / 2;
a.fp = (lv_anim_fp_t)lv_obj_set_y;
a.path = lv_anim_path_linear;
a.end_cb = NULL;
a.act_time = 0;
a.time = LV_PAGE_GROUP_SCROLL_ANIM_TIME;
a.playback = 0;
a.playback_pause = 0;
a.repeat = 0;
a.repeat_pause = 0;
lv_anim_create(&a);
#else
lv_obj_set_y(scrl, lv_obj_get_y(scrl) - LV_DPI / 2);
#endif
}
}
else if(sign == LV_SIGNAL_GET_TYPE) {
lv_obj_type_t * buf = param; lv_obj_type_t * buf = param;
uint8_t i; uint8_t i;
for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/ for(i = 0; i < LV_MAX_ANCESTOR_NUM - 1; i++) { /*Find the last set data*/

View File

@ -229,7 +229,8 @@ static bool lv_roller_design(lv_obj_t * roller, const lv_area_t * mask, lv_desig
lv_coord_t font_h = lv_font_get_height(font); lv_coord_t font_h = lv_font_get_height(font);
lv_area_t rect_area; lv_area_t rect_area;
rect_area.y1 = roller->coords.y1 + lv_obj_get_height(roller) / 2 - font_h / 2 - style->text.line_space / 2; rect_area.y1 = roller->coords.y1 + lv_obj_get_height(roller) / 2 - font_h / 2 - style->text.line_space / 2;
rect_area.y2 = rect_area.y1 + font_h + style->text.line_space; if((font_h & 0x1) && (style->text.line_space & 0x1)) rect_area.y1 --; /*Compensate the two rounding error*/
rect_area.y2 = rect_area.y1 + font_h + style->text.line_space - 1;
rect_area.x1 = roller->coords.x1; rect_area.x1 = roller->coords.x1;
rect_area.x2 = roller->coords.x2; rect_area.x2 = roller->coords.x2;
@ -246,7 +247,8 @@ static bool lv_roller_design(lv_obj_t * roller, const lv_area_t * mask, lv_desig
/*Redraw the text on the selected area with a different color*/ /*Redraw the text on the selected area with a different color*/
lv_area_t rect_area; lv_area_t rect_area;
rect_area.y1 = roller->coords.y1 + lv_obj_get_height(roller) / 2 - font_h / 2 - style->text.line_space / 2; rect_area.y1 = roller->coords.y1 + lv_obj_get_height(roller) / 2 - font_h / 2 - style->text.line_space / 2;
rect_area.y2 = rect_area.y1 + font_h + style->text.line_space; if((font_h & 0x1) && (style->text.line_space & 0x1)) rect_area.y1 --; /*Compensate the two rounding error*/
rect_area.y2 = rect_area.y1 + font_h + style->text.line_space - 1;
rect_area.x1 = roller->coords.x1; rect_area.x1 = roller->coords.x1;
rect_area.x2 = roller->coords.x2; rect_area.x2 = roller->coords.x2;
lv_area_t mask_sel; lv_area_t mask_sel;