diff --git a/src/others/observer/lv_observer.c b/src/others/observer/lv_observer.c index f7257a19f2..d13d3b95f3 100644 --- a/src/others/observer/lv_observer.c +++ b/src/others/observer/lv_observer.c @@ -556,7 +556,10 @@ lv_observer_t * lv_label_bind_text(lv_obj_t * obj, lv_subject_t * subject, const LV_ASSERT_NULL(obj); if(fmt == NULL) { - if(subject->type != LV_SUBJECT_TYPE_STRING && subject->type != LV_SUBJECT_TYPE_POINTER) { + if(subject->type == LV_SUBJECT_TYPE_INT) { + fmt = "%d"; + } + else if(subject->type != LV_SUBJECT_TYPE_STRING && subject->type != LV_SUBJECT_TYPE_POINTER) { LV_LOG_WARN("Incompatible subject type: %d", subject->type); return NULL; } diff --git a/tests/src/test_cases/test_observer.c b/tests/src/test_cases/test_observer.c index ebbf0e0d47..6ba28814f9 100644 --- a/tests/src/test_cases/test_observer.c +++ b/tests/src/test_cases/test_observer.c @@ -663,11 +663,11 @@ void test_observer_label_text_normal(void) observer = lv_label_bind_text(obj, &subject_color, NULL); TEST_ASSERT_EQUAL_PTR(NULL, observer); - /*Cannot bind int*/ + /*Bind it with "%d" if NULL is passed*/ static lv_subject_t subject_int; - lv_subject_init_int(&subject_int, 0); + lv_subject_init_int(&subject_int, 10); observer = lv_label_bind_text(obj, &subject_int, NULL); - TEST_ASSERT_EQUAL_PTR(NULL, observer); + TEST_ASSERT_EQUAL_STRING("10", lv_label_get_text(obj)); /*Bind to string*/ static char buf[32]; diff --git a/xmls/lv_label.xml b/xmls/lv_label.xml index a70c165847..8abc48df60 100644 --- a/xmls/lv_label.xml +++ b/xmls/lv_label.xml @@ -23,5 +23,9 @@ Example + + + + - \ No newline at end of file + diff --git a/xmls/lv_slider.xml b/xmls/lv_slider.xml index b9d0757169..0fed948b8f 100644 --- a/xmls/lv_slider.xml +++ b/xmls/lv_slider.xml @@ -28,5 +28,8 @@ Example + + + \ No newline at end of file