Extend app input planning to UI state

This commit is contained in:
2026-06-05 06:44:57 +02:00
parent b825d920d2
commit 32c95b224f
8 changed files with 196 additions and 19 deletions

View File

@@ -661,15 +661,34 @@ bool App::key_char(char key)
void App::toggle_ui()
{
auto m = layout[main_id]->m_children[1];
ui_visible = !ui_visible;
for (int i = 1; i < m->m_children.size(); i++)
m->m_children[i]->m_display = ui_visible;
auto* main = layout[main_id];
const std::size_t main_child_count = main ? main->m_children.size() : 0U;
auto* panel_container = main_child_count > 1U ? main->m_children[1].get() : nullptr;
const auto plan = pp::app::plan_app_ui_visibility_toggle(
ui_visible,
main != nullptr,
main_child_count,
panel_container ? panel_container->m_children.size() : 0U);
if (!plan) {
LOG("UI toggle plan failed: %s", plan.status().message);
return;
}
ui_visible = plan.value().next_ui_visible;
if (!panel_container)
return;
for (std::size_t i = plan.value().first_panel_child_index;
i < plan.value().panel_child_count;
++i) {
panel_container->m_children[i]->m_display = ui_visible;
}
}
void App::set_stylus()
{
has_stylus = true;
if (canvas)
const auto plan = pp::app::plan_app_stylus_attach(canvas != nullptr);
has_stylus = plan.set_has_stylus;
if (plan.enable_canvas_touch_lock && canvas)
canvas->m_canvas->m_touch_lock = true;
}