diff --git a/esphome/components/lvgl/widgets/arc.py b/esphome/components/lvgl/widgets/arc.py index dc120e4cbb..65f0e785b6 100644 --- a/esphome/components/lvgl/widgets/arc.py +++ b/esphome/components/lvgl/widgets/arc.py @@ -67,12 +67,13 @@ class ArcType(NumberType): lv.arc_set_mode(w.obj, literal(config[CONF_MODE])) lv.arc_set_change_rate(w.obj, config[CONF_CHANGE_RATE]) - if config.get(CONF_ADJUSTABLE) is False: - lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB")) - w.clear_flag("LV_OBJ_FLAG_CLICKABLE") - elif CONF_GROUP not in config: - # For some reason arc does not get automatically added to the default group - lv.group_add_obj(lv_expr.group_get_default(), w.obj) + if CONF_ADJUSTABLE in config: + if not config[CONF_ADJUSTABLE]: + lv_obj.remove_style(w.obj, nullptr, literal("LV_PART_KNOB")) + w.clear_flag("LV_OBJ_FLAG_CLICKABLE") + elif CONF_GROUP not in config: + # 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) if value is not None: diff --git a/esphome/components/lvgl/widgets/dropdown.py b/esphome/components/lvgl/widgets/dropdown.py index b32b5a2b2e..9ff183f3dd 100644 --- a/esphome/components/lvgl/widgets/dropdown.py +++ b/esphome/components/lvgl/widgets/dropdown.py @@ -36,7 +36,6 @@ DROPDOWN_BASE_SCHEMA = cv.Schema( cv.Optional(CONF_SYMBOL): lv_text, cv.Exclusive(CONF_SELECTED_INDEX, CONF_SELECTED_TEXT): lv_int, 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), } ) @@ -44,12 +43,14 @@ DROPDOWN_BASE_SCHEMA = cv.Schema( DROPDOWN_SCHEMA = DROPDOWN_BASE_SCHEMA.extend( { 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( { cv.Optional(CONF_OPTIONS): cv.ensure_list(option_string), + cv.Optional(CONF_DIR): DIRECTIONS.one_of, } ) diff --git a/esphome/components/lvgl/widgets/img.py b/esphome/components/lvgl/widgets/img.py index d9de8d821a..c3e0781489 100644 --- a/esphome/components/lvgl/widgets/img.py +++ b/esphome/components/lvgl/widgets/img.py @@ -20,8 +20,8 @@ CONF_IMAGE = "image" BASE_IMG_SCHEMA = cv.Schema( { - cv.Optional(CONF_PIVOT_X, default="50%"): size, - cv.Optional(CONF_PIVOT_Y, default="50%"): size, + cv.Optional(CONF_PIVOT_X): size, + cv.Optional(CONF_PIVOT_Y): size, cv.Optional(CONF_ANGLE): angle, cv.Optional(CONF_ZOOM): zoom, cv.Optional(CONF_OFFSET_X): size, @@ -63,10 +63,11 @@ class ImgType(WidgetType): async def to_code(self, w: Widget, config): if src := config.get(CONF_SRC): lv.img_set_src(w.obj, await lv_image.process(src)) - if (cf_angle := config.get(CONF_ANGLE)) is not None: - pivot_x = config[CONF_PIVOT_X] - pivot_y = config[CONF_PIVOT_Y] + if (pivot_x := config.get(CONF_PIVOT_X)) and ( + pivot_y := config.get(CONF_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) if (img_zoom := config.get(CONF_ZOOM)) is not None: lv.img_set_zoom(w.obj, img_zoom)