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)}
>
+