FrameSort

FrameSort

88.4k Downloads

Core functionality broken with new patch

ireliamonster opened this issue ยท 14 comments

commented

In the middle of the arena game my unit frames pop back to being unsorted. Issue persists with both Traditional and Taintless

commented
1x [ADDON_ACTION_BLOCKED] AddOn 'FrameSort' tried to call the protected function 'CompactPartyFramePet4:AdjustPointsOffset()'.
[string "@!BugGrabber/BugGrabber.lua"]:481: in function <!BugGrabber/BugGrabber.lua:481>
[string "=[C]"]: in function `AdjustPointsOffset'
[string "@FrameSort/Modules/Sorting.lua"]:260: in function <FrameSort/Modules/Sorting.lua:181>
[string "@FrameSort/Modules/Sorting.lua"]:326: in function <FrameSort/Modules/Sorting.lua:271>
[string "@FrameSort/Modules/Sorting.lua"]:429: in function `callback'
[string "@FrameSort/Providers/Blizzard.lua"]:105: in function <FrameSort/Providers/Blizzard.lua:103>

Locals:
_ = Frame {
 RegisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:487
 0 = <userdata>
 UnregisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:487
 SetScript = <function> defined @!BugGrabber/BugGrabber.lua:487
}
event = "ADDON_ACTION_BLOCKED"
events = <table> {
 ADDON_ACTION_BLOCKED = <function> defined @!BugGrabber/BugGrabber.lua:553
 ADDON_ACTION_FORBIDDEN = <function> defined @!BugGrabber/BugGrabber.lua:553
 PLAYER_LOGIN = <function> defined @!BugGrabber/BugGrabber.lua:547
 LUA_WARNING = <function> defined @!BugGrabber/BugGrabber.lua:562
 ADDON_LOADED = <function> defined @!BugGrabber/BugGrabber.lua:507
}

commented

Oh my god, Blizzard have restricted the API function I was using to move frames.

image
https://wowpedia.fandom.com/wiki/API_ScriptRegionResizing_AdjustPointsOffset

This really really sucks and means I can only sort frames outside of combat which isn't sufficient because Blizzard refresh/unsort frames mid-combat on certain events (e.g. pet summons/dismisses, mind control, people joining/leaving group, boss kills).

This is a serious killer to my addon and I'm not sure there is anything I can do about it.

Am currently researching possible workarounds/solutions.

commented

Why is the traditional method affected though? I thought that only changed the sorting function

commented

Looks like I'm accidentally applying taintless sorting in some areas even when traditional mode is enabled. I'll fix that.

commented

5.8.0 should no longer run taintless sorting when traditional is enabled, so that specific Lua error should disappear. I have limited time/ability to test at the moment so I can't verify.

Still researching a workaround/solution for the core functionality breaking.

commented

Oh my god, Blizzard have restricted the API function I was using to move frames.

The api made automated combat rotations possible cause you could just move in diff frames on your cursor casting X and use an auto clicker. Sucks to see that your addon been affected by it. Ive also noticed that using sorting in combat on the Wrath PTR has been affected.

commented

The api made automated combat rotations possible cause you could just move in diff frames on your cursor casting X and use an auto clicker. Sucks to see that your addon been affected by it. Ive also noticed that using sorting in combat on the Wrath PTR has been affected.

Ah ok, so that's the reason they blocked it.

I'm experimenting with SecureHandlerWrapScript and SecureGroupHeaderTemplate to see if they can help in some way, but if you have any other ideas please let me know!

commented

I'm working on a new sorting method (called it "Secure") and have just published a release with it added.
Still further work to be done on it, but I'm hoping to confirm the approach will work.

More to come.

commented

I'm working on a new sorting method (called it "Secure") and have just published a release with it added. Still further work to be done on it, but I'm hoping to confirm the approach will work.

More to come.

Does the new method allow sorting in combat?

commented

Does the new method allow sorting in combat?

Sort of; I can't sort frames mid-combat, but I can try to retain their pre-sorted positions mid-combat.

I'm pretty sure a proper sort during combat is now physically impossible. What I can do though is call SetPoint() mid-combat during some secure events which means I can move frames back to their sorted position if Blizzard move them during combat. Not sure whether I can cover all scenarios of when Blizzard move frames though.

I think this is the best we can do.

commented

I've just published an update that switches people over to using the new Secure method if they are currently using Taintless, as it's now good enough to use as the default.

Will likely end up refactoring/merging Taintless and Secure to just the one method eventually.

Still have development to do in this space, but frames shouldn't lose their order mid-combat now.

commented

FYI I've found and logged a relevant Blizzard bug:

#480 - GetPoint() returns nil values in combat from secure snippets

This prevents me from retrieving a frame's current position during combat which means I can't do calculations for things like the current visual order of frames and how much space is between them. Praying that Blizzard fix this ASAP.

commented

FYI have been continuously working on this and releasing alpha versions with the latest development.
Hoping to release a production ready version soon.

commented

Finally released version 6.0.0 with many improvements to resolve the 10.1.7 issues.

Happy sorting!