From 48337f3203532ac41a06619ad39a43272a051e72 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Fri, 27 Sep 2013 11:41:57 -0700 Subject: [PATCH 1/2] Just check for display != 'none' for visilbility --- src/editor.coffee | 2 +- src/jquery-extensions.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/editor.coffee b/src/editor.coffee index f09e40935..50761d51f 100644 --- a/src/editor.coffee +++ b/src/editor.coffee @@ -1175,7 +1175,7 @@ class Editor extends View updateDisplay: (options={}) -> return unless @attached and @activeEditSession return if @activeEditSession.destroyed - unless @isVisible() + unless @isOnDom() and @isVisible() @redrawOnReattach = true return diff --git a/src/jquery-extensions.coffee b/src/jquery-extensions.coffee index 1b6e7f4fd..c5bb6b568 100644 --- a/src/jquery-extensions.coffee +++ b/src/jquery-extensions.coffee @@ -35,7 +35,7 @@ $.fn.isOnDom = -> @closest(document.body).length is 1 $.fn.isVisible = -> - @is(':visible') + @length > 0 and @css('display') != 'none' $.fn.isDisabled = -> !!@attr('disabled') From ce9920a9ff6906c6b3b9ee20a2154658d1cae181 Mon Sep 17 00:00:00 2001 From: Ben Ogle Date: Fri, 27 Sep 2013 14:33:39 -0700 Subject: [PATCH 2/2] Use jquery's hidden code in our isHidden() --- src/jquery-extensions.coffee | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/jquery-extensions.coffee b/src/jquery-extensions.coffee index c5bb6b568..c749b1ce5 100644 --- a/src/jquery-extensions.coffee +++ b/src/jquery-extensions.coffee @@ -35,7 +35,21 @@ $.fn.isOnDom = -> @closest(document.body).length is 1 $.fn.isVisible = -> - @length > 0 and @css('display') != 'none' + !@isHidden() + +$.fn.isHidden = -> + # Implementation taken from jQuery's `:hidden` expression code: + # https://github.com/jquery/jquery/blob/master/src/css/hiddenVisibleSelectors.js + # + # We were using a pseudo selector: @is(':hidden'). But jQuery's pseudo + # selector code checks the element's webkitMatchesSelector, which is always + # false, and is really really really slow. + + elem = this[0] + + return null unless elem + + elem.offsetWidth <= 0 and elem.offsetHeight <= 0 $.fn.isDisabled = -> !!@attr('disabled')