[lvgl] Fix unexpected widget update behavior (#8260)

This commit is contained in:
bdm310 2025-04-22 03:13:43 -07:00 committed by GitHub
parent fbf00f0af4
commit dbb7cbed3e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 12 deletions

View File

@ -67,12 +67,13 @@ class ArcType(NumberType):
lv.arc_set_mode(w.obj, literal(config[CONF_MODE])) lv.arc_set_mode(w.obj, literal(config[CONF_MODE]))
lv.arc_set_change_rate(w.obj, config[CONF_CHANGE_RATE]) lv.arc_set_change_rate(w.obj, config[CONF_CHANGE_RATE])
if config.get(CONF_ADJUSTABLE) is False: if CONF_ADJUSTABLE in config:
lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB")) if not config[CONF_ADJUSTABLE]:
w.clear_flag("LV_OBJ_FLAG_CLICKABLE") lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB"))
elif CONF_GROUP not in config: w.clear_flag("LV_OBJ_FLAG_CLICKABLE")
# For some reason arc does not get automatically added to the default group elif CONF_GROUP not in config:
lv.group_add_obj(lv_expr.group_get_default(), w.obj) # For some reason arc does not get automatically added to the default group
lv.group_add_obj(lv_expr.group_get_default(), w.obj)
value = await get_start_value(config) value = await get_start_value(config)
if value is not None: if value is not None:

View File

@ -36,7 +36,6 @@ DROPDOWN_BASE_SCHEMA = cv.Schema(
cv.Optional(CONF_SYMBOL): lv_text, cv.Optional(CONF_SYMBOL): lv_text,
cv.Exclusive(CONF_SELECTED_INDEX, CONF_SELECTED_TEXT): lv_int, cv.Exclusive(CONF_SELECTED_INDEX, CONF_SELECTED_TEXT): lv_int,
cv.Exclusive(CONF_SELECTED_TEXT, CONF_SELECTED_TEXT): lv_text, cv.Exclusive(CONF_SELECTED_TEXT, CONF_SELECTED_TEXT): lv_text,
cv.Optional(CONF_DIR, default="BOTTOM"): DIRECTIONS.one_of,
cv.Optional(CONF_DROPDOWN_LIST): part_schema(dropdown_list_spec.parts), cv.Optional(CONF_DROPDOWN_LIST): part_schema(dropdown_list_spec.parts),
} }
) )
@ -44,12 +43,14 @@ DROPDOWN_BASE_SCHEMA = cv.Schema(
DROPDOWN_SCHEMA = DROPDOWN_BASE_SCHEMA.extend( DROPDOWN_SCHEMA = DROPDOWN_BASE_SCHEMA.extend(
{ {
cv.Required(CONF_OPTIONS): cv.ensure_list(option_string), cv.Required(CONF_OPTIONS): cv.ensure_list(option_string),
cv.Optional(CONF_DIR, default="BOTTOM"): DIRECTIONS.one_of,
} }
) )
DROPDOWN_UPDATE_SCHEMA = DROPDOWN_BASE_SCHEMA.extend( DROPDOWN_UPDATE_SCHEMA = DROPDOWN_BASE_SCHEMA.extend(
{ {
cv.Optional(CONF_OPTIONS): cv.ensure_list(option_string), cv.Optional(CONF_OPTIONS): cv.ensure_list(option_string),
cv.Optional(CONF_DIR): DIRECTIONS.one_of,
} }
) )

View File

@ -20,8 +20,8 @@ CONF_IMAGE = "image"
BASE_IMG_SCHEMA = cv.Schema( BASE_IMG_SCHEMA = cv.Schema(
{ {
cv.Optional(CONF_PIVOT_X, default="50%"): size, cv.Optional(CONF_PIVOT_X): size,
cv.Optional(CONF_PIVOT_Y, default="50%"): size, cv.Optional(CONF_PIVOT_Y): size,
cv.Optional(CONF_ANGLE): angle, cv.Optional(CONF_ANGLE): angle,
cv.Optional(CONF_ZOOM): zoom, cv.Optional(CONF_ZOOM): zoom,
cv.Optional(CONF_OFFSET_X): size, cv.Optional(CONF_OFFSET_X): size,
@ -63,10 +63,11 @@ class ImgType(WidgetType):
async def to_code(self, w: Widget, config): async def to_code(self, w: Widget, config):
if src := config.get(CONF_SRC): if src := config.get(CONF_SRC):
lv.img_set_src(w.obj, await lv_image.process(src)) lv.img_set_src(w.obj, await lv_image.process(src))
if (cf_angle := config.get(CONF_ANGLE)) is not None: if (pivot_x := config.get(CONF_PIVOT_X)) and (
pivot_x = config[CONF_PIVOT_X] pivot_y := config.get(CONF_PIVOT_Y)
pivot_y = config[CONF_PIVOT_Y] ):
lv.img_set_pivot(w.obj, pivot_x, pivot_y) lv.img_set_pivot(w.obj, pivot_x, pivot_y)
if (cf_angle := config.get(CONF_ANGLE)) is not None:
lv.img_set_angle(w.obj, cf_angle) lv.img_set_angle(w.obj, cf_angle)
if (img_zoom := config.get(CONF_ZOOM)) is not None: if (img_zoom := config.get(CONF_ZOOM)) is not None:
lv.img_set_zoom(w.obj, img_zoom) lv.img_set_zoom(w.obj, img_zoom)