From 22ca5fe0dfe4246c01584143819c26afa07310ad Mon Sep 17 00:00:00 2001 From: Yuval Tassa Date: Thu, 30 Apr 2026 06:20:38 -0700 Subject: [PATCH] studio: improve behavior of help window PiperOrigin-RevId: 908132295 Change-Id: Iac0aead82a575dffbe35e3be8ba06af13986d1a2 --- src/experimental/platform/ux/gui.cc | 5 +++++ src/experimental/studio/app.cc | 31 ++++++++++++++++++++--------- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/experimental/platform/ux/gui.cc b/src/experimental/platform/ux/gui.cc index b9fa91d2..b952688e 100644 --- a/src/experimental/platform/ux/gui.cc +++ b/src/experimental/platform/ux/gui.cc @@ -347,6 +347,11 @@ ImVec4 ConfigureDockingLayout() { ImGui::End(); } + ImGuiDockNode* central = ImGui::DockBuilderGetCentralNode(root); + if (central) { + return ImVec4(central->Pos.x, central->Pos.y, + central->Size.x, central->Size.y); + } const int settings_width = dockspace_size.x * kOptionsRelWidth; const int inspector_width = dockspace_size.x * kInspectorRelWidth; const float workspace_x = dockspace_pos.x + settings_width; diff --git a/src/experimental/studio/app.cc b/src/experimental/studio/app.cc index 576462a5..f3cf2f62 100644 --- a/src/experimental/studio/app.cc +++ b/src/experimental/studio/app.cc @@ -926,12 +926,15 @@ void App::BuildGui() { if (tmp_.help) { platform::ScopedStyle style; - style.Var(ImGuiStyleVar_Alpha, 0.6f); + style.Var(ImGuiStyleVar_Alpha, 0.8f); ImGui::SetNextWindowPos(ImVec2(workspace_rect.x, workspace_rect.y), - ImGuiCond_FirstUseEver); - ImGui::SetNextWindowSize(ImVec2(400, 0), ImGuiCond_FirstUseEver); - if (ImGui::Begin("Help", &tmp_.help)) { + ImGuiCond_Appearing); + ImGui::SetNextWindowSize(ImVec2(0, 0), ImGuiCond_Appearing); + if (ImGui::Begin("Help", &tmp_.help, + ImGuiWindowFlags_AlwaysAutoResize)) { + ImGui::PushStyleVar(ImGuiStyleVar_ItemSpacing, ImVec2(2.0f, 5.0f)); HelpGui(); + ImGui::PopStyleVar(); } ImGui::End(); } @@ -1297,11 +1300,18 @@ void App::SpecEditorGui() { } void App::HelpGui() { + const float pad = ImGui::GetStyle().ItemSpacing.x; + const float indent = pad * 2; + const float col0 = ImGui::CalcTextSize("Toggle Visc Pause").x + pad; + const float col1 = ImGui::CalcTextSize("Ctrl+Spc").x + pad + indent; + const float col2 = ImGui::CalcTextSize("Center of Mass").x + pad + indent; + const float col3 = ImGui::CalcTextSize("M").x + pad + indent; + ImGui::Dummy(ImVec2(col0 + col1 + col2 + col3, 0)); ImGui::Columns(4); - ImGui::SetColumnWidth(0, ImGui::GetWindowWidth() * 0.35f); - ImGui::SetColumnWidth(1, ImGui::GetWindowWidth() * 0.15f); - ImGui::SetColumnWidth(2, ImGui::GetWindowWidth() * 0.4f); - ImGui::SetColumnWidth(3, ImGui::GetWindowWidth() * 0.1f); + ImGui::SetColumnWidth(0, col0); + ImGui::SetColumnWidth(1, col1); + ImGui::SetColumnWidth(2, col2); + ImGui::SetColumnWidth(3, col3); ImGui::Text("Help"); ImGui::Text("Stats"); @@ -1329,6 +1339,7 @@ void App::HelpGui() { ImGui::Text("Site Group"); ImGui::NextColumn(); + ImGui::Indent(indent); ImGui::Text("F1"); ImGui::Text("F2"); ImGui::Text("F6"); @@ -1342,7 +1353,7 @@ void App::HelpGui() { ImGui::Text("Bksp"); ImGui::Text("Tab"); ImGui::Text("Sh+Tab"); - ImGui::Text("="); + ImGui::Text("+"); ImGui::Text("-"); ImGui::Text("["); ImGui::Text("]"); @@ -1355,6 +1366,7 @@ void App::HelpGui() { ImGui::Text("Sh+0-5"); ImGui::NextColumn(); + ImGui::Indent(indent); ImGui::Text("Activation"); ImGui::Text("Auto Connect"); ImGui::Text("Body Tree"); @@ -1381,6 +1393,7 @@ void App::HelpGui() { ImGui::Text("Transparent"); ImGui::NextColumn(); + ImGui::Indent(indent); ImGui::Text(","); ImGui::Text("K"); ImGui::Text("`");