From 4bb953304911a562f793e4eb8854392484c30904 Mon Sep 17 00:00:00 2001 From: asmsuechan Date: Tue, 21 Feb 2017 00:14:03 +0900 Subject: [PATCH 1/2] Fix prevention of an image dropped on MarkdownPreview and fix the behavior of an image dropped on CodeEditor --- browser/components/CodeEditor.js | 4 ++-- browser/components/MarkdownPreview.js | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 77fc5fd2..96379883 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -173,8 +173,8 @@ export default class CodeEditor extends React.Component { } insertImage (imageMd) { - const cm = this.editor - cm.setValue(cm.getValue() + imageMd) + const textarea = this.editor.getInputField() + textarea.value = textarea.value.substr(0, textarea.selectionStart) + imageMd + textarea.value.substr(textarea.selectionEnd) } render () { diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index 733f198f..c8e9374b 100644 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -181,6 +181,8 @@ export default class MarkdownPreview extends React.Component { this.refs.root.contentWindow.document.addEventListener('mousedown', this.mouseDownHandler) this.refs.root.contentWindow.document.addEventListener('mouseup', this.mouseUpHandler) + this.refs.root.contentWindow.document.addEventListener('drop', this.preventImageDroppedHandler) + this.refs.root.contentWindow.document.addEventListener('dragover', this.preventImageDroppedHandler) eventEmitter.on('export:save-text', this.saveAsTextHandler) eventEmitter.on('export:save-md', this.saveAsMdHandler) } @@ -189,6 +191,8 @@ export default class MarkdownPreview extends React.Component { this.refs.root.contentWindow.document.body.removeEventListener('contextmenu', this.contextMenuHandler) this.refs.root.contentWindow.document.removeEventListener('mousedown', this.mouseDownHandler) this.refs.root.contentWindow.document.removeEventListener('mouseup', this.mouseUpHandler) + this.refs.root.contentWindow.document.removeEventListener('drop', this.preventImageDroppedHandler) + this.refs.root.contentWindow.document.removeEventListener('dragover', this.preventImageDroppedHandler) eventEmitter.off('export:save-text', this.saveAsTextHandler) eventEmitter.off('export:save-md', this.saveAsMdHandler) } @@ -325,6 +329,11 @@ export default class MarkdownPreview extends React.Component { } } + preventImageDroppedHandler(e) { + e.preventDefault() + e.stopPropagation() + } + render () { let { className, style, tabIndex } = this.props return ( From 83cef13f1c2ac8eb005d891d18c3da4ed51f9c85 Mon Sep 17 00:00:00 2001 From: asmsuechan Date: Tue, 21 Feb 2017 23:28:16 +0900 Subject: [PATCH 2/2] Change let to const --- browser/components/CodeEditor.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/browser/components/CodeEditor.js b/browser/components/CodeEditor.js index 96379883..d17987ce 100644 --- a/browser/components/CodeEditor.js +++ b/browser/components/CodeEditor.js @@ -166,9 +166,9 @@ export default class CodeEditor extends React.Component { handleDropImage (e) { e.preventDefault() - let imagePath = e.dataTransfer.files[0].path - let filename = path.basename(imagePath) - let imageMd = `![${encodeURI(filename)}](${encodeURI(imagePath)})` + const imagePath = e.dataTransfer.files[0].path + const filename = path.basename(imagePath) + const imageMd = `![${encodeURI(filename)}](${encodeURI(imagePath)})` this.insertImage(imageMd) }