diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index 636275a5f..185972d97 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -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); }