From 7f1c8fbb4b5da87665a50f7991ed6d1dbd2b2c29 Mon Sep 17 00:00:00 2001 From: Nicolas Stepien Date: Thu, 14 Jun 2012 21:15:48 +0200 Subject: [PATCH] Fix file input on Opera not being reset in QR.resetFileInput. --- 4chan_x.user.js | 22 +++++++++++++++++++++- script.coffee | 15 ++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/4chan_x.user.js b/4chan_x.user.js index a90efaf85..68c5ef589 100644 --- a/4chan_x.user.js +++ b/4chan_x.user.js @@ -1630,7 +1630,27 @@ return QR.resetFileInput(); }, resetFileInput: function() { - return $('[type=file]', QR.el).value = null; + var clone, input; + input = $('[type=file]', QR.el); + input.value = null; + if ($.engine !== 'presto') { + return; + } + clone = $.el('input', { + type: 'file', + accept: input.accept, + max: input.max, + multiple: input.multiple, + size: input.size, + title: input.title + }); + $.on(clone, 'change', QR.fileInput); + $.on(clone, 'click', function(e) { + if (e.shiftKey) { + return QR.selected.rmFile() || e.preventDefault(); + } + }); + return $.replace(input, clone); }, replies: [], reply: (function() { diff --git a/script.coffee b/script.coffee index 8de6a1cf0..1f4d78d9d 100644 --- a/script.coffee +++ b/script.coffee @@ -1207,7 +1207,20 @@ QR = $.addClass QR.el, 'dump' QR.resetFileInput() # reset input resetFileInput: -> - $('[type=file]', QR.el).value = null + input = $ '[type=file]', QR.el + input.value = null + return unless $.engine is 'presto' + # XXX Opera needs extra care to reset its file input's value + clone = $.el 'input', + type: 'file' + accept: input.accept + max: input.max + multiple: input.multiple + size: input.size + title: input.title + $.on clone, 'change', QR.fileInput + $.on clone, 'click', (e) -> if e.shiftKey then QR.selected.rmFile() or e.preventDefault() + $.replace input, clone replies: [] reply: class