From 2f8b1036da42ec3d15a51c6b17a473f9f4df71d3 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <bruederli@kolabsys.com> Date: Sat, 07 Feb 2015 12:33:24 -0500 Subject: [PATCH] Bump version and copyright year --- program/js/list.js | 48 ++++++++++++++++++++++++++++++------------------ 1 files changed, 30 insertions(+), 18 deletions(-) diff --git a/program/js/list.js b/program/js/list.js index 5492c0a..9a7f284 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -61,12 +61,13 @@ this.keyboard = false; this.toggleselect = false; this.aria_listbox = false; + this.parent_focus = true; this.drag_active = false; this.col_drag_active = false; this.column_fixed = null; - this.last_selected = 0; - this.shift_start = 0; + this.last_selected = null; + this.shift_start = null; this.focused = false; this.drag_mouse_start = null; this.dblclick_time = 500; // default value on MS Windows is 500 @@ -104,11 +105,13 @@ $(this.list).attr('aria-multiselectable', 'true'); } + var me = this; + if (this.tbody) { this.rows = {}; this.rowcount = 0; - var r, len, rows = this.tbody.childNodes, me = this; + 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; @@ -127,6 +130,10 @@ } } + if (this.parent_focus) { + this.list.parentNode.onclick = function(e) { me.focus(); }; + } + return this; }, @@ -143,11 +150,11 @@ var self = this, uid = row.uid; this.rows[uid] = {uid:uid, id:row.id, obj:row}; - // set eventhandlers to table row + // set eventhandlers to table row (only left-button-clicks in mouseup) row.onmousedown = function(e){ return self.drag_row(e, this.uid); }; - row.onmouseup = function(e){ return self.click_row(e, this.uid); }; + row.onmouseup = function(e){ if (e.which == 1) return self.click_row(e, this.uid); }; - if (bw.touch) { + if (bw.touch && row.addEventListener) { row.addEventListener('touchstart', function(e) { if (e.touches.length == 1) { self.touchmoved = false; @@ -212,7 +219,7 @@ if (this.column_fixed == r) continue; col = this.thead.rows[0].cells[r]; - col.onmousedown = function(e){ return p.drag_column(e, this); }; + col.onmousedown = function(e) { return p.drag_column(e, this); }; this.colcount++; } } @@ -233,8 +240,8 @@ $(this.list).before(this.fixed_header); var me = this; - $(window).resize(function(){ me.resize() }); - $(window).scroll(function(){ + $(window).resize(function() { me.resize(); }); + $(window).scroll(function() { var w = $(window); me.fixed_header.css('marginLeft', (-w.scrollLeft()) + 'px'); if (!bw.webkit) @@ -263,14 +270,14 @@ var column_widths = []; // get column widths from original thead - $(this.tbody).parent().find('thead tr td').each(function(index) { + $(this.tbody).parent().find('thead th,thead td').each(function(index) { column_widths[index] = $(this).width(); }); // apply fixed widths to fixed table header $(this.thead).parent().width($(this.tbody).parent().width()); - $(this.thead).find('tr td').each(function(index) { - $(this).css('width', column_widths[index]); + $(this.thead).find('th,td').each(function(index) { + $(this).width(column_widths[index]); }); $(window).scroll(); @@ -293,7 +300,7 @@ this.rows = {}; this.rowcount = 0; - this.last_selected = 0; + this.last_selected = null; if (sel) this.clear_selection(); @@ -939,13 +946,13 @@ this.multi_selecting = true; } - if (this.last_selected != 0 && this.rows[this.last_selected]) { + if (this.last_selected && this.rows[this.last_selected]) { $(this.rows[this.last_selected].obj).removeClass('focused') .find(this.col_tagname()).eq(this.subject_col).removeAttr('tabindex'); } // unselect if toggleselect is active and the same row was clicked again - if (this.toggleselect && in_selection_before) { + if (this.toggleselect && in_selection_before && !mod_key) { this.clear_selection(); } // trigger event if selection changed @@ -1171,7 +1178,7 @@ if (num_select && !this.selection.length && !no_event) { this.triggerEvent('select'); - this.last_selected = 0; + this.last_selected = null; } }, @@ -1410,7 +1417,8 @@ */ scrollto: function(id) { - var row = this.rows[id].obj; + var row = this.rows[id] ? this.rows[id].obj : null; + if (row && this.frame) { var scroll_to = Number(row.offsetTop), head_offset = 0; @@ -1499,7 +1507,11 @@ $('> ' + self.col_tagname(), self.rows[uid].obj).each(function(n, cell) { if (self.subject_col < 0 || (self.subject_col >= 0 && self.subject_col == n)) { - var subject = $(cell).text(); + // remove elements marked with "skip-on-drag" class + cell = $(cell).clone(); + $(cell).find('.skip-on-drag').remove(); + + var subject = cell.text(); if (subject) { // remove leading spaces -- Gitblit v1.9.1