mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-14 04:34:16 +01:00
fix(Window): unfuck OnOpen/OnClose logic (fixes #312)
This commit is contained in:
parent
a5aa9cd849
commit
2d47ae61ef
1 changed files with 22 additions and 10 deletions
|
|
@ -99,13 +99,10 @@ namespace Dalamud.Interface.Windowing
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool IsOpen
|
public bool IsOpen
|
||||||
{
|
{
|
||||||
get => this.mainIsOpen;
|
get => this.internalIsOpen;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (!value)
|
this.internalIsOpen = value;
|
||||||
this.internalIsOpen = true;
|
|
||||||
|
|
||||||
this.mainIsOpen = value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -130,8 +127,19 @@ namespace Dalamud.Interface.Windowing
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal void DrawInternal()
|
internal void DrawInternal()
|
||||||
{
|
{
|
||||||
|
//if (WindowName.Contains("Credits"))
|
||||||
|
// Log.Information($"Draw: {IsOpen} {this.internalIsOpen} {this.internalLastIsOpen}");
|
||||||
|
|
||||||
if (!this.IsOpen)
|
if (!this.IsOpen)
|
||||||
|
{
|
||||||
|
if (this.internalIsOpen != this.internalLastIsOpen)
|
||||||
|
{
|
||||||
|
this.internalLastIsOpen = this.internalIsOpen;
|
||||||
|
this.OnClose();
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var hasNamespace = !string.IsNullOrEmpty(this.Namespace);
|
var hasNamespace = !string.IsNullOrEmpty(this.Namespace);
|
||||||
|
|
||||||
|
|
@ -143,6 +151,12 @@ namespace Dalamud.Interface.Windowing
|
||||||
if (this.ForceMainWindow)
|
if (this.ForceMainWindow)
|
||||||
ImGuiHelpers.ForceNextWindowMainViewport();
|
ImGuiHelpers.ForceNextWindowMainViewport();
|
||||||
|
|
||||||
|
if (this.internalLastIsOpen != this.internalIsOpen && this.internalIsOpen)
|
||||||
|
{
|
||||||
|
this.internalLastIsOpen = this.internalIsOpen;
|
||||||
|
this.OnOpen();
|
||||||
|
}
|
||||||
|
|
||||||
if (ImGui.Begin(this.WindowName, ref this.internalIsOpen, this.Flags))
|
if (ImGui.Begin(this.WindowName, ref this.internalIsOpen, this.Flags))
|
||||||
{
|
{
|
||||||
// Draw the actual window contents
|
// Draw the actual window contents
|
||||||
|
|
@ -153,7 +167,10 @@ namespace Dalamud.Interface.Windowing
|
||||||
|
|
||||||
if (hasNamespace)
|
if (hasNamespace)
|
||||||
ImGui.PopID();
|
ImGui.PopID();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckState()
|
||||||
|
{
|
||||||
if (this.internalLastIsOpen != this.internalIsOpen)
|
if (this.internalLastIsOpen != this.internalIsOpen)
|
||||||
{
|
{
|
||||||
if (this.internalIsOpen)
|
if (this.internalIsOpen)
|
||||||
|
|
@ -165,11 +182,6 @@ namespace Dalamud.Interface.Windowing
|
||||||
this.OnClose();
|
this.OnClose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.internalLastIsOpen = this.internalIsOpen;
|
|
||||||
|
|
||||||
if (this.internalIsOpen != true)
|
|
||||||
this.IsOpen = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ApplyConditionals()
|
private void ApplyConditionals()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue