HTML5Window: clean up canvas/div and event listeners on window close()

This commit is contained in:
Josh Tynjala
2023-04-10 13:36:52 -07:00
parent e9a085311e
commit ea8ed5bbe4

View File

@@ -250,6 +250,45 @@ class HTML5Window
public function close():Void
{
var element = parent.element;
if (element != null)
{
if (canvas != null)
{
if (element != cast canvas)
{
element.removeChild(canvas);
}
canvas = null;
}
else if (div != null)
{
element.removeChild(div);
div = null;
}
var events = ["mousedown", "mouseenter", "mouseleave", "mousemove", "mouseup", "wheel"];
for (event in events)
{
element.removeEventListener(event, handleMouseEvent, true);
}
element.removeEventListener("contextmenu", handleContextMenuEvent, true);
element.removeEventListener("dragstart", handleDragEvent, true);
element.removeEventListener("dragover", handleDragEvent, true);
element.removeEventListener("drop", handleDragEvent, true);
element.removeEventListener("touchstart", handleTouchEvent, true);
element.removeEventListener("touchmove", handleTouchEvent, true);
element.removeEventListener("touchend", handleTouchEvent, true);
element.removeEventListener("touchcancel", handleTouchEvent, true);
element.removeEventListener("gamepadconnected", handleGamepadEvent, true);
element.removeEventListener("gamepaddisconnected", handleGamepadEvent, true);
}
parent.application.__removeWindow(parent);
}