fix(color): full screen widget may not exit cleanly after calling lcd.exitFullScreen() (#5544)
This commit is contained in:
@@ -75,6 +75,7 @@ class Widget : public ButtonBase
|
||||
|
||||
// Set/unset fullscreen mode
|
||||
void setFullscreen(bool enable);
|
||||
void closeFullscreen() { closeFS = true; }
|
||||
|
||||
// Called when the widget options have changed
|
||||
virtual void update();
|
||||
@@ -95,6 +96,7 @@ class Widget : public ButtonBase
|
||||
PersistentData* persistentData;
|
||||
bool fullscreen = false;
|
||||
bool fsAllowed = true;
|
||||
bool closeFS = false;
|
||||
lv_obj_t* focusBorder = nullptr;
|
||||
lv_style_t borderStyle;
|
||||
lv_point_t borderPts[5];
|
||||
|
||||
@@ -1410,11 +1410,8 @@ Exit full screen widget mode.
|
||||
*/
|
||||
static int luaLcdExitFullScreen(lua_State *L)
|
||||
{
|
||||
if (runningFS) {
|
||||
auto rfs = runningFS;
|
||||
runningFS = nullptr;
|
||||
rfs->setFullscreen(false);
|
||||
}
|
||||
if (runningFS)
|
||||
runningFS->closeFullscreen();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -260,6 +260,11 @@ void LuaWidget::checkEvents()
|
||||
{
|
||||
Widget::checkEvents();
|
||||
|
||||
if (closeFS) {
|
||||
closeFS = false;
|
||||
setFullscreen(false);
|
||||
}
|
||||
|
||||
// Call update once after widget first created
|
||||
if (!created) {
|
||||
created = true;
|
||||
|
||||
Reference in New Issue
Block a user