Index: Source/devtools/front_end/elements/Spectrum.js |
diff --git a/Source/devtools/front_end/elements/Spectrum.js b/Source/devtools/front_end/elements/Spectrum.js |
index 083c394c4d4038449fc0dd211fa986da395caf58..1d3ecc5633f81824ef4c502a8530a24fc7441816 100644 |
--- a/Source/devtools/front_end/elements/Spectrum.js |
+++ b/Source/devtools/front_end/elements/Spectrum.js |
@@ -258,8 +258,6 @@ WebInspector.Spectrum.prototype = { |
if (palette.mutable) |
numItems++; |
var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum._itemsPerPaletteRow)); |
- for (var i = 0; palette.mutable && i < rowsNeeded * WebInspector.Spectrum._itemsPerPaletteRow - numItems; i++) |
- this._paletteContainer.createChild("div", "spectrum-palette-color empty-color"); |
if (palette.mutable) |
this.contentElement.appendChild(this._addColorToolbar.element); |
else |
@@ -313,13 +311,28 @@ WebInspector.Spectrum.prototype = { |
var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPaletteRow) * WebInspector.Spectrum._colorChipSize; |
var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPaletteRow | 0) * WebInspector.Spectrum._colorChipSize; |
- this._dragElement.style.position = "relative"; |
- this._dragElement.style.left = (offsetX - this._dragHotSpotX) + "px"; |
- this._dragElement.style.top = (offsetY - this._dragHotSpotY) + "px"; |
+ this._dragElement.style.transform = "translateX(" + (offsetX - this._dragHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; |
var children = Array.prototype.slice.call(this._paletteContainer.children); |
var index = children.indexOf(this._dragElement); |
+ /** @type {!Map.<!Element, {left: number, top: number}>} */ |
+ var swatchOffsets = new Map(); |
+ for (var swatch of children) |
+ swatchOffsets.set(swatch, swatch.totalOffset()); |
+ |
if (index !== newIndex) |
this._paletteContainer.insertBefore(this._dragElement, children[newIndex > index ? newIndex + 1 : newIndex]); |
+ |
+ for (var swatch of children) { |
+ if (swatch === this._dragElement) |
+ continue; |
+ var before = swatchOffsets.get(swatch); |
+ var after = swatch.totalOffset(); |
+ if (before.left !== after.left || before.top !== after.top) { |
+ swatch.animate([ |
+ { transform: "translateX(" + (before.left - after.left) + "px) translateY(" + (before.top - after.top) + "px)" }, |
+ { transform: "none" }], { duration: 100, easing: "cubic-bezier(0, 0, 0.2, 1)" }); |
+ } |
+ } |
}, |
/** |
@@ -327,9 +340,7 @@ WebInspector.Spectrum.prototype = { |
*/ |
_paletteDragEnd: function(e) |
{ |
- this._dragElement.style.removeProperty("position"); |
- this._dragElement.style.removeProperty("left"); |
- this._dragElement.style.removeProperty("top"); |
+ this._dragElement.style.removeProperty("transform"); |
var children = this._paletteContainer.children; |
var colors = []; |
for (var i = 0; i < children.length; ++i) { |