mirror of
https://github.com/Rockbox/rockbox.git
synced 2026-07-10 13:29:52 -04:00
[Bugfix] lua FS#13940 - FONT_UI using last selected font instead of the UI font
FONT_UI is a placeholder when it gets assigned it isn't resolved immediately when its time to resolve the font it is processed with font_get(int font) first it sets it to the last slot and then decrements till it gets a valid font Change-Id: I3c203d58ed2d813d206f5b435e6b55ed196cf213
This commit is contained in:
parent
d9b1819e0b
commit
b99b2e98df
2 changed files with 24 additions and 2 deletions
|
|
@ -71,6 +71,12 @@ int splash_scroller(int timeout, const char* str)
|
|||
struct viewport *last_vp = rb->lcd_set_viewport(&vp);
|
||||
int fontnum = vp.font;
|
||||
|
||||
if (fontnum == FONT_UI)
|
||||
{
|
||||
fontnum = rb->global_status->font_id[SCREEN_MAIN];
|
||||
if (fontnum == FONT_SYSFIXED)
|
||||
fontnum = FONT_UI;
|
||||
}
|
||||
font_getstringsize("W", &ch_w, &ch_h, fontnum);
|
||||
|
||||
const int max_w = LCD_WIDTH;
|
||||
|
|
|
|||
|
|
@ -1575,6 +1575,14 @@ static inline struct viewport* opt_viewport(lua_State *L,
|
|||
vp->height = check_tablevalue(L, "height", narg);
|
||||
}
|
||||
vp->font = check_tablevalue_def(L, "font", narg, FONT_UI);
|
||||
|
||||
if (vp->font == FONT_UI)
|
||||
{
|
||||
vp->font = rb->global_status->font_id[SCREEN_MAIN];
|
||||
if (vp->font == FONT_SYSFIXED)
|
||||
vp->font = FONT_UI;
|
||||
}
|
||||
|
||||
vp->drawmode = check_tablevalue_def(L, "drawmode", narg, DRMODE_SOLID);
|
||||
|
||||
#if LCD_DEPTH == 2
|
||||
|
|
@ -1618,9 +1626,11 @@ RB_WRAP(font_getstringsize)
|
|||
int w, h, result;
|
||||
|
||||
if (fontnumber == FONT_UI)
|
||||
{
|
||||
fontnumber = rb->global_status->font_id[SCREEN_MAIN];
|
||||
else if (fontnumber < 0)
|
||||
fontnumber = FONT_SYSFIXED;
|
||||
if (fontnumber == FONT_SYSFIXED)
|
||||
fontnumber = FONT_UI;
|
||||
}
|
||||
|
||||
if lua_isnoneornil(L, 2)
|
||||
result = RB_SCREENS(L, 3, getstringsize, str, &w, &h);
|
||||
|
|
@ -1648,6 +1658,12 @@ RB_WRAP(lcd_framebuffer)
|
|||
RB_WRAP(lcd_setfont)
|
||||
{
|
||||
int font = (int) luaL_checkint(L, 1);
|
||||
if (font == FONT_UI)
|
||||
{
|
||||
font = rb->global_status->font_id[SCREEN_MAIN];
|
||||
if (font == FONT_SYSFIXED)
|
||||
font = FONT_UI;
|
||||
}
|
||||
RB_SCREENS(L, 2, setfont, font);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue