[Bugfix] lua FS#13940 - FONT_UI using last selected font instead of the UI font

rockbox-gerrit-noreply--- via rockbox-cvs <[email protected]> Mon, 29 Jun 2026 01:09:21 -0400
Newsgroups gmane.comp.systems.archos.rockbox.cvs
Message-ID <[email protected]>
commit b99b2e98df4346182582ad05f00fa15e7c44b54b
Author: William Wilgus <[email protected]>
Date:   Mon Jun 29 01:06:34 2026 -0400

    [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

diff --git a/apps/plugins/lua/rockaux.c b/apps/plugins/lua/rockaux.c
index 86abf5c456..725e9c1d14 100644
--- a/apps/plugins/lua/rockaux.c
+++ b/apps/plugins/lua/rockaux.c
@@ -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;
diff --git a/apps/plugins/lua/rocklib_img.c b/apps/plugins/lua/rocklib_img.c
index a47e319a85..7cc9741a42 100644
--- a/apps/plugins/lua/rocklib_img.c
+++ b/apps/plugins/lua/rocklib_img.c
@@ -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;
 }
-- 
rockbox-cvs mailing list
[email protected]
https://lists.haxx.se/mailman/listinfo/rockbox-cvs