From c67e7e8f85ae9c05d1a04715d2a9ce7e84a50a45 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Thu, 17 Dec 2015 09:32:18 -0500 Subject: [PATCH] Fix PDF support detection in Firefox > 19 (#1490610) --- program/js/list.js | 53 ++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 36 insertions(+), 17 deletions(-) diff --git a/program/js/list.js b/program/js/list.js index 9c41a12..de2be7a 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -114,7 +114,8 @@ var r, len, rows = this.tbody.childNodes; for (r=0, len=rows.length; r<len; r++) { - this.rowcount += this.init_row(rows[r]) ? 1 : 0; + if (rows[r].nodeType == 1) + this.rowcount += this.init_row(rows[r]) ? 1 : 0; } this.init_header(); @@ -150,9 +151,15 @@ var self = this, uid = row.uid; this.rows[uid] = {uid:uid, id:row.id, obj:row}; - // set eventhandlers to table row (only left-button-clicks in mouseup) - $(row).mousedown(function(e) { return self.drag_row(e, this.uid); }) - .mouseup(function(e) { if (e.which == 1) return self.click_row(e, this.uid); }); + $(row).data('uid', uid) + // set eventhandlers to table row (only left-button-clicks in mouseup) + .mousedown(function(e) { return self.drag_row(e, this.uid); }) + .mouseup(function(e) { + if (e.which == 1 && !self.drag_active) + return self.click_row(e, this.uid); + else + return true; + }); if (bw.touch && row.addEventListener) { row.addEventListener('touchstart', function(e) { @@ -243,9 +250,10 @@ $(window).resize(function() { me.resize(); }); $(window).scroll(function() { var w = $(window); - me.fixed_header.css('marginLeft', (-w.scrollLeft()) + 'px'); - if (!bw.webkit) - me.fixed_header.css('marginTop', (-w.scrollTop()) + 'px'); + me.fixed_header.css({ + marginLeft: -w.scrollLeft() + 'px', + marginTop: -w.scrollTop() + 'px' + }); }); } else { @@ -349,10 +357,11 @@ if (row.nodeName === undefined) { // for performance reasons use DOM instead of jQuery here var domrow = document.createElement(this.row_tagname()); + if (row.id) domrow.id = row.id; + if (row.uid) domrow.uid = row.uid; if (row.className) domrow.className = row.className; if (row.style) $.extend(domrow.style, row.style); - if (row.uid) $(domrow).data('uid', String(row.uid)); // #1489906 for (var e, domcell, col, i=0; row.cols && i < row.cols.length; i++) { col = row.cols[i]; @@ -388,18 +397,22 @@ var row = this.rows[id]; if (!row) return false; - var domrow = row.obj; - for (var domcell, col, i=0; cols && i < cols.length; i++) { + var i, domrow = row.obj; + for (i = 0; cols && i < cols.length; i++) { this.get_cell(domrow, i).html(cols[i]); } if (newid) { delete this.rows[id]; + domrow.uid = newid; domrow.id = 'rcmrow' + newid; this.init_row(domrow); if (select) this.selection[0] = newid; + + if (this.last_selected == id) + this.last_selected = newid; } }, @@ -559,6 +572,10 @@ */ click_row: function(e, id) { + // sanity check + if (!id || !this.rows[id]) + return false; + // don't do anything (another action processed before) if (!this.is_event_target(e)) return true; @@ -816,14 +833,16 @@ get_row_uid: function(row) { - if (row && row.uid) - return row.uid; + if (!row) + return; - var uid; - if (row && (uid = $(row).data('uid'))) - row.uid = uid; - else if (row && String(row.id).match(this.id_regexp)) - row.uid = RegExp.$1; + if (!row.uid) { + var uid = $(row).data('uid'); + if (uid) + row.uid = uid; + else if (String(row.id).match(this.id_regexp)) + row.uid = RegExp.$1; + } return row.uid; }, -- Gitblit v1.9.1