Added option for annotation tooltip to be floating (follows mouse, current functionality) or fixed (stationary per annotation).

This commit is contained in:
Eric Arnold 2014-01-09 13:29:51 -08:00
commit e9434fc1df
3 changed files with 26 additions and 3 deletions

View file

@ -1029,6 +1029,18 @@ var Editor = function(renderer, session) {
this.getHighlightGutterLine = function() {
return this.getOption("highlightGutterLine");
};
/**
* Determines if the annotation tooltip follows the mouse or is stationary to the annotation.
* @return {Boolean}
**/
this.setTooltipFollowsMouse = function(tooltipShouldFollowMouse) {
this.setOption("tooltipFollowsMouse", tooltipShouldFollowMouse);
};
this.getTooltipFollowsMouse = function() {
return this.getOption("tooltipFollowsMouse");
};
/**
* Determines if the currently selected word should be highlighted.
* @param {Boolean} shouldHighlight Set to `true` to highlight the currently selected word
@ -2432,6 +2444,7 @@ config.defineOptions(Editor.prototype, "editor", {
dragDelay: "$mouseHandler",
dragEnabled: "$mouseHandler",
focusTimout: "$mouseHandler",
tooltipFollowsMouse: "$mouseHandler",
firstLineNumber: "session",
overwrite: "session",

View file

@ -96,7 +96,16 @@ function GutterHandler(mouseHandler) {
tooltip.innerHTML = tooltipAnnotation;
editor.on("mousewheel", hideTooltip);
moveTooltip(mouseEvent);
if (mouseHandler.$tooltipFollowsMouse) {
moveTooltip(mouseEvent);
} else {
gutterElement = gutter.$cells[row].element;
var rect = gutterElement.getBoundingClientRect();
var tooltipLeft = rect.right;
var tooltipTop = rect.top + Math.round(rect.height / 2);
tooltip.style.left = tooltipLeft + "px";
tooltip.style.top = tooltipTop - 5 + "px";
}
}
function hideTooltip() {
@ -127,7 +136,7 @@ function GutterHandler(mouseHandler) {
if (dom.hasCssClass(target, "ace_fold-widget"))
return hideTooltip();
if (tooltipAnnotation)
if (tooltipAnnotation && mouseHandler.$tooltipFollowsMouse)
moveTooltip(e);
mouseEvent = e;

View file

@ -153,7 +153,8 @@ config.defineOptions(MouseHandler.prototype, "mouseHandler", {
scrollSpeed: {initialValue: 2},
dragDelay: {initialValue: 150},
dragEnabled: {initialValue: true},
focusTimout: {initialValue: 0}
focusTimout: {initialValue: 0},
tooltipFollowsMouse: {initialValue: true}
});