From ce08a62548d7336fea89ac4e017b558550dc8ac0 Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 5 Nov 2022 18:17:54 -0500 Subject: [PATCH] GUI: work around Android backspace issue --- src/gui/editControls.cpp | 8 ++++++++ src/gui/gui.cpp | 12 ++++++++++++ src/gui/gui.h | 2 +- src/main.cpp | 7 +++++++ 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/gui/editControls.cpp b/src/gui/editControls.cpp index e3e348c14..86a7325ec 100644 --- a/src/gui/editControls.cpp +++ b/src/gui/editControls.cpp @@ -244,6 +244,14 @@ void FurnaceGUI::drawMobileControls() { mobileMenuOpen=false; } ImGui::SameLine(); + if (ImGui::Button("Log")) { + logOpen=!logOpen; + } + ImGui::SameLine(); + if (ImGui::Button("Debug")) { + debugOpen=!debugOpen; + } + ImGui::SameLine(); if (ImGui::Button("About")) { mobileMenuOpen=false; mobileMenuPos=0.0f; diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 62bd1bdc1..a0385d97f 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -2977,6 +2977,10 @@ bool FurnaceGUI::loop() { } eventTimeBegin=SDL_GetPerformanceCounter(); bool updateWindow=false; + if (injectBackUp) { + ImGui::GetIO().AddKeyEvent(ImGuiKey_Backspace,false); + injectBackUp=false; + } while (SDL_PollEvent(&ev)) { WAKE_UP; ImGui_ImplSDL2_ProcessEvent(&ev); @@ -3039,6 +3043,9 @@ bool FurnaceGUI::loop() { if (!ImGui::GetIO().WantCaptureKeyboard) { keyDown(ev); } +#ifdef IS_MOBILE + injectBackUp=true; +#endif break; case SDL_KEYUP: // for now @@ -3738,6 +3745,10 @@ bool FurnaceGUI::loop() { drawPiano(); break; } + + globalWinFlags=0; + drawDebug(); + drawLog(); } else { globalWinFlags=0; ImGui::DockSpaceOverViewport(NULL,lockLayout?(ImGuiDockNodeFlags_NoWindowMenuButton|ImGuiDockNodeFlags_NoMove|ImGuiDockNodeFlags_NoResize|ImGuiDockNodeFlags_NoCloseButton|ImGuiDockNodeFlags_NoDocking|ImGuiDockNodeFlags_NoDockingSplitMe|ImGuiDockNodeFlags_NoDockingSplitOther):0); @@ -5441,6 +5452,7 @@ FurnaceGUI::FurnaceGUI(): vgmExportPatternHints(false), vgmExportDirectStream(false), portrait(false), + injectBackUp(false), mobileMenuOpen(false), wantCaptureKeyboard(false), oldWantCaptureKeyboard(false), diff --git a/src/gui/gui.h b/src/gui/gui.h index 9afafc0ea..180288c59 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1036,7 +1036,7 @@ class FurnaceGUI { bool quit, warnQuit, willCommit, edit, modified, displayError, displayExporting, vgmExportLoop, zsmExportLoop, vgmExportPatternHints; bool vgmExportDirectStream; - bool portrait, mobileMenuOpen; + bool portrait, injectBackUp, mobileMenuOpen; bool wantCaptureKeyboard, oldWantCaptureKeyboard, displayMacroMenu; bool displayNew, fullScreen, preserveChanPos, wantScrollList, noteInputPoly; bool displayPendingIns, pendingInsSingle, displayPendingRawSample, snesFilterHex; diff --git a/src/main.cpp b/src/main.cpp index 8c3890f16..5c668a9eb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -317,6 +317,13 @@ void reportError(String what) { logE("%s",what); MessageBox(NULL,what.c_str(),"Furnace",MB_OK|MB_ICONERROR); } +#elif defined(ANDROID) +void reportError(String what) { + logE("%s",what); +#ifdef HAVE_SDL2 + SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR,"Error",what.c_str(),NULL); +#endif +} #else void reportError(String what) { logE("%s",what);