ImGui: Remember position of movable overlays

Remember the position of various moveable overlays so users don't have
to move them every time they start a new game.

Window data is stored in Config/ImGui.ini.

Affected overlays:
- NetPlay Chat
- NetPlay Golf
- Movie statistics
- All of the overlays in the Graphics->Advanced tab
- Scissor Rectangles
This commit is contained in:
Dentomologist 2025-02-02 20:00:10 -08:00
parent 4582ad7649
commit 79ff4420d9
5 changed files with 9 additions and 5 deletions

View file

@ -107,6 +107,7 @@
#define DUALSHOCKUDPCLIENT_CONFIG "DSUClient.ini"
#define FREELOOK_CONFIG "FreeLook.ini"
#define RETROACHIEVEMENTS_CONFIG "RetroAchievements.ini"
#define IMGUI_CONFIG "ImGui.ini"
// Files in the directory returned by GetUserPath(D_LOGS_IDX)
#define MAIN_LOG "dolphin.log"

View file

@ -898,6 +898,7 @@ static void RebuildUserDirectories(unsigned int dir_index)
s_user_paths[F_FREELOOKCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + FREELOOK_CONFIG;
s_user_paths[F_RETROACHIEVEMENTSCONFIG_IDX] =
s_user_paths[D_CONFIG_IDX] + RETROACHIEVEMENTS_CONFIG;
s_user_paths[F_IMGUICONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + IMGUI_CONFIG;
s_user_paths[F_MAINLOG_IDX] = s_user_paths[D_LOGS_IDX] + MAIN_LOG;
s_user_paths[F_MEM1DUMP_IDX] = s_user_paths[D_DUMP_IDX] + MEM1_DUMP;
s_user_paths[F_MEM2DUMP_IDX] = s_user_paths[D_DUMP_IDX] + MEM2_DUMP;
@ -935,6 +936,7 @@ static void RebuildUserDirectories(unsigned int dir_index)
s_user_paths[F_FREELOOKCONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + FREELOOK_CONFIG;
s_user_paths[F_RETROACHIEVEMENTSCONFIG_IDX] =
s_user_paths[D_CONFIG_IDX] + RETROACHIEVEMENTS_CONFIG;
s_user_paths[F_IMGUICONFIG_IDX] = s_user_paths[D_CONFIG_IDX] + IMGUI_CONFIG;
break;
case D_CACHE_IDX:

View file

@ -96,6 +96,7 @@ enum
F_FREELOOKCONFIG_IDX,
F_GBABIOS_IDX,
F_RETROACHIEVEMENTSCONFIG_IDX,
F_IMGUICONFIG_IDX,
NUM_PATH_INDICES
};

View file

@ -4,6 +4,7 @@
#include "VideoCommon/OnScreenUI.h"
#include "Common/EnumMap.h"
#include "Common/FileUtil.h"
#include "Common/Profiler.h"
#include "Common/Timer.h"
@ -54,8 +55,7 @@ bool OnScreenUI::Initialize(u32 width, u32 height, float scale)
return false;
}
// Don't create an ini file. TODO: Do we want this in the future?
ImGui::GetIO().IniFilename = nullptr;
ImGui::GetIO().IniFilename = File::GetUserPath(F_IMGUICONFIG_IDX).data();
SetScale(scale);
PortableVertexDeclaration vdecl = {};

View file

@ -83,9 +83,9 @@ double PerformanceMetrics::GetLastSpeedDenominator() const
void PerformanceMetrics::DrawImGuiStats(const float backbuffer_scale)
{
const float bg_alpha = 0.7f;
const auto imgui_flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings |
ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoNav |
ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoFocusOnAppearing;
const auto imgui_flags = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoScrollbar |
ImGuiWindowFlags_NoNav | ImGuiWindowFlags_AlwaysAutoResize |
ImGuiWindowFlags_NoFocusOnAppearing;
const double fps = GetFPS();
const double vps = GetVPS();