Index: Source/devtools/front_end/ui/Tooltip.js |
diff --git a/Source/devtools/front_end/ui/Tooltip.js b/Source/devtools/front_end/ui/Tooltip.js |
index e5010af887cecc77e42d3264a83b08a2ed2627dc..7d23281cf3d7d3234d49ac48f2ad8d3abdf30c87 100644 |
--- a/Source/devtools/front_end/ui/Tooltip.js |
+++ b/Source/devtools/front_end/ui/Tooltip.js |
@@ -15,6 +15,8 @@ WebInspector.Tooltip = function(doc) |
this._tooltipElement = this._shadowRoot.createChild("div", "tooltip"); |
doc.addEventListener("mousemove", this._mouseMove.bind(this), true); |
doc.addEventListener("mousedown", this._hide.bind(this, true), true); |
+ doc.addEventListener("mouseout", this._hide.bind(this, true), true); |
+ doc.addEventListener("keydown", this._hide.bind(this, true), true); |
} |
WebInspector.Tooltip.Timing = { |
@@ -45,7 +47,7 @@ WebInspector.Tooltip.prototype = { |
if (element === this._anchorElement) { |
return; |
} else if (element[WebInspector.Tooltip._symbol]) { |
- this._show(element); |
+ this._show(element, event); |
return; |
} |
} |
@@ -53,8 +55,9 @@ WebInspector.Tooltip.prototype = { |
/** |
* @param {!Element} anchorElement |
+ * @param {!Event} event |
*/ |
- _show: function(anchorElement) |
+ _show: function(anchorElement, event) |
{ |
var tooltip = anchorElement[WebInspector.Tooltip._symbol]; |
this._anchorElement = anchorElement; |
@@ -97,11 +100,13 @@ WebInspector.Tooltip.prototype = { |
this._tooltipElement.style.maxWidth = (containerOffsetWidth - pageMargin * 2) + "px"; |
var tooltipWidth = this._tooltipElement.offsetWidth; |
var tooltipHeight = this._tooltipElement.offsetHeight; |
- var tooltipX = anchorBox.x; |
+ var tooltipX = tooltip.options[WebInspector.Tooltip.Options.HorizontalAlignUnderCursor] |
+ ? event.x : anchorBox.x; |
tooltipX = Number.constrain(tooltipX, |
containerOffset.x + pageMargin, |
containerOffset.x + containerOffsetWidth - tooltipWidth - pageMargin); |
- var onBottom = anchorBox.y + anchorOffset + anchorBox.height + tooltipHeight < containerOffset.y + containerOffsetHeight; |
+ var onBottom = tooltip.options[WebInspector.Tooltip.Options.VerticalAlignmentTop] ? false |
+ : anchorBox.y + anchorOffset + anchorBox.height + tooltipHeight < containerOffset.y + containerOffsetHeight; |
var tooltipY = onBottom ? anchorBox.y + anchorBox.height + anchorOffset : anchorBox.y - tooltipHeight - anchorOffset; |
this._tooltipElement.positionAt(tooltipX, tooltipY); |
}, |
@@ -130,18 +135,24 @@ WebInspector.Tooltip.installHandler = function(doc) |
new WebInspector.Tooltip(doc); |
} |
+WebInspector.Tooltip.Options = { |
+ VerticalAlignmentTop: "VerticalAlignmentTop", |
pfeldman
2015/08/28 22:46:18
Not a fan of this, what are you trying to configur
samli
2015/08/28 22:48:43
This fixes issue https://code.google.com/p/chromiu
|
+ HorizontalAlignUnderCursor: "HorizontalAlignUnderCursor" |
+} |
+ |
/** |
* @param {!Element} element |
* @param {!Element|string} tooltipContent |
* @param {string=} actionId |
+ * @param {!Object=} options |
*/ |
-WebInspector.Tooltip.install = function(element, tooltipContent, actionId) |
+WebInspector.Tooltip.install = function(element, tooltipContent, actionId, options) |
{ |
if (typeof tooltipContent === "string" && tooltipContent === "") { |
delete element[WebInspector.Tooltip._symbol]; |
return; |
} |
- element[WebInspector.Tooltip._symbol] = { content: tooltipContent, actionId: actionId }; |
+ element[WebInspector.Tooltip._symbol] = { content: tooltipContent, actionId: actionId, options: options || {} }; |
} |
Object.defineProperty(HTMLElement.prototype, "title", { |