Shrink other dragged tabs while dragging

This commit is contained in:
YUKI Hiroshi 2016-09-13 12:30:03 +09:00
parent dad60acec3
commit df530ca62c

View File

@ -15,7 +15,7 @@
http://github.com/piroor/fxaddonlib-tabs-drag-utils http://github.com/piroor/fxaddonlib-tabs-drag-utils
*/ */
(function() { (function() {
const currentRevision = 41; const currentRevision = 42;
if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {}; if (!('piro.sakura.ne.jp' in window)) window['piro.sakura.ne.jp'] = {};
@ -432,7 +432,31 @@ TDUContext.destroy();
}, },
updateDraggedTabs : function TDU_updateDraggedTabs(context) updateDraggedTabs : function TDU_updateDraggedTabs(context)
{ {
context.draggedTabs.forEach(function(draggedTab) { context.draggedTabs.forEach(function(draggedTab, aIndex) {
if (aIndex > 0) {
let style = draggedTab.style;
if (!draggedTab.__tabsDragUtils__backupStyle) {
let backup = {
overflow : {
value : style.getPropertyValue('overflow'),
priority : style.getPropertyPriority('overflow')
}
};
backup['max-'+context.rowSize] = {
value : style.getPropertyValue('max-'+context.rowSize),
priority : style.getPropertyPriority('max-'+context.rowSize)
};
backup['min-'+context.rowSize] = {
value : style.getPropertyValue('min-'+context.rowSize),
priority : style.getPropertyPriority('min-'+context.rowSize)
};
draggedTab.__tabsDragUtils__backupStyle = backup;
}
let size = draggedTab.boxObject[context.rowSize] * 0.1;
style.setProperty('max-'+context.rowSize, size + 'px', 'important');
style.setProperty('min-'+context.rowSize, size + 'px', 'important');
style.setProperty('overflow', 'hidden', 'important');
}
draggedTab._dragData.animLastScreenX = context.currentPositionCoordinate; draggedTab._dragData.animLastScreenX = context.currentPositionCoordinate;
}, this); }, this);
}, },
@ -604,6 +628,9 @@ TDUContext.destroy();
} }
aEvent.stopPropagation(); aEvent.stopPropagation();
document.addEventListener('dragend', this, true);
document.addEventListener('drop', this, true);
}, },
isVertical : function TDS_isVertical(aElement) isVertical : function TDS_isVertical(aElement)
{ {
@ -729,6 +756,22 @@ TDUContext.destroy();
return false; return false;
}, },
clearDraggingStyles : function TDU_clearDraggingStyles(aEvent)
{
var tabbar = this.getTabbarFromEvent(aEvent);
Array.forEach(tabbar.childNodes, function(aTab) {
let backup = aTab.__tabsDragUtils__backupStyle;
if (!backup)
return;
let style = aTab.style;
Object.keys(backup).forEach(function(aKey) {
style.setProperty(aKey, backup[aKey].value, backup[aKey].priority);
});
delete aTab.__tabsDragUtils__backupStyle;
}, this);
},
isTabsDragging : function TDU_isTabsDragging(aEvent) isTabsDragging : function TDU_isTabsDragging(aEvent)
{ {
if (!aEvent) if (!aEvent)
@ -836,6 +879,12 @@ TDUContext.destroy();
{ {
case 'load': case 'load':
return this._delayedInit(); return this._delayedInit();
case 'dragend':
case 'drop':
document.removeEventListener('dragend', this, true);
document.removeEventListener('drop', this, true);
return this.clearDraggingStyles(aEvent);
} }
}, },