From a6d90bfe9553c61dc6e9d7fddfc886a1110b607e Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Mon, 25 Nov 2019 15:10:45 -0800 Subject: [PATCH] Fix HTML5 clipboard --- .../_internal/backend/html5/HTML5Window.hx | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/lime/_internal/backend/html5/HTML5Window.hx b/src/lime/_internal/backend/html5/HTML5Window.hx index ab2bb7698..537b362ba 100644 --- a/src/lime/_internal/backend/html5/HTML5Window.hx +++ b/src/lime/_internal/backend/html5/HTML5Window.hx @@ -12,6 +12,7 @@ import js.html.InputEvent; import js.html.LinkElement; import js.html.MouseEvent; import js.html.Node; +import js.html.TextAreaElement; import js.html.TouchEvent; import js.html.ClipboardEvent; import js.Browser; @@ -46,6 +47,7 @@ import lime.ui.Window; class HTML5Window { private static var dummyCharacter = String.fromCharCode(127); + private static var textArea:TextAreaElement; private static var textInput:InputElement; private static var windowID:Int = 0; @@ -902,22 +904,25 @@ class HTML5Window public function setClipboard(value:String):Void { - var inputEnabled = textInputEnabled; - - setTextInputEnabled(true); // create textInput if necessary - - var cacheText = textInput.value; - textInput.value = value; - textInput.select(); - if (Browser.document.queryCommandEnabled("copy")) { + if (textArea == null) + { + textArea = cast Browser.document.createElement("textarea"); + textArea.style.height = "0px"; + textArea.style.left = "-100px"; + textArea.style.opacity = "0"; + textArea.style.position = "fixed"; + textArea.style.top = "-100px"; + textArea.style.width = "0px"; + Browser.document.body.appendChild(textArea); + } + + textArea.value = value; + textArea.select(); + Browser.document.execCommand("copy"); } - - textInput.value = cacheText; - - setTextInputEnabled(inputEnabled); } public function setCursor(value:MouseCursor):MouseCursor