From ed7de42ba00e4cfb841706e125715deb15febdb2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:03:14 -0800 Subject: [PATCH 1/7] Use single interval to blink all cursors --- src/cursor-view.coffee | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index a9048bd73..c845005d5 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -7,10 +7,24 @@ class CursorView extends View @content: -> @div class: 'cursor idle', => @raw ' ' - blinkPeriod: 800 - editorView: null - visible: true + @blinkPeriod: 800 + @blinkCursors: -> + element.classList.toggle('blink-off') for [element] in @cursorViews + + @startBlinking: (cursorView) -> + @cursorViews ?= [] + @cursorViews.push(cursorView) + if @cursorViews.length is 1 + @blinkInterval = setInterval(@blinkCursors.bind(@), @blinkPeriod / 2) + + @stopBlinking: (cursorView) -> + cursorView[0].classList.remove('blink-off') + _.remove(@cursorViews, cursorView) + clearInterval(@blinkInterval) if @cursorViews.length is 0 + + blinking: false + visible: true needsUpdate: true needsRemoval: false shouldPauseBlinking: false @@ -73,14 +87,12 @@ class CursorView extends View @toggle(@visible) stopBlinking: -> - clearInterval(@blinkInterval) if @blinkInterval - @blinkInterval = null - this[0].classList.remove('blink-off') + @constructor.stopBlinking(this) if @blinking + @blinking = false startBlinking: -> - return if @blinkInterval? - blink = => @toggleClass('blink-off') - @blinkInterval = setInterval(blink, @blinkPeriod / 2) + @constructor.startBlinking(this) unless @blinking + @blinking = true resetBlinking: -> @stopBlinking() From 48f69880e00e900be1074ae5d2d2c6c183dbe0e5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:06:11 -0800 Subject: [PATCH 2/7] :lipstick: Use this instead of @ --- src/cursor-view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index c845005d5..54ebfdb24 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -16,7 +16,7 @@ class CursorView extends View @cursorViews ?= [] @cursorViews.push(cursorView) if @cursorViews.length is 1 - @blinkInterval = setInterval(@blinkCursors.bind(@), @blinkPeriod / 2) + @blinkInterval = setInterval(@blinkCursors.bind(this), @blinkPeriod / 2) @stopBlinking: (cursorView) -> cursorView[0].classList.remove('blink-off') From 1d2c3bce206cfca2a59b37d8417fb4bc26392ca5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:12:02 -0800 Subject: [PATCH 3/7] Remove unused requires --- src/cursor-view.coffee | 1 - 1 file changed, 1 deletion(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 54ebfdb24..48c826a0f 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -1,5 +1,4 @@ {View} = require './space-pen-extensions' -{Point, Range} = require 'text-buffer' _ = require 'underscore-plus' module.exports = From d49bb2416bbcd8cc6703e59fda727dfa28435243 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:13:47 -0800 Subject: [PATCH 4/7] Use subscribe instead of namespace --- src/cursor-view.coffee | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 48c826a0f..25258cda8 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -29,22 +29,21 @@ class CursorView extends View shouldPauseBlinking: false initialize: (@cursor, @editorView) -> - @cursor.on 'moved.cursor-view', => + @subscribe @cursor, 'moved', => @needsUpdate = true @shouldPauseBlinking = true - @cursor.on 'visibility-changed.cursor-view', (visible) => + @subscribe @cursor, 'visibility-changed', (visible) => @needsUpdate = true - @cursor.on 'autoscrolled.cursor-view', => + @subscribe @cursor, 'autoscrolled', => @editorView.requestDisplayUpdate() - @cursor.on 'destroyed.cursor-view', => + @subscribe @cursor, 'destroyed', => @needsRemoval = true beforeRemove: -> @editorView.removeCursorView(this) - @cursor.off('.cursor-view') @stopBlinking() updateDisplay: -> From 017cc23bbfa25785893480f508a69222c7e810d1 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:14:31 -0800 Subject: [PATCH 5/7] Remove unused param --- src/cursor-view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 25258cda8..4fd9ea2f3 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -33,7 +33,7 @@ class CursorView extends View @needsUpdate = true @shouldPauseBlinking = true - @subscribe @cursor, 'visibility-changed', (visible) => + @subscribe @cursor, 'visibility-changed', => @needsUpdate = true @subscribe @cursor, 'autoscrolled', => From 680e1cc80ac89fe612cab256018e9384796e15d8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:15:21 -0800 Subject: [PATCH 6/7] Inline style variable --- src/cursor-view.coffee | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 4fd9ea2f3..1abc15025 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -64,8 +64,7 @@ class CursorView extends View # Override for speed. The base function checks the computedStyle isHidden: -> - style = this[0].style - if style.display == 'none' or not @isOnDom() + if this[0].style.display is 'none' or not @isOnDom() true else false @@ -80,7 +79,7 @@ class CursorView extends View @editorView.pixelPositionForScreenPosition(@getScreenPosition()) setVisible: (visible) -> - unless @visible == visible + unless @visible is visible @visible = visible @toggle(@visible) From 86b19c1ffcfb67cceaeebcea9573e921b076c33a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 11 Feb 2014 18:16:10 -0800 Subject: [PATCH 7/7] Remove unneeded if/else --- src/cursor-view.coffee | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/cursor-view.coffee b/src/cursor-view.coffee index 1abc15025..857e5e137 100644 --- a/src/cursor-view.coffee +++ b/src/cursor-view.coffee @@ -64,10 +64,7 @@ class CursorView extends View # Override for speed. The base function checks the computedStyle isHidden: -> - if this[0].style.display is 'none' or not @isOnDom() - true - else - false + this[0].style.display is 'none' or not @isOnDom() needsAutoscroll: -> @cursor.needsAutoscroll