From 96874d68d8f5fe58ea2df605ef9372be09dd5fcf Mon Sep 17 00:00:00 2001 From: Jessica Lord Date: Tue, 21 Jul 2015 11:10:35 -0700 Subject: [PATCH] Run polling functions when windows resizes --- spec/view-registry-spec.coffee | 12 +++++++++++- src/view-registry.coffee | 2 ++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/spec/view-registry-spec.coffee b/spec/view-registry-spec.coffee index e5153647d..10ad0f7eb 100644 --- a/spec/view-registry-spec.coffee +++ b/spec/view-registry-spec.coffee @@ -186,7 +186,9 @@ describe "ViewRegistry", -> expect(events).toEqual ['write', 'read', 'poll'] describe "::pollDocument(fn)", -> - it "calls all registered polling functions after document or stylesheet changes until they are disabled via a returned disposable", -> + [testElement, testStyleSheet, disposable1, disposable2, events] = [] + + beforeEach -> testElement = document.createElement('div') testStyleSheet = document.createElement('style') testStyleSheet.textContent = 'body {}' @@ -198,6 +200,7 @@ describe "ViewRegistry", -> disposable1 = registry.pollDocument -> events.push('poll 1') disposable2 = registry.pollDocument -> events.push('poll 2') + it "calls all registered polling functions after document or stylesheet changes until they are disabled via a returned disposable", -> expect(events).toEqual [] testElement.style.height = '400px' @@ -223,3 +226,10 @@ describe "ViewRegistry", -> runs -> expect(events).toEqual ['poll 2'] + + it "calls all registered polling functions when the window resizes", -> + expect(events).toEqual [] + + window.dispatchEvent(new UIEvent('resize')) + + expect(events).toEqual ['poll 1', 'poll 2'] diff --git a/src/view-registry.coffee b/src/view-registry.coffee index 285c715dd..4c98bb153 100644 --- a/src/view-registry.coffee +++ b/src/view-registry.coffee @@ -210,9 +210,11 @@ class ViewRegistry writer() while writer = @documentWriters.shift() startPollingDocument: -> + window.addEventListener('resize', @performDocumentPoll) @observer.observe(document, {subtree: true, childList: true, attributes: true}) stopPollingDocument: -> + window.removeEventListener('resize', @performDocumentPoll) @observer.disconnect() performDocumentPoll: =>