Fix bug when resizing HTML table columns.

Monotone-Parent: ebecad29c1790b7953cfe00229ae3666abb9f896
Monotone-Revision: cff34552be80b43b382bf21a61aea5efb44ca8ab

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2009-06-08T19:24:28
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Francis Lachapelle 2009-06-08 19:24:28 +00:00
parent 9c394ac8e6
commit d4a8f3198f

View file

@ -3,6 +3,7 @@
* Copyright (c) 2007 Andrew Tetlaw & Millstream Web Software * Copyright (c) 2007 Andrew Tetlaw & Millstream Web Software
* http://www.millstream.com.au/view/code/tablekit/ * http://www.millstream.com.au/view/code/tablekit/
* Version: 1.3b 2008-03-23 * Version: 1.3b 2008-03-23
* Modified and improved by Inverse inc.
* *
* Permission is hereby granted, free of charge, to any person * Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation * obtaining a copy of this software and associated documentation
@ -342,7 +343,7 @@ TableKit.Sortable = {
if(TableKit.Resizable._onHandle) {return;} if(TableKit.Resizable._onHandle) {return;}
e = TableKit.e(e); e = TableKit.e(e);
Event.stop(e); Event.stop(e);
var cell = Event.element(e); var cell = e.element();
while(!(cell.tagName && cell.tagName.match(/td|th/gi))) { while(!(cell.tagName && cell.tagName.match(/td|th/gi))) {
cell = cell.parentNode; cell = cell.parentNode;
} }
@ -616,7 +617,7 @@ TableKit.Resizable = {
TableKit.register(table,Object.extend(options || {},{resizable:true})); TableKit.register(table,Object.extend(options || {},{resizable:true}));
var cells = TableKit.getHeaderCells(table); var cells = TableKit.getHeaderCells(table);
cells.each(function(c){ cells.each(function(c){
c = $(c); c = $(c);
Event.observe(c, 'mouseover', TableKit.Resizable.initDetect); Event.observe(c, 'mouseover', TableKit.Resizable.initDetect);
Event.observe(c, 'mouseout', TableKit.Resizable.killDetect); Event.observe(c, 'mouseout', TableKit.Resizable.killDetect);
}); });
@ -641,15 +642,15 @@ TableKit.Resizable = {
cell.setStyle({'width' : w + 'px'}); cell.setStyle({'width' : w + 'px'});
}, },
initDetect : function(e) { initDetect : function(e) {
e = TableKit.e(e); var cell = e.element();
var cell = Event.element(e); if (cell.tagName != "TD") {return;}
Event.observe(cell, 'mousemove', TableKit.Resizable.detectHandle); Event.observe(cell, 'mousemove', TableKit.Resizable.detectHandle);
Event.observe(cell, 'mousedown', TableKit.Resizable.startResize); Event.observe(cell, 'mousedown', TableKit.Resizable.startResize);
}, },
detectHandle : function(e) { detectHandle : function(e) {
e = TableKit.e(e); e = TableKit.e(e);
var cell = Event.element(e); var cell = e.element();
if(TableKit.Resizable.pointerPos(cell,Event.pointerX(e),Event.pointerY(e))){ if(TableKit.Resizable.pointerPos(cell,Event.pointerX(e),Event.pointerY(e))){
cell.addClassName(TableKit.option('resizeOnHandleClass', cell.up('table').id)[0]); cell.addClassName(TableKit.option('resizeOnHandleClass', cell.up('table').id)[0]);
TableKit.Resizable._onHandle = true; TableKit.Resizable._onHandle = true;
} else { } else {
@ -658,17 +659,15 @@ TableKit.Resizable = {
} }
}, },
killDetect : function(e) { killDetect : function(e) {
e = TableKit.e(e);
TableKit.Resizable._onHandle = false; TableKit.Resizable._onHandle = false;
var cell = Event.element(e); var cell = e.element();
Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle); Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle);
Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize); Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize);
cell.removeClassName(TableKit.option('resizeOnHandleClass', cell.up('table').id)[0]); cell.removeClassName(TableKit.option('resizeOnHandleClass', cell.up('table').id)[0]);
}, },
startResize : function(e) { startResize : function(e) {
e = TableKit.e(e); if(!TableKit.Resizable._onHandle) {return;}
if(!TableKit.Resizable._onHandle) {return;} var cell = e.element();
var cell = Event.element(e);
Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle); Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle);
Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize); Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize);
Event.stopObserving(cell, 'mouseout', TableKit.Resizable.killDetect); Event.stopObserving(cell, 'mouseout', TableKit.Resizable.killDetect);
@ -688,15 +687,16 @@ TableKit.Resizable = {
Event.stop(e); Event.stop(e);
}, },
endResize : function(e) { endResize : function(e) {
e = TableKit.e(e); e = TableKit.e(e);
var cell = TableKit.Resizable._cell; var cell = TableKit.Resizable._cell;
if (!cell) {return;}
TableKit.Resizable.resize(null, cell, (Event.pointerX(e) - cell.cumulativeOffset()[0])); TableKit.Resizable.resize(null, cell, (Event.pointerX(e) - cell.cumulativeOffset()[0]));
Event.stopObserving(document, 'mousemove', TableKit.Resizable.drag); Event.stopObserving(document, 'mousemove', TableKit.Resizable.drag);
Event.stopObserving(document, 'mouseup', TableKit.Resizable.endResize); Event.stopObserving(document, 'mouseup', TableKit.Resizable.endResize);
if(TableKit.option('showHandle', TableKit.Resizable._tbl.id)[0]) { if(TableKit.option('showHandle', TableKit.Resizable._tbl.id)[0]) {
$$('div.resize-handle').each(function(elm){ $$('div.resize-handle').each(function(elm){
document.body.removeChild(elm); document.body.removeChild(elm);
}); });
} }
Event.observe(cell, 'mouseout', TableKit.Resizable.killDetect); Event.observe(cell, 'mouseout', TableKit.Resizable.killDetect);
TableKit.Resizable._tbl = TableKit.Resizable._handle = TableKit.Resizable._cell = null; TableKit.Resizable._tbl = TableKit.Resizable._handle = TableKit.Resizable._cell = null;