diff --git a/Dalamud/Configuration/DalamudConfiguration.cs b/Dalamud/Configuration/DalamudConfiguration.cs index 407ac56f5..687f63179 100644 --- a/Dalamud/Configuration/DalamudConfiguration.cs +++ b/Dalamud/Configuration/DalamudConfiguration.cs @@ -107,6 +107,11 @@ namespace Dalamud.Configuration /// public bool LogOpenAtStartup { get; set; } + /// + /// Gets or sets a value indicating whether or not docking should be globally enabled in ImGui. + /// + public bool IsDocking { get; set; } + /// /// Load a configuration from the provided path. /// diff --git a/Dalamud/Interface/DalamudSettingsWindow.cs b/Dalamud/Interface/DalamudSettingsWindow.cs index 6f43c5d86..ab9ba9b83 100644 --- a/Dalamud/Interface/DalamudSettingsWindow.cs +++ b/Dalamud/Interface/DalamudSettingsWindow.cs @@ -35,6 +35,8 @@ namespace Dalamud.Interface this.doToggleUiHideDuringCutscenes = this.dalamud.Configuration.ToggleUiHideDuringCutscenes; this.doToggleUiHideDuringGpose = this.dalamud.Configuration.ToggleUiHideDuringGpose; + this.doDocking = this.dalamud.Configuration.IsDocking; + this.doPluginTest = this.dalamud.Configuration.DoPluginTest; this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList.Select(x => x.Clone()).ToList(); @@ -106,7 +108,6 @@ namespace Dalamud.Interface this.thirdRepoList = this.dalamud.Configuration.ThirdRepoList.Select(x => x.Clone()).ToList(); Log.Information("OnClose end"); - } private string[] languages; @@ -114,6 +115,7 @@ namespace Dalamud.Interface private int langIndex; private Vector4 hintTextColor = new Vector4(0.70f, 0.70f, 0.70f, 1.00f); + private Vector4 warnTextColor = new Vector4(1.0f, 0.0f, 0.0f, 1.00f); private XivChatType dalamudMessagesChatType; @@ -126,6 +128,7 @@ namespace Dalamud.Interface private bool doToggleUiHide; private bool doToggleUiHideDuringCutscenes; private bool doToggleUiHideDuringGpose; + private bool doDocking; private List thirdRepoList; private bool printPluginsWelcomeMsg; @@ -209,12 +212,18 @@ namespace Dalamud.Interface ImGui.Checkbox(Loc.Localize("DalamudSettingToggleUiHideDuringGpose", "Hide plugin UI while gpose is active"), ref this.doToggleUiHideDuringGpose); ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleUiHideDuringGposeHint", "Hide any open windows by plugins while gpose is active.")); + ImGui.Dummy(new Vector2(10f, 16f) * ImGui.GetIO().FontGlobalScale); + + ImGui.Checkbox(Loc.Localize("DalamudSettingToggleDocking", "Enable window docking"), ref this.doDocking); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingToggleDockingHint", "This will allow you to fuse and tab plugin windows.")); + ImGui.EndTabItem(); } if (ImGui.BeginTabItem(Loc.Localize("DalamudSettingsExperimental", "Experimental"))) { ImGui.Checkbox(Loc.Localize("DalamudSettingsPluginTest", "Get plugin testing builds"), ref this.doPluginTest); ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingsPluginTestHint", "Receive testing prereleases for plugins.")); + ImGui.TextColored(this.warnTextColor, Loc.Localize("DalamudSettingsPluginTestWarning", "Testing plugins may not have been vetted before being published. Please only enable this if you are aware of the risks.")); ImGui.Dummy(new Vector2(12f, 12f) * ImGui.GetIO().FontGlobalScale); @@ -227,7 +236,8 @@ namespace Dalamud.Interface ImGui.Dummy(new Vector2(12f, 12f) * ImGui.GetIO().FontGlobalScale); ImGui.Text(Loc.Localize("DalamudSettingsCustomRepo", "Custom Plugin Repositories")); - ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingCustomRepoHint", "Add custom plugin repositories. Only change these settings if you know what you are doing.")); + ImGui.TextColored(this.hintTextColor, Loc.Localize("DalamudSettingCustomRepoHint", "Add custom plugin repositories.")); + ImGui.TextColored(this.warnTextColor, Loc.Localize("DalamudSettingCustomRepoWarning", "We cannot take any responsibility for third-party plugins and repositories.\nTake care when installing third-party plugins from untrusted sources.")); ImGui.Dummy(new Vector2(5f, 5f) * ImGui.GetIO().FontGlobalScale); @@ -356,6 +366,18 @@ namespace Dalamud.Interface this.dalamud.Configuration.ToggleUiHideDuringCutscenes = this.doToggleUiHideDuringCutscenes; this.dalamud.Configuration.ToggleUiHideDuringGpose = this.doToggleUiHideDuringGpose; + this.dalamud.Configuration.IsDocking = this.doDocking; + + // Apply docking flag + if (!this.dalamud.Configuration.IsDocking) + { + ImGui.GetIO().ConfigFlags &= ~ImGuiConfigFlags.DockingEnable; + } + else + { + ImGui.GetIO().ConfigFlags |= ImGuiConfigFlags.DockingEnable; + } + this.dalamud.Configuration.DoPluginTest = this.doPluginTest; this.dalamud.Configuration.ThirdRepoList = this.thirdRepoList.Select(x => x.Clone()).ToList(); diff --git a/Dalamud/Interface/InterfaceManager.cs b/Dalamud/Interface/InterfaceManager.cs index 006b8073f..b4a1c436a 100644 --- a/Dalamud/Interface/InterfaceManager.cs +++ b/Dalamud/Interface/InterfaceManager.cs @@ -266,7 +266,15 @@ namespace Dalamud.Interface ImGui.GetStyle().Colors[(int) ImGuiCol.TabActive] = new Vector4(0.36f, 0.36f, 0.36f, 1.00f); ImGui.GetIO().FontGlobalScale = this.dalamud.Configuration.GlobalUiScale; - ImGui.GetIO().ConfigFlags &= ~ImGuiConfigFlags.DockingEnable; + + if (!this.dalamud.Configuration.IsDocking) + { + ImGui.GetIO().ConfigFlags &= ~ImGuiConfigFlags.DockingEnable; + } + else + { + ImGui.GetIO().ConfigFlags |= ImGuiConfigFlags.DockingEnable; + } ImGuiHelpers.MainViewport = ImGui.GetMainViewport(); }