From adf22e69c1769491fff2608d98abc4a662848c7f Mon Sep 17 00:00:00 2001 From: MelonSpeedruns Date: Sun, 5 Apr 2026 14:30:48 -0400 Subject: [PATCH] Resize ImGui windows automatically + Move "Tools" menu after "Enhancements" (#232) * Resize ImGui windows automatically + Move "Tools" menu after "Enhancements" * Oops, forgot one of those * Always resize Tools menu * Moved hotkeys to allow fullscreen & reset to be done without the menu open --- src/dusk/imgui/ImGuiCameraOverlay.cpp | 2 -- src/dusk/imgui/ImGuiConsole.cpp | 15 ++++++++++++++- src/dusk/imgui/ImGuiConsole.hpp | 5 ++++- src/dusk/imgui/ImGuiMapLoader.cpp | 2 -- src/dusk/imgui/ImGuiMenuGame.cpp | 11 ----------- src/dusk/imgui/ImGuiMenuTools.cpp | 4 ++-- src/dusk/imgui/ImGuiSaveEditor.cpp | 4 ++-- 7 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/dusk/imgui/ImGuiCameraOverlay.cpp b/src/dusk/imgui/ImGuiCameraOverlay.cpp index 9d3ef60142..599af30f37 100644 --- a/src/dusk/imgui/ImGuiCameraOverlay.cpp +++ b/src/dusk/imgui/ImGuiCameraOverlay.cpp @@ -26,8 +26,6 @@ namespace dusk { } ImGui::SetNextWindowBgAlpha(0.65f); - ImGui::SetNextWindowSizeConstraints(ImVec2(300.f * ImGuiScale(), 0), - ImVec2(FLT_MAX, FLT_MAX)); if (!ImGui::Begin("Camera Debug", nullptr, windowFlags)) { ImGui::End(); diff --git a/src/dusk/imgui/ImGuiConsole.cpp b/src/dusk/imgui/ImGuiConsole.cpp index c3d84b375e..5ccfb1d68f 100644 --- a/src/dusk/imgui/ImGuiConsole.cpp +++ b/src/dusk/imgui/ImGuiConsole.cpp @@ -182,6 +182,17 @@ namespace dusk { m_isLaunchInitialized = true; } + if ((ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)) && + ImGui::IsKeyPressed(ImGuiKey_R)) + { + JUTGamePad::C3ButtonReset::sResetSwitchPushing = true; + } + + if (ImGui::IsKeyPressed(ImGuiKey_F11)) { + getSettings().video.enableFullscreen = !getSettings().video.enableFullscreen; + VISetWindowFullscreen(getSettings().video.enableFullscreen); + } + if (CheckMenuViewToggle(ImGuiKey_F1, m_isHidden)) { ShowToasts(); return; @@ -192,9 +203,11 @@ namespace dusk { if (ImGui::BeginMainMenuBar()) { m_menuGame.draw(); - m_menuTools.draw(); m_menuEnhancements.draw(); + // Keep always last + m_menuTools.draw(); + ImGui::SetCursorPosX(ImGui::GetWindowWidth() - 80.0f * ImGuiScale()); ImGuiIO& io = ImGui::GetIO(); ImGuiStringViewText(fmt::format(FMT_STRING("FPS: {:.2f}\n"), io.Framerate)); diff --git a/src/dusk/imgui/ImGuiConsole.hpp b/src/dusk/imgui/ImGuiConsole.hpp index a7c433be4d..27032ed39b 100644 --- a/src/dusk/imgui/ImGuiConsole.hpp +++ b/src/dusk/imgui/ImGuiConsole.hpp @@ -31,10 +31,13 @@ private: bool m_isHidden = true; bool m_isLaunchInitialized = false; std::deque m_toasts; + ImGuiMenuGame m_menuGame; - ImGuiMenuTools m_menuTools; ImGuiMenuEnhancements m_menuEnhancements; + // Keep always last + ImGuiMenuTools m_menuTools; + void ShowToasts(); void ShowPipelineProgress(); }; diff --git a/src/dusk/imgui/ImGuiMapLoader.cpp b/src/dusk/imgui/ImGuiMapLoader.cpp index 4baf48bdab..428d458903 100644 --- a/src/dusk/imgui/ImGuiMapLoader.cpp +++ b/src/dusk/imgui/ImGuiMapLoader.cpp @@ -17,8 +17,6 @@ namespace dusk { ImGuiWindowFlags_NoFocusOnAppearing | ImGuiWindowFlags_NoNav; ImGui::SetNextWindowBgAlpha(0.65f); - ImGui::SetNextWindowSizeConstraints(ImVec2(300.f * ImGuiScale(), 0), - ImVec2(FLT_MAX, FLT_MAX)); if (!ImGui::Begin("Map Loader", &m_showMapLoader, windowFlags)) { ImGui::End(); diff --git a/src/dusk/imgui/ImGuiMenuGame.cpp b/src/dusk/imgui/ImGuiMenuGame.cpp index 7bdea47862..961c9e8381 100644 --- a/src/dusk/imgui/ImGuiMenuGame.cpp +++ b/src/dusk/imgui/ImGuiMenuGame.cpp @@ -73,15 +73,6 @@ namespace dusk { windowInputViewer(); windowControllerConfig(); - - if ((ImGui::IsKeyDown(ImGuiKey_LeftCtrl) || ImGui::IsKeyDown(ImGuiKey_RightCtrl)) && ImGui::IsKeyPressed(ImGuiKey_R)) { - JUTGamePad::C3ButtonReset::sResetSwitchPushing = true; - } - - if (ImGui::IsKeyPressed(ImGuiKey_F11)) { - getSettings().video.enableFullscreen = !getSettings().video.enableFullscreen; - VISetWindowFullscreen(getSettings().video.enableFullscreen); - } } static void drawVirtualStick(const char* id, const ImVec2& stick) { @@ -147,8 +138,6 @@ namespace dusk { ImGuiWindowFlags_AlwaysAutoResize; ImGui::SetNextWindowBgAlpha(0.65f); - ImGui::SetNextWindowSizeConstraints(ImVec2(850 * scale, 400 * scale), - ImVec2(850 * scale, 400 * scale)); if (!ImGui::Begin("Controller Config", &m_showControllerConfig, windowFlags)) { ImGui::End(); diff --git a/src/dusk/imgui/ImGuiMenuTools.cpp b/src/dusk/imgui/ImGuiMenuTools.cpp index 20e92768a6..c0494b1e5b 100644 --- a/src/dusk/imgui/ImGuiMenuTools.cpp +++ b/src/dusk/imgui/ImGuiMenuTools.cpp @@ -146,10 +146,10 @@ namespace dusk { } ImGuiIO& io = ImGui::GetIO(); - ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoResize; + ImGuiWindowFlags windowFlags = + ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize; ImGui::SetNextWindowBgAlpha(0.65f); - ImGui::SetNextWindowSizeConstraints(ImVec2(300, 200), ImVec2(300, 200)); if (ImGui::Begin("Player Info", &m_showPlayerInfo, windowFlags)) { daAlink_c* player = (daAlink_c*)dComIfGp_getPlayer(0); diff --git a/src/dusk/imgui/ImGuiSaveEditor.cpp b/src/dusk/imgui/ImGuiSaveEditor.cpp index a9cca636f8..9748893571 100644 --- a/src/dusk/imgui/ImGuiSaveEditor.cpp +++ b/src/dusk/imgui/ImGuiSaveEditor.cpp @@ -284,10 +284,10 @@ namespace dusk { void ImGuiSaveEditor::draw(bool& open) { ImGuiIO& io = ImGui::GetIO(); - ImGuiWindowFlags windowFlags = ImGuiWindowFlags_NoResize; + ImGuiWindowFlags windowFlags = + ImGuiWindowFlags_NoResize | ImGuiWindowFlags_AlwaysAutoResize; ImGui::SetNextWindowBgAlpha(0.65f); - ImGui::SetNextWindowSizeConstraints(ImVec2(600, 700), ImVec2(600, 700)); if (ImGui::Begin("Save Editor", &open, windowFlags)) { if (ImGui::BeginTabBar("SaveEditorTabBar", ImGuiTabBarFlags_NoCloseWithMiddleMouseButton)) {