improve hscroll_label

This commit is contained in:
lixianjing 2021-04-06 18:08:49 +08:00
parent 8c9e92f75b
commit acfbb49056
3 changed files with 13 additions and 1 deletions

View File

@ -1,7 +1,8 @@
# 最新动态 # 最新动态
2021/04/06 2021/04/06
* add idle\_queue\_ex/timer\_queue\_ex for script binding. * 增加 idle\_queue\_ex/timer\_queue\_ex 方便脚本绑定时使用。
* 增加 hscroll\_label检测焦点状态下长度变化重新播放动画的机制感谢智明提供补丁
2021/04/04 2021/04/04
* 增加 gui\_app\_start\_ex方便嵌入式系统指定资源路径。 * 增加 gui\_app\_start\_ex方便嵌入式系统指定资源路径。

View File

@ -40,6 +40,12 @@ static ret_t hscroll_label_do_paint_self(widget_t* widget, canvas_t* c, uint32_t
hscroll_label_t* hscroll_label = HSCROLL_LABEL(widget); hscroll_label_t* hscroll_label = HSCROLL_LABEL(widget);
hscroll_label->text_w = canvas_measure_text(c, text->str, text->size); hscroll_label->text_w = canvas_measure_text(c, text->str, text->size);
if (hscroll_label->text_w != hscroll_label->old_text_w) {
if (tk_str_eq(widget->state, WIDGET_STATE_FOCUSED)) {
hscroll_label_start(widget);
}
hscroll_label->old_text_w = hscroll_label->text_w;
}
if (w < hscroll_label->text_w && hscroll_label->ellipses && !hscroll_label_is_running(widget)) { if (w < hscroll_label->text_w && hscroll_label->ellipses && !hscroll_label_is_running(widget)) {
r = rect_init(left_margin, 0, w, widget->h); r = rect_init(left_margin, 0, w, widget->h);
@ -332,6 +338,10 @@ static ret_t hscroll_label_on_timer(const timer_info_t* info) {
} }
} }
if (ret != RET_REPEAT) {
hscroll_label->timer_id = TK_INVALID_ID;
}
return ret; return ret;
} }

View File

@ -125,6 +125,7 @@ typedef struct _hscroll_label_t {
int32_t text_w; int32_t text_w;
/*private*/ /*private*/
int32_t old_text_w;
uint32_t timer_id; uint32_t timer_id;
uint32_t elapsed; uint32_t elapsed;
bool_t paused; bool_t paused;