Don't stop dragging elements when starting to hover. Also some fixes with hovering elements stuck.

This commit is contained in:
Nicolas Stepien 2012-06-01 21:11:43 +02:00
parent f15b920850
commit 7836381564
2 changed files with 48 additions and 22 deletions

View File

@ -255,9 +255,6 @@
}
},
hoverend: function() {
if (!UI.el) {
return;
}
$.rm(UI.el);
return delete UI.el;
}
@ -3230,7 +3227,15 @@
if (/\binlined\b/.test(this.className)) {
return;
}
UI.hoverend();
if (qp = $.id('qp')) {
if (qp === UI.el) {
delete UI.el;
}
$.rm(qp);
}
if (UI.el) {
return;
}
qp = UI.el = $.el('div', {
id: 'qp',
className: 'post reply dialog'
@ -3675,19 +3680,28 @@
return $.on(post.img, 'mouseover', ImageHover.mouseover);
},
mouseover: function() {
UI.hoverend();
UI.el = $.el('img', {
var el;
if (el = $.id('ihover')) {
if (el === UI.el) {
delete UI.el;
}
$.rm(el);
}
if (UI.el) {
return;
}
el = UI.el = $.el('img', {
id: 'ihover',
src: this.parentNode.href
});
$.add(d.body, UI.el);
$.on(UI.el, 'load', ImageHover.load);
$.add(d.body, el);
$.on(el, 'load', ImageHover.load);
$.on(this, 'mousemove', UI.hover);
return $.on(this, 'mouseout', ImageHover.mouseout);
},
load: function() {
var style;
if (this !== UI.el) {
if (!this.parentNode) {
return;
}
style = this.style;

View File

@ -225,9 +225,7 @@ UI =
else
style.left = null
style.right = clientWidth - clientX + 45 + 'px'
hoverend: ->
return unless UI.el
$.rm UI.el
delete UI.el
@ -2445,8 +2443,15 @@ QuotePreview =
mouseover: (e) ->
return if /\binlined\b/.test @className
# Make sure to remove the previous UI.el
UI.hoverend()
# Make sure to remove the previous qp
# in case it got stuck. Opera-only bug?
if qp = $.id 'qp'
if qp is UI.el
delete UI.el
$.rm qp
# Don't stop other elements from dragging
return if UI.el
qp = UI.el = $.el 'div',
id: 'qp'
@ -2482,7 +2487,7 @@ QuotePreview =
$.removeClass el.parentNode, 'qphl'
else
$.removeClass el, 'qphl'
$.off @, 'mousemove', UI.hover
$.off @, 'mousemove', UI.hover
$.off @, 'mouseout click', QuotePreview.mouseout
parse: (req, id) ->
return unless (qp = UI.el) and qp.textContent is "Loading #{id}..."
@ -2789,18 +2794,25 @@ ImageHover =
return unless post.img
$.on post.img, 'mouseover', ImageHover.mouseover
mouseover: ->
# Make sure to remove the previous UI.el
UI.hoverend()
# Make sure to remove the previous image hover
# in case it got stuck. Opera-only bug?
if el = $.id 'ihover'
if el is UI.el
delete UI.el
$.rm el
UI.el = $.el 'img'
# Don't stop other elements from dragging
return if UI.el
el = UI.el = $.el 'img'
id: 'ihover'
src: @parentNode.href
$.add d.body, UI.el
$.on UI.el, 'load', ImageHover.load
$.on @, 'mousemove', UI.hover
$.on @, 'mouseout', ImageHover.mouseout
$.add d.body, el
$.on el, 'load', ImageHover.load
$.on @, 'mousemove', UI.hover
$.on @, 'mouseout', ImageHover.mouseout
load: ->
return if @ isnt UI.el
return unless @parentNode
# 'Fake' mousemove event by giving required values.
{style} = @
UI.hover