A simplification of the last ui hovering improvement.
This commit is contained in:
parent
4af24cc60d
commit
76d352f972
@ -522,27 +522,23 @@
|
||||
return localStorage.setItem("" + g.NAMESPACE + this.id + ".position", this.style.cssText);
|
||||
};
|
||||
hoverstart = function(_arg) {
|
||||
var asap, asapTest, cb, el, endEvents, event, initialEvent, o, root, _i, _len, _ref;
|
||||
root = _arg.root, el = _arg.el, initialEvent = _arg.initialEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb;
|
||||
var asap, asapTest, cb, el, endEvents, event, latestEvent, o, root, _i, _len, _ref;
|
||||
root = _arg.root, el = _arg.el, latestEvent = _arg.latestEvent, endEvents = _arg.endEvents, asapTest = _arg.asapTest, cb = _arg.cb;
|
||||
o = {
|
||||
root: root,
|
||||
el: el,
|
||||
style: el.style,
|
||||
cb: cb,
|
||||
endEvents: endEvents.split(' '),
|
||||
mousemove: function(e) {
|
||||
return initialEvent = e;
|
||||
},
|
||||
latestEvent: latestEvent,
|
||||
clientHeight: doc.clientHeight,
|
||||
clientWidth: doc.clientWidth
|
||||
};
|
||||
o.hover = hover.bind(o);
|
||||
o.hoverend = hoverend.bind(o);
|
||||
root.addEventListener('mousemove', o.mousemove, false);
|
||||
asap = function() {
|
||||
if (asapTest()) {
|
||||
root.removeEventListener('mousemove', o.mousemove, false);
|
||||
return o.hover(initialEvent);
|
||||
return o.hover(o.latestEvent);
|
||||
} else {
|
||||
return o.timeout = setTimeout(asap, 25);
|
||||
}
|
||||
@ -557,6 +553,7 @@
|
||||
};
|
||||
hover = function(e) {
|
||||
var clientX, clientY, height, left, right, style, top;
|
||||
this.latestEvent = e;
|
||||
height = this.el.offsetHeight;
|
||||
clientX = e.clientX, clientY = e.clientY;
|
||||
top = clientY - 120;
|
||||
@ -582,7 +579,6 @@
|
||||
this.root.removeEventListener(event, this.hoverend, false);
|
||||
}
|
||||
this.root.removeEventListener('mousemove', this.hover, false);
|
||||
this.root.removeEventListener('mousemove', this.mousemove, false);
|
||||
clearTimeout(this.timeout);
|
||||
if (this.cb) {
|
||||
return this.cb.call(this);
|
||||
@ -2942,7 +2938,7 @@
|
||||
UI.hover({
|
||||
root: this,
|
||||
el: qp,
|
||||
initialEvent: e,
|
||||
latestEvent: e,
|
||||
endEvents: 'mouseout click',
|
||||
cb: QuotePreview.mouseout,
|
||||
asapTest: function() {
|
||||
@ -3758,7 +3754,7 @@
|
||||
UI.hover({
|
||||
root: this,
|
||||
el: el,
|
||||
initialEvent: e,
|
||||
latestEvent: e,
|
||||
endEvents: 'mouseout click',
|
||||
asapTest: function() {
|
||||
return el.naturalHeight;
|
||||
|
||||
@ -286,26 +286,23 @@ UI = (->
|
||||
d.removeEventListener 'mouseup', @up, false
|
||||
localStorage.setItem "#{g.NAMESPACE}#{@id}.position", @style.cssText
|
||||
|
||||
hoverstart = ({root, el, initialEvent, endEvents, asapTest, cb}) ->
|
||||
hoverstart = ({root, el, latestEvent, endEvents, asapTest, cb}) ->
|
||||
o = {
|
||||
root: root
|
||||
el: el
|
||||
style: el.style
|
||||
cb: cb
|
||||
endEvents: endEvents.split ' '
|
||||
mousemove: (e) -> initialEvent = e
|
||||
endEvents: endEvents.split ' '
|
||||
latestEvent: latestEvent
|
||||
clientHeight: doc.clientHeight
|
||||
clientWidth: doc.clientWidth
|
||||
}
|
||||
o.hover = hover.bind o
|
||||
o.hoverend = hoverend.bind o
|
||||
|
||||
# Set position once content is loaded.
|
||||
root.addEventListener 'mousemove', o.mousemove, false
|
||||
asap = ->
|
||||
if asapTest()
|
||||
root.removeEventListener 'mousemove', o.mousemove, false
|
||||
o.hover initialEvent
|
||||
o.hover o.latestEvent
|
||||
else
|
||||
o.timeout = setTimeout asap, 25
|
||||
asap()
|
||||
@ -314,6 +311,7 @@ UI = (->
|
||||
root.addEventListener event, o.hoverend, false
|
||||
root.addEventListener 'mousemove', o.hover, false
|
||||
hover = (e) ->
|
||||
@latestEvent = e
|
||||
height = @el.offsetHeight
|
||||
{clientX, clientY} = e
|
||||
|
||||
@ -340,9 +338,8 @@ UI = (->
|
||||
hoverend = ->
|
||||
@el.parentNode.removeChild @el
|
||||
for event in @endEvents
|
||||
@root.removeEventListener event, @hoverend, false
|
||||
@root.removeEventListener 'mousemove', @hover, false
|
||||
@root.removeEventListener 'mousemove', @mousemove, false
|
||||
@root.removeEventListener event, @hoverend, false
|
||||
@root.removeEventListener 'mousemove', @hover, false
|
||||
clearTimeout @timeout
|
||||
@cb.call @ if @cb
|
||||
|
||||
|
||||
@ -1768,7 +1768,7 @@ QuotePreview =
|
||||
UI.hover
|
||||
root: @
|
||||
el: qp
|
||||
initialEvent: e
|
||||
latestEvent: e
|
||||
endEvents: 'mouseout click'
|
||||
cb: QuotePreview.mouseout
|
||||
asapTest: -> qp.firstElementChild
|
||||
@ -2313,7 +2313,7 @@ ImageHover =
|
||||
UI.hover
|
||||
root: @
|
||||
el: el
|
||||
initialEvent: e
|
||||
latestEvent: e
|
||||
endEvents: 'mouseout click'
|
||||
asapTest: -> el.naturalHeight
|
||||
$.on el, 'error', ImageHover.error
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user