diff --git a/LightlessSync/UI/LightFinderUI.cs b/LightlessSync/UI/LightFinderUI.cs index cad3d0b..e41d17d 100644 --- a/LightlessSync/UI/LightFinderUI.cs +++ b/LightlessSync/UI/LightFinderUI.cs @@ -759,29 +759,22 @@ public class LightFinderUI : WindowMediatorSubscriberBase var scale = ImGuiHelpers.GlobalScale; - // if not already open - if (!ImGui.IsPopupOpen("JoinSyncshellModal")) - ImGui.OpenPopup("JoinSyncshellModal"); - - Vector2 windowPos = ImGui.GetWindowPos(); Vector2 windowSize = ImGui.GetWindowSize(); float modalWidth = Math.Min(420f * scale, windowSize.X - 40f * scale); float modalHeight = 295f * scale; - ImGui.SetNextWindowPos(new Vector2( - windowPos.X + (windowSize.X - modalWidth) * 0.5f, - windowPos.Y + (windowSize.Y - modalHeight) * 0.5f - ), ImGuiCond.Always); - ImGui.SetNextWindowSize(new Vector2(modalWidth, modalHeight)); - ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 6f * ImGuiHelpers.GlobalScale); - ImGui.PushStyleColor(ImGuiCol.Border, Vector4.Zero); + Vector2 childPos = new Vector2( + (windowSize.X - modalWidth) * 0.5f, + (windowSize.Y - modalHeight) * 0.5f + ); + ImGui.SetCursorPos(childPos); - using ImRaii.Color modalBorder = ImRaii.PushColor(ImGuiCol.Border, UIColors.Get("LightlessPurple").WithAlpha(0.5f)); - using ImRaii.Style rounding = ImRaii.PushStyle(ImGuiStyleVar.WindowRounding, 8f * scale); - using ImRaii.Style borderSize = ImRaii.PushStyle(ImGuiStyleVar.WindowBorderSize, 2f * scale); - using ImRaii.Style padding = ImRaii.PushStyle(ImGuiStyleVar.WindowPadding, new Vector2(16f * scale, 16f * scale)); + using var modalBorder = ImRaii.PushColor(ImGuiCol.Border, UIColors.Get("LightlessPurple").WithAlpha(0.5f)); + using var childBg = ImRaii.PushColor(ImGuiCol.ChildBg, ImGui.GetStyle().Colors[(int)ImGuiCol.WindowBg]); + using var rounding = ImRaii.PushStyle(ImGuiStyleVar.ChildRounding, 8f * scale); + using var borderSize = ImRaii.PushStyle(ImGuiStyleVar.ChildBorderSize, 2f * scale); + using var padding = ImRaii.PushStyle(ImGuiStyleVar.WindowPadding, new Vector2(16f * scale, 16f * scale)); - ImGuiWindowFlags flags = ImGuiWindowFlags.NoTitleBar | ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoMove | ImGuiWindowFlags.NoScrollbar; - if (ImGui.BeginPopupModal("JoinSyncshellModal", ref _joinModalOpen, flags)) + if (ImGui.BeginChild("JoinSyncshellOverlay", new Vector2(modalWidth, modalHeight), true, ImGuiWindowFlags.NoScrollbar)) { float contentWidth = ImGui.GetContentRegionAvail().X; @@ -843,7 +836,7 @@ public class LightFinderUI : WindowMediatorSubscriberBase _joinDto = null; _joinInfo = null; - ImGui.CloseCurrentPopup(); + } } @@ -858,20 +851,13 @@ public class LightFinderUI : WindowMediatorSubscriberBase { _joinDto = null; _joinInfo = null; - ImGui.CloseCurrentPopup(); + } } } - // Handle modal close via the bool ref - if (!_joinModalOpen) - { - _joinDto = null; - _joinInfo = null; - } - - ImGui.EndPopup(); } + ImGui.EndChild(); } private void DrawPermissionToggleRow(string label, FontAwesomeIcon icon, bool suggested, bool current, Action apply, float contentWidth)