From e32da281bb796431d700e39e4ab10b94e3038ee7 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Tue, 05 Aug 2014 07:45:20 -0400 Subject: [PATCH] Make possible to skip some elements from subject cell when creating text for drag layer --- program/js/list.js | 27 +++++++++++++++++++-------- 1 files changed, 19 insertions(+), 8 deletions(-) diff --git a/program/js/list.js b/program/js/list.js index 5492c0a..65e09e8 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; @@ -125,6 +128,10 @@ $(this.list).attr('tabindex', '0') .on('focus', function(e){ me.focus(e); }); } + } + + if (this.parent_focus) { + this.list.parentNode.onclick = function(e) { me.focus(e); }; } return this; @@ -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; } }, @@ -1499,7 +1506,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