Only close preview when editor gains focus

Closes #193
This commit is contained in:
Kevin Sawicki
2013-01-28 18:55:58 -08:00
parent 262703618d
commit df83edde64
2 changed files with 11 additions and 7 deletions

View File

@@ -7,8 +7,6 @@ describe "MarkdownPreview", ->
beforeEach ->
rootView = new RootView(require.resolve('fixtures/markdown'))
atom.loadPackage("markdown-preview").getInstance()
markdownPreview = MarkdownPreview.instance
afterEach ->
rootView.deactivate()
@@ -17,6 +15,7 @@ describe "MarkdownPreview", ->
it "toggles on/off a preview for a .md file", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
@@ -30,6 +29,7 @@ describe "MarkdownPreview", ->
it "displays a preview for a .markdown file", ->
rootView.open('file.markdown')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
@@ -39,6 +39,7 @@ describe "MarkdownPreview", ->
it "does not display a preview for non-markdown file", ->
rootView.open('file.js')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
@@ -49,6 +50,7 @@ describe "MarkdownPreview", ->
it "removes markdown preview", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
@@ -58,15 +60,16 @@ describe "MarkdownPreview", ->
markdownPreviewView.trigger('core:cancel')
expect(rootView.find('.markdown-preview')).not.toExist()
describe "when focus is lost", ->
describe "when the editor receives focus", ->
it "removes the markdown preview view", ->
rootView.open('file.md')
editor = rootView.getActiveEditor()
markdownPreview = atom.loadPackage("markdown-preview").getInstance()
expect(rootView.find('.markdown-preview')).not.toExist()
spyOn(markdownPreview, 'loadHtml')
editor.trigger('markdown-preview:toggle')
markdownPreviewView = rootView.find('.markdown-preview')
expect(markdownPreviewView).toExist()
markdownPreviewView.blur()
editor.focus()
expect(rootView.find('.markdown-preview')).not.toExist()

View File

@@ -15,8 +15,9 @@ class MarkdownPreviewView extends ScrollView
initialize: (@rootView) ->
super
@editor = @rootView.getActiveEditor()
@subscribe @editor, 'focus', => @detach() unless @detaching
@command 'core:cancel', => @detach() unless @detaching
@on 'focusout', => @detach() unless @detaching
toggle: ->
if @hasParent()
@@ -38,10 +39,10 @@ class MarkdownPreviewView extends ScrollView
@detaching = false
getActivePath: ->
@rootView.getActiveEditor()?.getPath()
@editor.getPath()
getActiveText: ->
@rootView.getActiveEditor()?.getText()
@editor.getText()
getErrorHtml: (error) ->
$$$ ->