#include "App.hpp" #include #include #include #include #include #include auto App::tick() -> void { static std::pmr::string text_input_data; m_ime.bound_text = &text_input_data; m_ime.bound_id = 1; process_pending_text_input(); if (!m_visible || m_gl.edpy == EGL_NO_DISPLAY || m_gl.esurf == EGL_NO_SURFACE) return; glViewport(0, 0, m_win_w, m_win_h); if (m_kbd.is_sym_pressed(XKB_KEY_Escape)) { set_visible(!visible()); if (m_kbd.ctrl() && m_kbd.shift()) { m_running = false; } } BeginDrawing(); ClearBackground(theme().window.background); { assert(m_gui); u32 rune { 0 }; if (!m_kbd.typing.empty()) { rune = m_kbd.typing.back(); m_kbd.typing.clear(); } ImGuiGuard gui_scope(m_gui, rune, m_kbd.ctrl(), m_kbd.shift()); Rectangle const input_rect { 0.0f, 0.0f, static_cast(GetScreenWidth()), static_cast(GetScreenHeight()), }; auto result = m_gui->text_input(1, text_input_data, input_rect); if (result.test(1)) m_ime.surrounding_dirty = true; update_text_input_state(text_input_data, 1, input_rect); } EndDrawing(); eglSwapBuffers(m_gl.edpy, m_gl.esurf); m_kbd.typing.clear(); m_kbd.clear_transients(); }