I have found two minor issues (as discussed on Discord) in relation to animations / cleanup of DGS elements
When isElement returns false for an element inside the onAnimQueueProcess, the item does not get removed from the animQueuetable but the index is removed from animItem instead. I think this is a typo and can cause an infinite loop because of the second minor bug I have fixed in this pull request (because normally this piece of code should not be reached, DGS should already have cleaned up the animation in the first place).
dgsCleanElement (called by the onClientElementDestroy event) does not work for plugin elements (such as dgs-dxroundrectangle) because the dgsElementType table is used directly to determine the element type, while plugins should actually use the dgsPluginType table instead. I have fixed this by calling the dgsIsType function as that one is able to correctly return the element type for non-plugin and plugin DGS elements.
I have found two minor issues (as discussed on Discord) in relation to animations / cleanup of DGS elements
When
isElement
returnsfalse
for an element inside theonAnimQueueProcess
, the item does not get removed from theanimQueue
table but the index is removed fromanimItem
instead. I think this is a typo and can cause an infinite loop because of the second minor bug I have fixed in this pull request (because normally this piece of code should not be reached, DGS should already have cleaned up the animation in the first place).dgsCleanElement
(called by theonClientElementDestroy
event) does not work for plugin elements (such as dgs-dxroundrectangle) because thedgsElementType
table is used directly to determine the element type, while plugins should actually use thedgsPluginType
table instead. I have fixed this by calling thedgsIsType
function as that one is able to correctly return the element type for non-plugin and plugin DGS elements.