Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/FlameChart.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FlameChart.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FlameChart.js |
index 69db11cb23998f8bce90cacd5f99e0517b845656..1ab51f3e6f4df1e91054cf8cd1aa19792b516ecc 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FlameChart.js |
+++ b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FlameChart.js |
@@ -447,12 +447,22 @@ WebInspector.FlameChart.Calculator.prototype = { |
WebInspector.FlameChart.prototype = { |
/** |
+ * @override |
+ */ |
+ willHide: function() |
+ { |
+ this.hideHighlight(); |
+ }, |
+ |
+ /** |
* @param {number} entryIndex |
*/ |
highlightEntry: function(entryIndex) |
{ |
- this._entryInfo.removeChildren(); |
- this._innerHighlightEntry(entryIndex); |
+ if (this._highlightedEntryIndex === entryIndex) |
+ return; |
+ this._highlightedEntryIndex = entryIndex; |
+ this._updateElementPosition(this._highlightElement, this._highlightedEntryIndex); |
}, |
hideHighlight: function() |
@@ -539,6 +549,7 @@ WebInspector.FlameChart.prototype = { |
} |
this._cancelAnimation(); |
+ this._updateHighlight(); |
this._cancelWindowTimesAnimation = WebInspector.animateFunction(this.element.window(), this._animateWindowTimes.bind(this), |
[{from: this._timeWindowLeft, to: startTime}, {from: this._timeWindowRight, to: endTime}], 5, |
this._animationCompleted.bind(this)); |
@@ -554,12 +565,14 @@ WebInspector.FlameChart.prototype = { |
{ |
this._timeWindowLeft = startTime; |
this._timeWindowRight = endTime; |
+ this._updateHighlight(); |
this.update(); |
}, |
_animationCompleted: function() |
{ |
delete this._cancelWindowTimesAnimation; |
+ this._updateHighlight(); |
}, |
/** |
@@ -609,6 +622,7 @@ WebInspector.FlameChart.prototype = { |
this._dragStartWindowLeft = this._timeWindowLeft; |
this._dragStartWindowRight = this._timeWindowRight; |
this._canvas.style.cursor = ""; |
+ this.hideHighlight(); |
return true; |
}, |
@@ -631,6 +645,7 @@ WebInspector.FlameChart.prototype = { |
_endCanvasDragging: function() |
{ |
this._isDragging = false; |
+ this._updateHighlight(); |
}, |
/** |
@@ -651,6 +666,7 @@ WebInspector.FlameChart.prototype = { |
style.width = "1px"; |
this._selectedTimeSpanLabel.textContent = ""; |
this._selectionOverlay.classList.remove("hidden"); |
+ this.hideHighlight(); |
return true; |
}, |
@@ -658,6 +674,7 @@ WebInspector.FlameChart.prototype = { |
{ |
this._isDragging = false; |
this._flameChartDelegate.endRangeSelection(); |
+ this._updateHighlight(); |
}, |
_hideRangeSelection: function() |
@@ -699,15 +716,17 @@ WebInspector.FlameChart.prototype = { |
{ |
this._lastMouseOffsetX = event.offsetX; |
this._lastMouseOffsetY = event.offsetY; |
- |
if (!this._enabled()) |
return; |
- |
if (this._isDragging) |
return; |
+ this._updateHighlight(); |
+ }, |
- var inDividersBar = event.offsetY < WebInspector.FlameChart.DividersBarHeight; |
- this._highlightedMarkerIndex = inDividersBar ? this._markerIndexAtPosition(event.offsetX) : -1; |
+ _updateHighlight: function() |
+ { |
+ var inDividersBar = this._lastMouseOffsetY < WebInspector.FlameChart.DividersBarHeight; |
+ this._highlightedMarkerIndex = inDividersBar ? this._markerIndexAtPosition(this._lastMouseOffsetX) : -1; |
this._updateMarkerHighlight(); |
var entryIndex = this._coordinatesToEntryIndex(this._lastMouseOffsetX, this._lastMouseOffsetY); |
@@ -715,21 +734,22 @@ WebInspector.FlameChart.prototype = { |
this.hideHighlight(); |
return; |
} |
- this._updateEntryInfo(entryIndex); |
- |
+ this._updatePopover(entryIndex); |
this._canvas.style.cursor = this._dataProvider.canJumpToEntry(entryIndex) ? "pointer" : "default"; |
- this._innerHighlightEntry(entryIndex); |
+ this.highlightEntry(entryIndex); |
}, |
_onMouseOut: function() |
{ |
+ this._lastMouseOffsetX = -1; |
+ this._lastMouseOffsetY = -1; |
this.hideHighlight(); |
}, |
/** |
* @param {number} entryIndex |
*/ |
- _updateEntryInfo: function(entryIndex) |
+ _updatePopover: function(entryIndex) |
{ |
if (entryIndex !== this._highlightedEntryIndex) { |
this._entryInfo.removeChildren(); |
@@ -759,17 +779,6 @@ WebInspector.FlameChart.prototype = { |
this._entryInfo.style.top = y + "px"; |
}, |
- /** |
- * @param {number} entryIndex |
- */ |
- _innerHighlightEntry: function(entryIndex) |
- { |
- if (this._highlightedEntryIndex === entryIndex) |
- return; |
- this._highlightedEntryIndex = entryIndex; |
- this._updateElementPosition(this._highlightElement, this._highlightedEntryIndex); |
- }, |
- |
_onClick: function() |
{ |
this.focus(); |
@@ -975,6 +984,8 @@ WebInspector.FlameChart.prototype = { |
*/ |
_coordinatesToEntryIndex: function(x, y) |
{ |
+ if (x < 0 || y < 0) |
+ return -1; |
y += this._scrollTop; |
var timelineData = this._timelineData(); |
if (!timelineData) |
@@ -1572,6 +1583,8 @@ WebInspector.FlameChart.prototype = { |
this._updateBoundaries(); |
this._calculator._updateBoundaries(this); |
this._draw(this._offsetWidth, this._offsetHeight); |
+ if (!this._isDragging) |
+ this._updateHighlight(); |
}, |
reset: function() |