From 5dea68bb4c25253e304fc90347b24e0b2badad92 Mon Sep 17 00:00:00 2001 From: Nathan Sobo Date: Wed, 14 Nov 2012 15:34:11 -0700 Subject: [PATCH] Status bar only updates modified flag after buffer *stops* changing --- spec/app/status-bar-spec.coffee | 12 ++++++++---- src/app/status-bar.coffee | 6 +++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/spec/app/status-bar-spec.coffee b/spec/app/status-bar-spec.coffee index 03a1f91ed..a12af57b6 100644 --- a/spec/app/status-bar-spec.coffee +++ b/spec/app/status-bar-spec.coffee @@ -15,10 +15,6 @@ describe "StatusBar", -> statusBar = rootView.find('.status-bar').view() buffer = editor.getBuffer() - # updating the status bar is asynchronous for performance reasons - # for testing purposes, make it synchronous - spyOn(_, 'delay').andCallFake (fn) -> fn() - afterEach -> rootView.remove() @@ -56,6 +52,7 @@ describe "StatusBar", -> it "enables the buffer modified indicator", -> expect(statusBar.bufferModified.text()).toBe '' editor.insertText("\n") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '*' editor.backspace() @@ -66,6 +63,7 @@ describe "StatusBar", -> rootView.open(path) expect(statusBar.bufferModified.text()).toBe '' editor.insertText("\n") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '*' editor.save() expect(statusBar.bufferModified.text()).toBe '' @@ -73,15 +71,19 @@ describe "StatusBar", -> it "disables the buffer modified indicator if the content matches again", -> expect(statusBar.bufferModified.text()).toBe '' editor.insertText("\n") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '*' editor.backspace() + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '' it "disables the buffer modified indicator when the change is undone", -> expect(statusBar.bufferModified.text()).toBe '' editor.insertText("\n") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '*' editor.undo() + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '' describe "when the buffer changes", -> @@ -89,6 +91,7 @@ describe "StatusBar", -> expect(statusBar.bufferModified.text()).toBe '' rootView.open(require.resolve('fixtures/sample.txt')) editor.insertText("\n") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '*' it "doesn't update the buffer modified indicator for the old buffer", -> @@ -96,6 +99,7 @@ describe "StatusBar", -> expect(statusBar.bufferModified.text()).toBe '' rootView.open(require.resolve('fixtures/sample.txt')) oldBuffer.setText("new text") + advanceClock(buffer.stoppedChangingDelay) expect(statusBar.bufferModified.text()).toBe '' describe "when the associated editor's cursor position changes", -> diff --git a/src/app/status-bar.coffee b/src/app/status-bar.coffee index 7bc99b41a..c7ca7a3a4 100644 --- a/src/app/status-bar.coffee +++ b/src/app/status-bar.coffee @@ -42,9 +42,9 @@ class StatusBar extends View subscribeToBuffer: -> @buffer?.off '.status-bar' @buffer = @editor.getBuffer() - @buffer.on 'change.status-bar', => _.delay (=> @updateBufferModifiedText()), 50 - @buffer.on 'after-save.status-bar', => _.delay (=> @updateStatusBar()), 50 - @buffer.on 'git-status-change.status-bar', => _.delay (=> @updateStatusBar()), 50 + @buffer.on 'stopped-changing.status-bar', => @updateBufferModifiedText() + @buffer.on 'after-save.status-bar', => @updateStatusBar() + @buffer.on 'git-status-change.status-bar', => @updateStatusBar() @updateStatusBar() updateStatusBar: ->