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 0706e849ae3c31fc247a8a3aaba4e9468eaa47d8..18f87460f3da6fe3364247e75da3e9da88ae4bc8 100644 |
--- a/Source/devtools/front_end/elements/Spectrum.js |
+++ b/Source/devtools/front_end/elements/Spectrum.js |
@@ -113,6 +113,12 @@ WebInspector.Spectrum = function() |
var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palette-switcher spectrum-switcher"); |
appendSwitcherIcon(paletteSwitcher); |
paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this, true)); |
+ |
+ this._deleteIconToolbar = new WebInspector.Toolbar(); |
+ this._deleteIconToolbar.element.classList.add("delete-color-toolbar"); |
+ this._deleteButton = new WebInspector.ToolbarButton("", "garbage-collect-toolbar-item"); |
+ this._deleteIconToolbar.appendToolbarItem(this._deleteButton); |
+ |
var overlay = this.contentElement.createChild("div", "spectrum-overlay fill"); |
overlay.addEventListener("click", this._togglePalettePanel.bind(this, false)); |
@@ -258,10 +264,13 @@ WebInspector.Spectrum.prototype = { |
if (palette.mutable) |
numItems++; |
var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum._itemsPerPaletteRow)); |
- if (palette.mutable) |
- this.contentElement.appendChild(this._addColorToolbar.element); |
- else |
+ if (palette.mutable) { |
+ this._paletteContainer.appendChild(this._addColorToolbar.element); |
+ this._paletteContainer.appendChild(this._deleteIconToolbar.element); |
+ } else { |
this._addColorToolbar.element.remove(); |
+ this._deleteIconToolbar.element.remove(); |
+ } |
this._togglePalettePanel(false); |
var paletteColorHeight = 12; |
@@ -280,7 +289,16 @@ WebInspector.Spectrum.prototype = { |
var localY = e.pageY - this._paletteContainer.totalOffsetTop(); |
var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, WebInspector.Spectrum._itemsPerPaletteRow - 1); |
var row = (localY / WebInspector.Spectrum._colorChipSize) | 0; |
- return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, this._paletteContainer.children.length - 1); |
+ return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, this._customPaletteSetting.get().colors.length - 1); |
+ }, |
+ |
+ /** |
+ * @param {!Event} e |
+ * @return {boolean} |
+ */ |
+ _isDraggingToBin: function(e) |
+ { |
+ return e.pageX > this._deleteIconToolbar.element.totalOffsetLeft(); |
}, |
/** |
@@ -290,13 +308,15 @@ WebInspector.Spectrum.prototype = { |
_paletteDragStart: function(e) |
{ |
var element = e.deepElementFromPoint(); |
- if (!element.__mutable) |
+ if (!element || !element.__mutable) |
return false; |
var index = this._slotIndexForEvent(e); |
this._dragElement = element; |
this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerPaletteRow) * WebInspector.Spectrum._colorChipSize; |
this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerPaletteRow | 0) * WebInspector.Spectrum._colorChipSize; |
+ |
+ this._deleteIconToolbar.element.classList.add("dragging"); |
return true; |
}, |
@@ -311,7 +331,10 @@ 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.transform = "translateX(" + (offsetX - this._dragHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; |
+ var isDeleting = this._isDraggingToBin(e); |
+ this._deleteIconToolbar.element.classList.toggle("delete-color-toolbar-active", isDeleting); |
+ var dragElementTransform = "translateX(" + (offsetX - this._dragHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; |
+ this._dragElement.style.transform = isDeleting ? dragElementTransform + " scale(0.8)" : dragElementTransform; |
var children = Array.prototype.slice.call(this._paletteContainer.children); |
var index = children.indexOf(this._dragElement); |
/** @type {!Map.<!Element, {left: number, top: number}>} */ |
@@ -340,6 +363,8 @@ WebInspector.Spectrum.prototype = { |
*/ |
_paletteDragEnd: function(e) |
{ |
+ if (this._isDraggingToBin(e)) |
+ this._dragElement.remove(); |
this._dragElement.style.removeProperty("transform"); |
var children = this._paletteContainer.children; |
var colors = []; |
@@ -351,6 +376,10 @@ WebInspector.Spectrum.prototype = { |
palette.colors = colors; |
this._customPaletteSetting.set(palette); |
this._showPalette(this._customPaletteSetting.get(), false); |
+ |
+ this._deleteIconToolbar.element.classList.remove("dragging"); |
+ this._deleteIconToolbar.element.classList.remove("delete-color-toolbar-active"); |
+ this._deleteButton.setToggled(false); |
}, |
/** |