Fixed dropping text in the input

This commit is contained in:
n1474335 2022-07-11 13:57:28 +01:00
parent 5c8aac5572
commit 0dc2322269
2 changed files with 9 additions and 13 deletions

View File

@ -149,9 +149,9 @@ class Manager {
document.getElementById("reset-layout").addEventListener("click", this.app.resetLayout.bind(this.app));
this.addListeners("#clr-io,#btn-close-all-tabs", "click", this.input.clearAllIoClick, this.input);
this.addListeners("#open-file,#open-folder", "change", this.input.inputOpen, this.input);
this.addListeners("#input-text,#input-file", "dragover", this.input.inputDragover, this.input);
this.addListeners("#input-text,#input-file", "dragleave", this.input.inputDragleave, this.input);
this.addListeners("#input-text,#input-file", "drop", this.input.inputDrop, this.input);
this.addListeners("#input-wrapper", "dragover", this.input.inputDragover, this.input);
this.addListeners("#input-wrapper", "dragleave", this.input.inputDragleave, this.input);
this.addListeners("#input-wrapper", "drop", this.input.inputDrop, this.input);
document.querySelector("#input-file .close").addEventListener("click", this.input.clearIoClick.bind(this.input));
document.getElementById("btn-new-tab").addEventListener("click", this.input.addInputClick.bind(this.input));
document.getElementById("btn-previous-input-tab").addEventListener("mousedown", this.input.previousTabClick.bind(this.input));

View File

@ -797,7 +797,10 @@ class InputWaiter {
inputDragleave(e) {
e.stopPropagation();
e.preventDefault();
e.target.closest("#input-text,#input-file").classList.remove("dropping-file");
// Dragleave often fires when moving between lines in the editor.
// If the target element is within the input-text element, we are still on target.
if (!this.inputTextEl.contains(e.target))
e.target.closest("#input-text,#input-file").classList.remove("dropping-file");
}
/**
@ -813,17 +816,10 @@ class InputWaiter {
e.stopPropagation();
e.preventDefault();
const text = e.dataTransfer.getData("Text");
e.target.closest("#input-text,#input-file").classList.remove("dropping-file");
if (text) {
// Append the text to the current input and fire inputChange()
this.setInput(this.getInput() + text);
this.inputChange(e);
return;
}
// Dropped text is handled by the editor itself
if (e.dataTransfer.getData("Text")) return;
if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {
this.loadUIFiles(e.dataTransfer.files);