diff --git a/src/LWidgets.c b/src/LWidgets.c index 061aa6449..ff0656fb7 100644 --- a/src/LWidgets.c +++ b/src/LWidgets.c @@ -471,6 +471,7 @@ static void LInput_KeyChar(void* widget, char c) { static void LInput_TextChanged(void* widget, const cc_string* str) { struct LInput* w = (struct LInput*)widget; LInput_SetText(w, str); + if (w->TextChanged) w->TextChanged(w); } static cc_bool LInput_DefaultInputFilter(char c) { diff --git a/src/Launcher.c b/src/Launcher.c index 43cec4862..1cf0033e1 100644 --- a/src/Launcher.c +++ b/src/Launcher.c @@ -37,9 +37,13 @@ static cc_bool useBitmappedFont, hasBitmappedFont; static struct Bitmap dirtBmp, stoneBmp; #define TILESIZE 48 -void Launcher_SetScreen(struct LScreen* screen) { +static void CloseActiveScreen(void) { Window_CloseKeyboard(); if (activeScreen) activeScreen->Free(activeScreen); +} + +void Launcher_SetScreen(struct LScreen* screen) { + CloseActiveScreen(); activeScreen = screen; if (!screen->numWidgets) screen->Init(screen); @@ -265,7 +269,7 @@ static void Launcher_Free(void) { Font_Free(&Launcher_HintFont); hasBitmappedFont = false; - activeScreen->Free(activeScreen); + CloseActiveScreen(); activeScreen = NULL; Window_FreeFramebuffer(&Launcher_Framebuffer); }