From 1de29dd76d9b06461d78361a17f19105f2595849 Mon Sep 17 00:00:00 2001 From: SimoZ64 Date: Thu, 22 May 2025 23:39:05 +0200 Subject: [PATCH] Next try to make the settings modal work --- src/frontend/ImGuiImpl/PopupWindow.hpp | 6 +++++- src/frontend/ImGuiImpl/PushButton.hpp | 2 +- src/frontend/KaizenGui.cpp | 1 + src/frontend/SettingsWindow.cpp | 4 ++-- src/frontend/SettingsWindow.hpp | 2 +- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/frontend/ImGuiImpl/PopupWindow.hpp b/src/frontend/ImGuiImpl/PopupWindow.hpp index aae98348..837fa276 100644 --- a/src/frontend/ImGuiImpl/PopupWindow.hpp +++ b/src/frontend/ImGuiImpl/PopupWindow.hpp @@ -2,6 +2,7 @@ #include #include #include +#include namespace gui { struct PopupWindow { @@ -15,7 +16,10 @@ struct PopupWindow { bool render() { if(!opened) return false; - ImGui::OpenPopup(title.c_str()); + + if (!ImGui::IsPopupOpen(title.c_str())) + ImGui::OpenPopup(title.c_str()); + ImVec2 center = ImGui::GetMainViewport()->GetCenter(); ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); diff --git a/src/frontend/ImGuiImpl/PushButton.hpp b/src/frontend/ImGuiImpl/PushButton.hpp index f33aa5b5..f25d7015 100644 --- a/src/frontend/ImGuiImpl/PushButton.hpp +++ b/src/frontend/ImGuiImpl/PushButton.hpp @@ -8,7 +8,7 @@ struct PushButton { bool render() { if(name != "") { - ImGui::Text(name.c_str()); + ImGui::Text("%s", name.c_str()); ImGui::SameLine(); } diff --git a/src/frontend/KaizenGui.cpp b/src/frontend/KaizenGui.cpp index 2dce11d0..c4e33257 100644 --- a/src/frontend/KaizenGui.cpp +++ b/src/frontend/KaizenGui.cpp @@ -48,6 +48,7 @@ KaizenGui::KaizenGui() noexcept : window("Kaizen", 1280, 720), core(std::make_sh actionStop, actionReset, {"Settings", [&]() { + settingsWindow.popup.setOpened(true); settingsWindow.render(); }}, }}); diff --git a/src/frontend/SettingsWindow.cpp b/src/frontend/SettingsWindow.cpp index 16360081..3cb99949 100644 --- a/src/frontend/SettingsWindow.cpp +++ b/src/frontend/SettingsWindow.cpp @@ -52,7 +52,7 @@ SettingsWindow::SettingsWindow() : settings{JSONOpenOrCreate("resources/settings apply.setEnabled(false); - canvas.setFunc([&]() { + popup.setFunc([&]() { tabs.render(); if(apply.render()) { @@ -69,7 +69,7 @@ SettingsWindow::SettingsWindow() : settings{JSONOpenOrCreate("resources/settings } bool SettingsWindow::render() { - if(canvas.render()) + if(popup.render()) return true; return false; diff --git a/src/frontend/SettingsWindow.hpp b/src/frontend/SettingsWindow.hpp index a962f314..f4736fe1 100644 --- a/src/frontend/SettingsWindow.hpp +++ b/src/frontend/SettingsWindow.hpp @@ -9,12 +9,12 @@ class SettingsWindow final { gui::PushButton cancel{"Cancel"}, apply{"Apply", "", false}, savesFolder{"Open", "Save path: {}"}; - gui::PopupWindow canvas{"Settings"}; nlohmann::json settings; CPUSettings cpuSettings{settings}; AudioSettings audioSettings{settings}; InputSettings inputSettings{settings}; public: + gui::PopupWindow popup{"Settings"}; bool render(); SettingsWindow(); [[nodiscard]] float getVolumeL() const { return audioSettings.volumeL.getValue() / 100.f; }