@@ -2,6 +2,7 @@ import React, { PropTypes } from 'react'
22import ReactDOM from 'react-dom'
33import MarkdownPreview from 'browser/components/MarkdownPreview'
44import CodeEditor from 'browser/components/CodeEditor'
5+ import activityRecord from 'browser/lib/activityRecord'
56
67export const PREVIEW_MODE = 'PREVIEW_MODE'
78export const EDIT_MODE = 'EDIT_MODE'
@@ -64,6 +65,7 @@ export default class ArticleEditor extends React.Component {
6465 this . refs . editor . scrollToLine ( this . state . firstVisibleRow )
6566 }
6667 this . refs . editor . editor . focus ( )
68+ activityRecord . emit ( 'ARTICLE_UPDATE' , this . props . article )
6769 } )
6870 }
6971
@@ -91,7 +93,21 @@ export default class ArticleEditor extends React.Component {
9193 }
9294 }
9395
94- handleBlurCodeEditor ( ) {
96+ handleBlurCodeEditor ( e ) {
97+ let isWindowBlurred = e . relatedTarget === null
98+ let isFocusingToThis = e . relatedTarget === ReactDOM . findDOMNode ( this )
99+ let isFocusingToSearch = e . relatedTarget . className === 'ace_search_field'
100+
101+ if ( isWindowBlurred || isFocusingToThis ) {
102+ e . preventDefault ( )
103+ return
104+ }
105+
106+ if ( isFocusingToSearch ) {
107+ e . preventDefault ( )
108+ return
109+ }
110+
95111 let { article } = this . props
96112 if ( article . mode === 'markdown' ) {
97113 this . switchPreviewMode ( )
@@ -121,7 +137,7 @@ export default class ArticleEditor extends React.Component {
121137 }
122138
123139 return (
124- < div className = 'ArticleEditor' >
140+ < div tabIndex = '5' className = 'ArticleEditor' >
125141 < CodeEditor
126142 ref = 'editor'
127143 onBlur = { e => this . handleBlurCodeEditor ( e ) }
@@ -145,5 +161,6 @@ ArticleEditor.propTypes = {
145161 key : PropTypes . string ,
146162 mode : PropTypes . string
147163 } ) ,
148- onChange : PropTypes . func
164+ onChange : PropTypes . func ,
165+ parent : PropTypes . object
149166}
0 commit comments