diff --git a/4chan_x.user.js b/4chan_x.user.js index 4af4a15e0..874d73bac 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -169,7 +169,7 @@ if ((_ref4 = el.querySelector('div.move a[name=close]')) != null) { _ref4.addEventListener('click', (function() { return el.parentNode.removeChild(el); - }), true); + }), false); } return el; }, @@ -178,8 +178,8 @@ e.preventDefault(); ui.el = el = this.parentNode; d = document; - d.addEventListener('mousemove', ui.drag, true); - d.addEventListener('mouseup', ui.dragend, true); + d.addEventListener('mousemove', ui.drag, false); + d.addEventListener('mouseup', ui.dragend, false); rect = el.getBoundingClientRect(); ui.dx = e.clientX - rect.left; ui.dy = e.clientY - rect.top; @@ -216,8 +216,8 @@ localStorage["" + id + "Left"] = el.style.left; localStorage["" + id + "Top"] = el.style.top; d = document; - d.removeEventListener('mousemove', ui.drag, true); - return d.removeEventListener('mouseup', ui.dragend, true); + d.removeEventListener('mousemove', ui.drag, false); + return d.removeEventListener('mouseup', ui.dragend, false); }, hover: function(e) { var bot, clientHeight, clientWidth, clientX, clientY, el, height, top, _ref; @@ -371,10 +371,10 @@ return el; }, bind: function(el, eventType, handler) { - return el.addEventListener(eventType, handler, true); + return el.addEventListener(eventType, handler, false); }, unbind: function(el, eventType, handler) { - return el.removeEventListener(eventType, handler, true); + return el.removeEventListener(eventType, handler, false); }, isDST: function() { /* @@ -745,6 +745,11 @@ var thread; thread = nav.getThread(); switch (keybinds.key) { + case '': + if ($('#options')) { + return options.rm(); + } + break; case '0': return window.location = "/" + g.BOARD + "/0#0"; case 'I': @@ -957,7 +962,7 @@ } }, dialog: function() { - var arr, checked, description, dialog, hiddenNum, hiddenThreads, html, input, key, li, link, main, obj, ul, _i, _j, _len, _len2, _ref, _ref2, _ref3; + var arr, checked, description, dialog, hiddenNum, hiddenThreads, html, input, key, li, link, main, obj, overlay, ul, _i, _j, _len, _len2, _ref, _ref2, _ref3; hiddenThreads = $.getValue("hiddenThreads/" + g.BOARD + "/", {}); hiddenNum = Object.keys(g.hiddenReplies).length + Object.keys(hiddenThreads).length; html = "

"; @@ -1004,20 +1009,17 @@ } $.bind($('textarea[name=flavors]', dialog), 'change', $.cb.value); $.bind($('input[name=time]', dialog), 'keyup', options.cb.time); - $.append(d.body, $.el('div', { + overlay = $.el('div', { className: 'overlay' - })); + }); + $.append(d.body, overlay); $.append(d.body, dialog); options.cb.time.call($('input[name=time]', dialog)); - dialog.addEventListener('mousedown', (function(e) { - return e.stopPropagation(); - }), false); - return window.addEventListener('mousedown', options.rm, false); + return $.bind(overlay, 'click', options.rm); }, rm: function() { $.rm($('#options')); - $.rm($('.overlay')); - return window.removeEventListener('mousedown', options.rm, false); + return $.rm($('.overlay')); }, tab: function() { var content, div, _i, _len, _results; diff --git a/script.coffee b/script.coffee index 10ca1819e..d0aa93f10 100644 --- a/script.coffee +++ b/script.coffee @@ -85,15 +85,15 @@ ui = if top then el.style.top = top else el.style.bottom = '0px' el.querySelector('div.move')?.addEventListener 'mousedown', ui.dragstart, false el.querySelector('div.move a[name=close]')?.addEventListener 'click', - (-> el.parentNode.removeChild(el)), true + (-> el.parentNode.removeChild(el)), false el dragstart: (e) -> #prevent text selection e.preventDefault() ui.el = el = @parentNode d = document - d.addEventListener 'mousemove', ui.drag, true - d.addEventListener 'mouseup', ui.dragend, true + d.addEventListener 'mousemove', ui.drag, false + d.addEventListener 'mouseup', ui.dragend, false #distance from pointer to el edge is constant; calculate it here. # XXX opera reports el.offsetLeft / el.offsetTop as 0 rect = el.getBoundingClientRect() @@ -126,8 +126,8 @@ ui = localStorage["#{id}Left"] = el.style.left localStorage["#{id}Top"] = el.style.top d = document - d.removeEventListener 'mousemove', ui.drag, true - d.removeEventListener 'mouseup', ui.dragend, true + d.removeEventListener 'mousemove', ui.drag, false + d.removeEventListener 'mouseup', ui.dragend, false hover: (e) -> {clientX, clientY} = e {el} = ui @@ -234,9 +234,9 @@ $.extend $, $.extend el, properties if properties el bind: (el, eventType, handler) -> - el.addEventListener eventType, handler, true + el.addEventListener eventType, handler, false unbind: (el, eventType, handler) -> - el.removeEventListener eventType, handler, true + el.removeEventListener eventType, handler, false isDST: -> # XXX this should check for DST in NY ### @@ -540,6 +540,8 @@ keybinds = normal: (e) -> thread = nav.getThread() switch keybinds.key + when '' + options.rm() if $ '#options' when '0' window.location = "/#{g.BOARD}/0#0" when 'I' @@ -787,19 +789,18 @@ options = $.bind $('textarea[name=flavors]', dialog), 'change', $.cb.value $.bind $('input[name=time]', dialog), 'keyup', options.cb.time - $.append d.body, $.el 'div', className: 'overlay' + overlay = $.el 'div', className: 'overlay' + $.append d.body, overlay $.append d.body, dialog options.cb.time.call $('input[name=time]', dialog) - dialog.addEventListener 'mousedown', ((e) -> e.stopPropagation()), false - window.addEventListener 'mousedown', options.rm, false + $.bind overlay, 'click', options.rm rm: -> $.rm $ '#options' $.rm $ '.overlay' - window.removeEventListener 'mousedown', options.rm, false tab: -> content = $$ '#main, #flavors, #time'