[PATCH 14/19] expo: Use a var to arrange horizonal positions in menu
Simon Glass
sjg at chromium.org
Mon May 5 17:42:52 CEST 2025
At present the components of each menu item are set at fixed positions.
Use an 'x' variable instead, so that we can eventually move to taking
account of the actual dimensions of the items.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
boot/scene_menu.c | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/boot/scene_menu.c b/boot/scene_menu.c
index c2abf1e3926..094489e2a40 100644
--- a/boot/scene_menu.c
+++ b/boot/scene_menu.c
@@ -228,7 +228,7 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
const struct expo_theme *theme = &exp->theme;
struct scene_menitem *item;
uint sel_id;
- int x, y;
+ int startx, x, y;
int ret;
menu->obj.dims.x = 0;
@@ -237,12 +237,12 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
memset(dims, '\0', sizeof(dims));
scene_menu_calc_dims(scn, menu, dims);
- x = menu->obj.bbox.x0;
+ startx = menu->obj.bbox.x0;
y = menu->obj.bbox.y0;
if (menu->title_id) {
int width;
- ret = scene_obj_set_pos(scn, menu->title_id, menu->obj.bbox.x0, y);
+ ret = scene_obj_set_pos(scn, menu->title_id, startx, y);
if (ret < 0)
return log_msg_ret("tit", ret);
@@ -251,7 +251,7 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
return log_msg_ret("hei", ret);
if (stack)
- x += arr->label_width + theme->menu_title_margin_x;
+ startx += arr->label_width + theme->menu_title_margin_x;
else
y += ret * 2;
}
@@ -267,6 +267,7 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
bool selected;
int height;
+ x = startx;
ret = scene_obj_get_hw(scn, item->label_id, NULL);
if (ret < 0)
return log_msg_ret("get", ret);
@@ -291,19 +292,23 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
return log_msg_ret("nam", ret);
scene_obj_set_hide(scn, item->label_id,
stack && !open && !selected);
+ x += 200;
/* space for the pointer */
- if (menu->pointer_id)
- menu->pointer_xofs = 200;
+ if (menu->pointer_id) {
+ menu->pointer_xofs = x - startx;
+ x += 30;
+ }
if (item->key_id) {
- ret = scene_obj_set_pos(scn, item->key_id, x + 230, y);
+ ret = scene_obj_set_pos(scn, item->key_id, x, y);
if (ret < 0)
return log_msg_ret("key", ret);
+ x += 50;
}
if (item->desc_id) {
- ret = scene_obj_set_pos(scn, item->desc_id, x + 280, y);
+ ret = scene_obj_set_pos(scn, item->desc_id, x, y);
if (ret < 0)
return log_msg_ret("des", ret);
}
--
2.43.0
More information about the U-Boot
mailing list