gui: fix "lock screens" making UI viewport disappear

Themes like Adwaitapod, Themify, or FreshOS have
custom "lock screens" that are drawn on top of the
UI viewport.

Request a full skin update when unlocked, so you don't
have to press a button to make the hidden UI viewport
appear again.

Change-Id: Idf5023b4e12f7aea1cd7a2e9d9ab2f754387dc48
This commit is contained in:
Christian Soffke 2026-05-01 19:28:12 +02:00
parent 83e55164f4
commit 88d4903d10
4 changed files with 8 additions and 4 deletions

View file

@ -939,7 +939,7 @@ static inline void do_softlock(action_last_t *last, action_cur_t *cur)
if (notify_user)
{
#ifndef BOOTLOADER
skin_request_update_locked();
skin_request_update_locked(last->keys_locked);
#endif
action_handle_backlight(true, false);

View file

@ -344,12 +344,16 @@ void skin_request_full_update(enum skinnable_screens skin)
/* Request skin update for lock state change */
void skin_request_update_locked(void)
void skin_request_update_locked(bool locked)
{
if (get_current_activity() == ACTIVITY_WPS)
return;
sb_skin_force_next_update();
/* fix themes that draw on top of the UI viewport when locked */
if (!locked)
skin_request_full_update(CUSTOM_STATUSBAR);
#ifdef HAS_BUTTON_HOLD
button_queue_post(BUTTON_NONE, 0);
#endif

View file

@ -82,7 +82,7 @@ void skin_unload_all(void);
bool skin_do_full_update(enum skinnable_screens skin, enum screen_type screen);
void skin_request_full_update(enum skinnable_screens skin);
void skin_request_update_locked(void);
void skin_request_update_locked(bool locked);
bool dbg_skin_engine(void);

View file

@ -889,7 +889,7 @@ void backlight_set_timeout_plugged(int value)
void backlight_hold_changed(bool hold_button)
{
#ifndef BOOTLOADER
skin_request_update_locked();
skin_request_update_locked(hold_button);
#endif
if (!hold_button || (backlight_on_button_hold > 0))
{