@@ -227,6 +227,8 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
const bool stack = exp->popup;
const struct expo_theme *theme = &exp->theme;
struct scene_menitem *item;
+ int xsize = 0, ysize = 0;
+ struct udevice *dev;
uint sel_id;
int startx, x, y;
int ret;
@@ -238,6 +240,14 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
memset(dims, '\0', sizeof(dims));
scene_menu_calc_dims(scn, menu, dims);
+ dev = scn->expo->display;
+ if (dev) {
+ struct video_priv *priv = dev_get_uclass_priv(dev);
+
+ xsize = priv->xsize;
+ ysize = priv->ysize;
+ }
+
startx = menu->obj.req_bbox.x0;
y = menu->obj.req_bbox.y0;
if (menu->title_id) {
@@ -324,13 +334,17 @@ int scene_menu_arrange(struct scene *scn, struct expo_arrange_info *arr,
}
if (item->preview_id) {
+ const struct scene_obj *obj;
bool hide;
/*
* put all previews on top of each other, on the right
* size of the display
*/
- ret = scene_obj_set_pos(scn, item->preview_id, -4, y);
+ obj = scene_obj_find(scn, item->preview_id,
+ SCENEOBJT_NONE);
+ ret = scene_obj_set_pos(scn, item->preview_id,
+ xsize - obj->dims.x - 4, y);
if (ret < 0)
return log_msg_ret("prev", ret);
@@ -436,7 +436,7 @@ static int expo_object_menu(struct unit_test_state *uts)
ut_asserteq(menu->obj.bbox.x0 + 179, desc1->obj.bbox.x0);
ut_asserteq(menu->obj.bbox.y0 + 32, desc1->obj.bbox.y0);
- ut_asserteq(-4, prev1->obj.bbox.x0);
+ ut_asserteq(-84, prev1->obj.bbox.x0);
ut_asserteq(menu->obj.bbox.y0 + 32, prev1->obj.bbox.y0);
ut_asserteq(true, prev1->obj.flags & SCENEOF_HIDE);
@@ -690,11 +690,11 @@ static int expo_render_image(struct unit_test_state *uts)
ut_assertok(scene_arrange(scn));
ut_asserteq(0, scn->highlight_id);
ut_assertok(expo_render(exp));
- ut_asserteq(20366, video_compress_fb(uts, dev, false));
+ ut_asserteq(20373, video_compress_fb(uts, dev, false));
ut_assertok(scene_arrange(scn));
ut_assertok(expo_render(exp));
- ut_asserteq(20366, video_compress_fb(uts, dev, false));
+ ut_asserteq(20373, video_compress_fb(uts, dev, false));
scene_set_highlight_id(scn, OBJ_MENU);
ut_asserteq(OBJ_MENU, scn->highlight_id);
@@ -706,7 +706,7 @@ static int expo_render_image(struct unit_test_state *uts)
ut_assert(!(obj->flags & SCENEOF_HIDE));
ut_assertok(expo_render(exp));
- ut_asserteq(20366, video_compress_fb(uts, dev, false));
+ ut_asserteq(20373, video_compress_fb(uts, dev, false));
/* move down */
ut_assertok(expo_send_key(exp, BKEY_DOWN));
@@ -719,27 +719,27 @@ static int expo_render_image(struct unit_test_state *uts)
ut_asserteq(ITEM2, scene_menu_get_cur_item(scn, OBJ_MENU));
ut_assertok(scene_arrange(scn));
ut_assertok(expo_render(exp));
- ut_asserteq(19636, video_compress_fb(uts, dev, false));
+ ut_asserteq(19649, video_compress_fb(uts, dev, false));
ut_assertok(video_check_copy_fb(uts, dev));
- /* hide the text editor since the following tets don't need it */
+ /* hide the text editor since the following tests don't need it */
scene_obj_set_hide(scn, OBJ_TEXTED, true);
/* do some alignment checks */
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_CENTRE));
ut_assertok(expo_render(exp));
- ut_asserteq(16308, video_compress_fb(uts, dev, false));
+ ut_asserteq(16323, video_compress_fb(uts, dev, false));
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_RIGHT));
ut_assertok(expo_render(exp));
- ut_asserteq(16242, video_compress_fb(uts, dev, false));
+ ut_asserteq(16240, video_compress_fb(uts, dev, false));
ut_assertok(scene_obj_set_halign(scn, OBJ_TEXT3, SCENEOA_LEFT));
ut_assertok(scene_obj_set_valign(scn, OBJ_TEXT3, SCENEOA_CENTRE));
ut_assertok(expo_render(exp));
- ut_asserteq(18742, video_compress_fb(uts, dev, false));
+ ut_asserteq(18714, video_compress_fb(uts, dev, false));
ut_assertok(scene_obj_set_valign(scn, OBJ_TEXT3, SCENEOA_BOTTOM));
ut_assertok(expo_render(exp));
- ut_asserteq(18663, video_compress_fb(uts, dev, false));
+ ut_asserteq(18670, video_compress_fb(uts, dev, false));
/* make sure only the preview for the second item is shown */
obj = scene_obj_find(scn, ITEM1_PREVIEW, SCENEOBJT_NONE);
@@ -765,7 +765,7 @@ static int expo_render_image(struct unit_test_state *uts)
exp->show_highlight = true;
ut_assertok(scene_arrange(scn));
ut_assertok(expo_render(exp));
- ut_asserteq(18842, video_compress_fb(uts, dev, false));
+ ut_asserteq(18830, video_compress_fb(uts, dev, false));
/* now try in text mode */
expo_set_text_mode(exp, true);