diff --git a/ion/src/simulator/shared/layout.cpp b/ion/src/simulator/shared/layout.cpp index 8d66a1ea4..4de6e6e43 100644 --- a/ion/src/simulator/shared/layout.cpp +++ b/ion/src/simulator/shared/layout.cpp @@ -282,6 +282,10 @@ void drawHighlightedKey(SDL_Renderer * renderer) { getKeyRectangle(sHighlightedKeyIndex, &rect); SDL_RenderCopy(renderer, framebufferTexture, nullptr, &rect); SDL_DestroyTexture(framebufferTexture); + + // Reset highlighted key + sHighlightedKeyIndex = -1; + Main::setNeedsRefresh(); } static SDL_Texture * sBackgroundTexture = nullptr; diff --git a/ion/src/simulator/shared/main_sdl.cpp b/ion/src/simulator/shared/main_sdl.cpp index 0be773c18..c4085c17c 100644 --- a/ion/src/simulator/shared/main_sdl.cpp +++ b/ion/src/simulator/shared/main_sdl.cpp @@ -129,6 +129,8 @@ void refresh() { if (!sNeedsRefresh) { return; } + sNeedsRefresh = false; + #if EPSILON_SDL_SCREEN_ONLY Display::draw(sRenderer, &sScreenRect); #else @@ -137,11 +139,11 @@ void refresh() { SDL_SetRenderDrawColor(sRenderer, 194, 194, 194, 255); SDL_RenderClear(sRenderer); + // Can change sNeedsRefresh state if a key is highlighted and needs to be reset Layout::draw(sRenderer); Display::draw(sRenderer, &screenRect); #endif SDL_RenderPresent(sRenderer); - sNeedsRefresh = false; IonSimulatorCallbackDidRefresh(); }