fix: re-show objective tracker when hidden#1812
Conversation
|
calling show or hide will taint the objective tracker |
I wish I could figure out what's making it go away in the first place. I have narrowed it down further. It happens when the contents of any objective change while the tracker is still hidden. I was able to duplicate the issue with a small code change as such:
After combat ends and you have no target the objective frame will stay gone. So it appears that any time some objective updates while the tracker is hidden causes the state of the frame to require more to reshow it that just reparenting it. Note: It could also be something that's meant to periodically check the state of the objectives, rather than the changing of the values that does it, because I swear I saw it happen while killing trash in an instance with the If you've got any ideas of things I could test further or areas to look at that are likely culprits let me know. |
|
Ok, I found an even easier way to trigger it:
So it is definitely caused by something that's attempting to update the objective frame while it's hidden. |
1d316ec to
71ff02c
Compare
The objective tracker is sometimes being actually hidden by something, not just re-parented. When this happens moving it back to the UIParent doesn't make it show again on its own. This fix explicitly calls Show to restore it.
71ff02c to
c796b71
Compare
|
I never found the root cause for this and now it's happening every time I return from being AFK as well. |
When using AutoHide for boss fights, the objective tracker is sometimes being actually hidden, not just re-parented. When this happens, moving it back to the UIParent doesn't make it show again on its own. This fix explicitly calls Show to restore it.
To reproduce this issue engage a boss and observe that after the fight the objective frame doesn't come back.
The attached screenshot shows the debug status as well as some logging I added before and after the SetParent calls in the Collapse and Expand methods:
You can see that during the call to
BL:ObjectiveTracker_Collapse, both before and after the call to re-parent the frame, theIsShown()API call returnstrueas expected. However, after the fight, when theAutoHider's state changes and its OnShow method eventually callsObjectiveTracker_Expand,IsShown()now returnsfalse. Because of that, even after you move it to the parent,IsVisible()is still alsofalseand the frame doesn't show back up.Ideally it would be nice to track down what is actually causing IsShown to return
falseon the frame and prevent it, but I can't find it anywhere. I'm hoping this workaround is good enough for now, or that my debugging provides some insight into how to better address the issue to someone more knowledgeable about it.