HTML5Window: clean up canvas/div and event listeners on window close()
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user