diff --git a/browser/components/MarkdownEditor.js b/browser/components/MarkdownEditor.js index 52ab2873..8d79629d 100644 --- a/browser/components/MarkdownEditor.js +++ b/browser/components/MarkdownEditor.js @@ -5,7 +5,7 @@ import styles from './MarkdownEditor.styl' import CodeEditor from 'browser/components/CodeEditor' import MarkdownPreview from 'browser/components/MarkdownPreview' import eventEmitter from 'browser/main/lib/eventEmitter' -import { findStorage } from 'browser/lib/findStorage' +import {findStorage} from 'browser/lib/findStorage' class MarkdownEditor extends React.Component { constructor (props) { @@ -92,7 +92,9 @@ class MarkdownEditor extends React.Component { if (this.state.isLocked) return this.setState({ keyPressed: new Set() }) const { config } = this.props - if (config.editor.switchPreview === 'BLUR') { + if (config.editor.switchPreview === 'BLUR' || + (config.editor.switchPreview === 'DBL_CLICK' && this.state.status === 'CODE') + ) { const cursorPosition = this.refs.code.editor.getCursor() this.setState({ status: 'PREVIEW' @@ -104,6 +106,20 @@ class MarkdownEditor extends React.Component { } } + handleDoubleClick (e) { + if (this.state.isLocked) return + this.setState({keyPressed: new Set()}) + const { config } = this.props + if (config.editor.switchPreview === 'DBL_CLICK') { + this.setState({ + status: 'CODE' + }, () => { + this.refs.code.focus() + eventEmitter.emit('topbar:togglelockbutton', this.state.status) + }) + } + } + handlePreviewMouseDown (e) { this.previewMouseDownedAt = new Date() } @@ -264,6 +280,7 @@ class MarkdownEditor extends React.Component { scrollPastEnd={config.preview.scrollPastEnd} ref='preview' onContextMenu={(e) => this.handleContextMenu(e)} + onDoubleClick={(e) => this.handleDoubleClick(e)} tabIndex='0' value={this.state.renderValue} onMouseUp={(e) => this.handlePreviewMouseUp(e)} diff --git a/browser/components/MarkdownPreview.js b/browser/components/MarkdownPreview.js index ecaff1b8..1d0f7513 100755 --- a/browser/components/MarkdownPreview.js +++ b/browser/components/MarkdownPreview.js @@ -120,6 +120,7 @@ export default class MarkdownPreview extends React.Component { this.contextMenuHandler = (e) => this.handleContextMenu(e) this.mouseDownHandler = (e) => this.handleMouseDown(e) this.mouseUpHandler = (e) => this.handleMouseUp(e) + this.DoubleClickHandler = (e) => this.handleDoubleClick(e) this.anchorClickHandler = (e) => this.handlePreviewAnchorClick(e) this.checkboxClickHandler = (e) => this.handleCheckboxClick(e) this.saveAsTextHandler = () => this.handleSaveAsText() @@ -154,6 +155,10 @@ export default class MarkdownPreview extends React.Component { this.props.onContextMenu(e) } + handleDoubleClick (e) { + if (this.props.onDoubleClick != null) this.props.onDoubleClick(e) + } + handleMouseDown (e) { if (e.target != null) { switch (e.target.tagName) { @@ -271,6 +276,7 @@ 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('dblclick', this.DoubleClickHandler) 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) @@ -283,6 +289,7 @@ 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('dblclick', this.DoubleClickHandler) 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) diff --git a/browser/main/modals/PreferencesModal/UiTab.js b/browser/main/modals/PreferencesModal/UiTab.js index df35e260..654e1dfd 100644 --- a/browser/main/modals/PreferencesModal/UiTab.js +++ b/browser/main/modals/PreferencesModal/UiTab.js @@ -283,6 +283,7 @@ class UiTab extends React.Component { onChange={(e) => this.handleUIChange(e)} > +