From bd2f0d66b7e569e25ca313e26a0a609db9eb1d11 Mon Sep 17 00:00:00 2001 From: James Campos Date: Mon, 13 Jun 2011 17:35:12 -0700 Subject: [PATCH 1/4] simpler de-lightboxing --- 4chan_x.user.js | 12 +++++------- script.coffee | 6 +++--- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index f38c41f10..15339b375 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -957,7 +957,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,15 +1004,13 @@ } $.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')); diff --git a/script.coffee b/script.coffee index 19adb312a..92a359599 100644 --- a/script.coffee +++ b/script.coffee @@ -786,14 +786,14 @@ 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' From 2f58049f658e97fccf7f2f07807be83f3e9e41ba Mon Sep 17 00:00:00 2001 From: James Campos Date: Mon, 13 Jun 2011 17:42:18 -0700 Subject: [PATCH 2/4] hotykey: Esc: rm options --- 4chan_x.user.js | 5 +++++ script.coffee | 2 ++ 2 files changed, 7 insertions(+) diff --git a/4chan_x.user.js b/4chan_x.user.js index 15339b375..a95fecb43 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -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': diff --git a/script.coffee b/script.coffee index 92a359599..d630bc8c8 100644 --- a/script.coffee +++ b/script.coffee @@ -539,6 +539,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' From f833fc75759221ee4300ad8bcca5ae0693096118 Mon Sep 17 00:00:00 2001 From: James Campos Date: Mon, 13 Jun 2011 17:43:19 -0700 Subject: [PATCH 3/4] cleanup --- 4chan_x.user.js | 3 +-- script.coffee | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index a95fecb43..87ebd3c3c 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1019,8 +1019,7 @@ }, 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 d630bc8c8..f963f7456 100644 --- a/script.coffee +++ b/script.coffee @@ -800,7 +800,6 @@ options = rm: -> $.rm $ '#options' $.rm $ '.overlay' - window.removeEventListener 'mousedown', options.rm, false tab: -> content = $$ '#main, #flavors, #time' From 4292e762c03b9e0e6b5b11616e9625ac137af139 Mon Sep 17 00:00:00 2001 From: James Campos Date: Mon, 13 Jun 2011 18:04:18 -0700 Subject: [PATCH 4/4] event listeners - useCapture: false jquery does it this way, one listener required it. --- 4chan_x.user.js | 14 +++++++------- script.coffee | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index 87ebd3c3c..bf580e1f5 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() { /* diff --git a/script.coffee b/script.coffee index f963f7456..f079037b3 100644 --- a/script.coffee +++ b/script.coffee @@ -84,15 +84,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() @@ -125,8 +125,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 @@ -233,9 +233,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 ###