diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index e3ddc5a3a1..0562a50810 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -365,4 +365,6 @@ Force Scoped Storage Expand To Cutout Area Expands the display area to include the cutout (or notch) area. + Increase Safe Zone + Increase the margin of on-screen messages, prevents them being cut off on phones with rounded corners. diff --git a/android/app/src/main/res/xml/display_preferences.xml b/android/app/src/main/res/xml/display_preferences.xml index ea9293892c..327b20c31c 100644 --- a/android/app/src/main/res/xml/display_preferences.xml +++ b/android/app/src/main/res/xml/display_preferences.xml @@ -126,5 +126,11 @@ app:defaultValue="false" app:summary="@string/settings_summary_osd_show_inputs" app:iconSpaceReserved="false" /> + diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 90c9620fdb..abe12a55eb 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -236,6 +236,7 @@ void Settings::Load(SettingsInterface& si) display_show_vps = si.GetBoolValue("Display", "ShowVPS", false); display_show_speed = si.GetBoolValue("Display", "ShowSpeed", false); display_show_resolution = si.GetBoolValue("Display", "ShowResolution", false); + display_increase_safe_zone = si.GetBoolValue("Display", "IncreaseSafeZone", false); display_all_frames = si.GetBoolValue("Display", "DisplayAllFrames", false); video_sync_enabled = si.GetBoolValue("Display", "VSync", DEFAULT_VSYNC_VALUE); display_post_process_chain = si.GetStringValue("Display", "PostProcessChain", ""); @@ -409,6 +410,7 @@ void Settings::Save(SettingsInterface& si) const si.SetBoolValue("Display", "ShowVPS", display_show_vps); si.SetBoolValue("Display", "ShowSpeed", display_show_speed); si.SetBoolValue("Display", "ShowResolution", display_show_resolution); + si.SetBoolValue("Display", "IncreaseSafeZone", display_increase_safe_zone); si.SetBoolValue("Display", "DisplayAllFrames", display_all_frames); si.SetBoolValue("Display", "VSync", video_sync_enabled); if (display_post_process_chain.empty()) diff --git a/src/core/settings.h b/src/core/settings.h index 2ecbe51fd1..3f23f63c38 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -145,6 +145,7 @@ struct Settings bool display_show_vps = false; bool display_show_speed = false; bool display_show_resolution = false; + bool display_increase_safe_zone = false; bool display_all_frames = false; bool video_sync_enabled = DEFAULT_VSYNC_VALUE; float display_max_fps = DEFAULT_DISPLAY_MAX_FPS; diff --git a/src/frontend-common/common_host_interface.cpp b/src/frontend-common/common_host_interface.cpp index 744b2d4fba..ccc5d488ed 100644 --- a/src/frontend-common/common_host_interface.cpp +++ b/src/frontend-common/common_host_interface.cpp @@ -1067,7 +1067,7 @@ void CommonHostInterface::DrawImGuiWindows() void CommonHostInterface::DrawFPSWindow() { - if (!(g_settings.display_show_fps | g_settings.display_show_vps | g_settings.display_show_speed | + if (!(g_settings.display_show_fps || g_settings.display_show_vps || g_settings.display_show_speed || g_settings.display_show_resolution)) { return; @@ -1075,8 +1075,8 @@ void CommonHostInterface::DrawFPSWindow() const float scale = ImGui::GetIO().DisplayFramebufferScale.x; const float shadow_offset = 1.0f * scale; - float margin = 10.0f * scale; - float spacing = 5.0f * scale; + const float margin = (g_settings.display_increase_safe_zone ? 25.0f : 10.0f) * scale; + const float spacing = 5.0f * scale; float position_y = margin; ImDrawList* dl = ImGui::GetBackgroundDrawList(); ImFont* font = ImGui::GetFont(); @@ -1229,7 +1229,7 @@ void CommonHostInterface::DrawOSDMessages() const float scale = ImGui::GetIO().DisplayFramebufferScale.x; const float spacing = 5.0f * scale; - const float margin = 10.0f * scale; + const float margin = (g_settings.display_increase_safe_zone ? 25.0f : 10.0f) * scale; const float padding = 8.0f * scale; const float rounding = 5.0f * scale; const float max_width = ImGui::GetIO().DisplaySize.x - margin; diff --git a/src/frontend-common/fullscreen_ui.cpp b/src/frontend-common/fullscreen_ui.cpp index 69b99add6e..259d190e15 100644 --- a/src/frontend-common/fullscreen_ui.cpp +++ b/src/frontend-common/fullscreen_ui.cpp @@ -3195,7 +3195,7 @@ void DrawStatsOverlay() return; } - const float margin = LayoutScale(10.0f); + const float margin = LayoutScale(g_settings.display_increase_safe_zone ? 25.0f : 10.0f); const float shadow_offset = DPIScale(1.0f); float position_y = ImGuiFullscreen::g_menu_bar_size + margin; ImDrawList* dl = ImGui::GetBackgroundDrawList(); @@ -3280,7 +3280,7 @@ void DrawOSDMessages() const float max_width = LayoutScale(1080.0f); const float spacing = LayoutScale(4.0f); - const float margin = LayoutScale(10.0f); + const float margin = LayoutScale(g_settings.display_increase_safe_zone ? 25.0f : 10.0f); const float padding = LayoutScale(10.0f); float position_x = margin; float position_y = margin + ImGuiFullscreen::g_menu_bar_size;