Index: Source/devtools/front_end/ui/StatusBarButton.js |
diff --git a/Source/devtools/front_end/ui/StatusBarButton.js b/Source/devtools/front_end/ui/StatusBarButton.js |
index df8d69b9aeb2245042a695b6ee4e32a22bd5605e..95fee0cf3291cec8d6f8496bdb62da66849e831e 100644 |
--- a/Source/devtools/front_end/ui/StatusBarButton.js |
+++ b/Source/devtools/front_end/ui/StatusBarButton.js |
@@ -241,6 +241,9 @@ WebInspector.StatusBarButton = function(title, className, states) |
WebInspector.StatusBarItem.call(this, "button"); |
this.element.className = className + " status-bar-item"; |
this.element.addEventListener("click", this._clicked.bind(this), false); |
+ this._longClickController = new WebInspector.LongClickController(this.element); |
+ this._longClickController.addEventListener(WebInspector.LongClickController.Events.LongClick, this._onLongClick.bind(this)); |
+ this._longClickController.addEventListener(WebInspector.LongClickController.Events.LongPress, this._onLongPress.bind(this)); |
this.glyph = this.element.createChild("div", "glyph"); |
this.glyphShadow = this.element.createChild("div", "glyph shadow"); |
@@ -259,13 +262,26 @@ WebInspector.StatusBarButton = function(title, className, states) |
} |
WebInspector.StatusBarButton.prototype = { |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _onLongClick: function(event) |
+ { |
+ this.dispatchEventToListeners("longClickDown"); |
+ }, |
+ |
+ /** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _onLongPress: function(event) |
+ { |
+ this.dispatchEventToListeners("longPressDown"); |
+ }, |
+ |
_clicked: function() |
{ |
this.dispatchEventToListeners("click"); |
- if (this._longClickInterval) { |
- clearInterval(this._longClickInterval); |
- delete this._longClickInterval; |
- } |
+ this._longClickController.reset(); |
}, |
/** |
@@ -274,10 +290,7 @@ WebInspector.StatusBarButton.prototype = { |
applyEnabledState: function() |
{ |
this.element.disabled = !this._enabled; |
- if (this._longClickInterval) { |
- clearInterval(this._longClickInterval); |
- delete this._longClickInterval; |
- } |
+ this._longClickController.reset(); |
}, |
/** |
@@ -337,61 +350,12 @@ WebInspector.StatusBarButton.prototype = { |
makeLongClickEnabled: function() |
{ |
- var boundMouseDown = mouseDown.bind(this); |
- var boundMouseUp = mouseUp.bind(this); |
- |
- this.element.addEventListener("mousedown", boundMouseDown, false); |
- this.element.addEventListener("mouseout", boundMouseUp, false); |
- this.element.addEventListener("mouseup", boundMouseUp, false); |
- |
- var longClicks = 0; |
- |
- this._longClickData = { mouseUp: boundMouseUp, mouseDown: boundMouseDown }; |
- |
- /** |
- * @param {!Event} e |
- * @this {WebInspector.StatusBarButton} |
- */ |
- function mouseDown(e) |
- { |
- if (e.which !== 1) |
- return; |
- longClicks = 0; |
- this._longClickInterval = setInterval(longClicked.bind(this), 200); |
- } |
- |
- /** |
- * @param {!Event} e |
- * @this {WebInspector.StatusBarButton} |
- */ |
- function mouseUp(e) |
- { |
- if (e.which !== 1) |
- return; |
- if (this._longClickInterval) { |
- clearInterval(this._longClickInterval); |
- delete this._longClickInterval; |
- } |
- } |
- |
- /** |
- * @this {WebInspector.StatusBarButton} |
- */ |
- function longClicked() |
- { |
- ++longClicks; |
- this.dispatchEventToListeners(longClicks === 1 ? "longClickDown" : "longClickPress"); |
- } |
+ this._longClickController.enable(); |
}, |
unmakeLongClickEnabled: function() |
{ |
- if (!this._longClickData) |
- return; |
- this.element.removeEventListener("mousedown", this._longClickData.mouseDown, false); |
- this.element.removeEventListener("mouseout", this._longClickData.mouseUp, false); |
- this.element.removeEventListener("mouseup", this._longClickData.mouseUp, false); |
- delete this._longClickData; |
+ this._longClickController.disable(); |
}, |
/** |