bundles/org.eclipse.orion.client.editor/web/orion/editor/rulers.js
function(lineIndex, e) {
			var tooltip = mTooltip.Tooltip.getTooltip(this._view);
			if (!tooltip) { return; }
			if (tooltip.isVisible() && this._tooltipLineIndex === lineIndex) { return; }
			this._tooltipLineIndex = lineIndex;
			
			// Prevent spurious mouse event (e.g. on a scroll)					
			if (e.clientX === this._lastMouseX
				&& e.clientY === this._lastMouseY) {
				return;
			}
			
			this._lastMouseX = e.clientX;
			this._lastMouseY = e.clientY;

			if (this._hoverTimeout) {
				window.clearTimeout(this._hoverTimeout);
				this._hoverTimeout = null;
			}
			
			var target = e.target ? e.target : e.srcElement;
			var bounds = target.getBoundingClientRect();
			this._curElementBounds = Object.create(null);
			this._curElementBounds.top = bounds.top;
			this._curElementBounds.left = bounds.left;
			this._curElementBounds.height = bounds.height;
			this._curElementBounds.width = bounds.width;
			
			// If we have the entire ruler selected, just use a 1 pixel high area in the ruler (Bug 463486)
			if (target === this.node){
				this._curElementBounds.top = e.clientY;
				this._curElementBounds.height = 1;
			}
			
			var self = this;
			self._hoverTimeout = window.setTimeout(function() {
				self._hoverTimeout = null;
				tooltip.onHover({
					getTooltipInfo: function() {
						var annotations = self._getAnnotationsAtLineIndex(self._tooltipLineIndex);
						var content = self._getTooltipContents(self._tooltipLineIndex, annotations);
						return self._getTooltipInfo(content, e.clientY, {source: "ruler", rulerLocation: self.getLocation()}); //$NON-NLS-0$
					}
				}, e.clientX, e.clientY);
			}, 175);
		}
function(lineIndex, e) {
			var tooltip = mTooltip.Tooltip.getTooltip(this._view);
			if (!tooltip) { return; }
			if (tooltip.isVisible() && this._tooltipLineIndex === lineIndex) { return; }
			this._tooltipLineIndex = lineIndex;
			
			// Prevent spurious mouse event (e.g. on a scroll)					
			if (e.clientX === this._lastMouseX
				&& e.clientY === this._lastMouseY) {
				return;
			}
			
			this._lastMouseX = e.clientX;
			this._lastMouseY = e.clientY;

			if (this._hoverTimeout) {
				window.clearTimeout(this._hoverTimeout);
				this._hoverTimeout = null;
			}
			
			var target = e.target ? e.target : e.srcElement;
			var bounds = target.getBoundingClientRect();
			this._curElementBounds = Object.create(null);
			this._curElementBounds.top = bounds.top;
			this._curElementBounds.left = bounds.left;
			this._curElementBounds.height = bounds.height;
			this._curElementBounds.width = bounds.width;
			
			// If we have the entire ruler selected, just use a 1 pixel high area in the ruler (Bug 463486)
			if (target === this.node){
				this._curElementBounds.top = e.clientY;
				this._curElementBounds.height = 1;
			}
			
			var self = this;
			self._hoverTimeout = window.setTimeout(function() {
				self._hoverTimeout = null;
				tooltip.onHover({
					getTooltipInfo: function() {
						var annotations = self._getAnnotationsAtLineIndex(self._tooltipLineIndex);
						var content = self._getTooltipContents(self._tooltipLineIndex, annotations);
						return self._getTooltipInfo(content, e.clientY, {source: "ruler", rulerLocation: self.getLocation()}); //$NON-NLS-0$
					}
				}, e.clientX, e.clientY);
			}, 175);
		}
function ( lineIndex , e ) { var tooltip = mTooltip . Tooltip . getTooltip ( this . _view ) ; if ( ! tooltip ) { return ; } if ( tooltip . isVisible ( ) && this . _tooltipLineIndex === lineIndex ) { return ; } this . _tooltipLineIndex = lineIndex ; // Prevent spurious mouse event (e.g. on a scroll)					 if ( e . clientX === this . _lastMouseX && e . clientY === this . _lastMouseY ) { return ; } this . _lastMouseX = e . clientX ; this . _lastMouseY = e . clientY ; if ( this . _hoverTimeout ) { window . clearTimeout ( this . _hoverTimeout ) ; this . _hoverTimeout = null ; } var target = e . target ? e . target : e . srcElement ; var bounds = target . getBoundingClientRect ( ) ; this . _curElementBounds = Object . create ( null ) ; this . _curElementBounds . top = bounds . top ; this . _curElementBounds . left = bounds . left ; this . _curElementBounds . height = bounds . height ; this . _curElementBounds . width = bounds . width ; // If we have the entire ruler selected, just use a 1 pixel high area in the ruler (Bug 463486) if ( target === this . node ) { this . _curElementBounds . top = e . clientY ; this . _curElementBounds . height = 1 ; } var self = this ; self . _hoverTimeout = window . setTimeout ( function ( ) { self . _hoverTimeout = null ; tooltip . onHover ( { getTooltipInfo : function ( ) { var annotations = self . _getAnnotationsAtLineIndex ( self . _tooltipLineIndex ) ; var content = self . _getTooltipContents ( self . _tooltipLineIndex , annotations ) ; return self . _getTooltipInfo ( content , e . clientY , { source : "ruler" , rulerLocation : self . getLocation ( ) } ) ; //$NON-NLS-0$ } } , e . clientX , e . clientY ) ; } , 175 ) ; }
This event is sent when the user moves the mouse over a line annotation.

@event
@param {Number} lineIndex the line index of the annotation under the pointer.
@param {DOMEvent} e the mouse move event.
This event is sent when the user moves the mouse over a line annotation .