diff --git a/core/src/main/resources/hudson/widgets/HistoryWidget/entry.jelly b/core/src/main/resources/hudson/widgets/HistoryWidget/entry.jelly index 2283a6603a1688bec335825d999c6ec06ddaa9ab..44e3f664e383bbd25f77308ed718ecf1d0c96866 100644 --- a/core/src/main/resources/hudson/widgets/HistoryWidget/entry.jelly +++ b/core/src/main/resources/hudson/widgets/HistoryWidget/entry.jelly @@ -35,10 +35,10 @@ THE SOFTWARE.
- ${build.displayName} + ${build.displayName}
- + diff --git a/core/src/main/resources/lib/layout/breadcrumbs.js b/core/src/main/resources/lib/layout/breadcrumbs.js index a36686a0c62b69aca98e6560aff1f1149765db5f..90b019f620e75fe6c45bb387d6dde206d9b88df9 100644 --- a/core/src/main/resources/lib/layout/breadcrumbs.js +++ b/core/src/main/resources/lib/layout/breadcrumbs.js @@ -93,6 +93,7 @@ var breadcrumbs = (function() { var menuSelector = (function() { var menuSelector = $(document.createElement("div")); var menuSelectorTarget; + var parentToUpdate; document.body.appendChild(menuSelector); menuSelector.id = 'menuSelector'; @@ -121,10 +122,15 @@ var breadcrumbs = (function() { this.style.visibility = "visible"; menuSelectorTarget = target; + var updateParentSelector = menuSelectorTarget.getAttribute('update-parent-class'); + if (updateParentSelector) { + parentToUpdate = $(menuSelectorTarget).up(updateParentSelector); + } }; menuSelector.hide = function() { this.style.visibility = "hidden"; menuSelectorTarget = undefined; + parentToUpdate = undefined; }; menuSelector.observe("click",function () { invokeContextMenu(this.target); @@ -137,16 +143,20 @@ var breadcrumbs = (function() { }.bind(menuSelector), 750); menuSelector.observe("mouseover",function () { - logger("mouse entered 'v'"); if (menuSelectorTarget) { + if (parentToUpdate) { + parentToUpdate.addClassName('model-link-active'); + } menuSelectorTarget.addClassName('mouseIsOverMenuSelector'); } canceller.cancel(); }); menuSelector.observe("mouseout",function () { - logger("mouse left 'v'"); canceller.schedule(); if (menuSelectorTarget) { + if (parentToUpdate) { + parentToUpdate.removeClassName('model-link-active'); + } menuSelectorTarget.removeClassName('mouseIsOverMenuSelector'); } }); diff --git a/core/src/main/resources/lib/layout/pane.jelly b/core/src/main/resources/lib/layout/pane.jelly index 3196313eceddab569498cd2cba8ba9f9c51eb9cd..38d7e767b9e486b898fb829fdbf2e72c2804737b 100644 --- a/core/src/main/resources/lib/layout/pane.jelly +++ b/core/src/main/resources/lib/layout/pane.jelly @@ -48,7 +48,7 @@ THE SOFTWARE. Footer of the box. Can include HTML. -
+
tbody:hover { padding: 3px 4px 3px 4px; } -.build-row:hover { +.build-row:hover, .build-row.model-link-active { background: #e8e8e8 !important; } @@ -959,11 +959,11 @@ table.parameters > tbody:hover { } .build-row-cell .pane.build-name { - width: 20%; + width: 25%; font-weight: bold; } .build-row-cell .pane.build-details { - width: 50%; + width: 45%; } .build-row-cell .pane.build-controls { width: 30%; diff --git a/war/src/main/webapp/scripts/hudson-behavior.js b/war/src/main/webapp/scripts/hudson-behavior.js index b62f360da2e4b63a2ba989f3f9bc7aee62b19e36..090ee96ad60ee50323e722f020faca29601fb10b 100644 --- a/war/src/main/webapp/scripts/hudson-behavior.js +++ b/war/src/main/webapp/scripts/hudson-behavior.js @@ -1131,6 +1131,24 @@ var jenkinsRules = { new YAHOO.widget.Button(e, { type: "menu", menu: $(e).next() }); }, + ".track-mouse" : function (element) { + var DOM = YAHOO.util.Dom; + + $(element).observe("mouseenter",function () { + element.addClassName("mouseover"); + + var mousemoveTracker = function (event) { + var elementRegion = DOM.getRegion(element); + if (event.x < elementRegion.left || event.x > elementRegion.right || + event.y < elementRegion.top || event.y > elementRegion.bottom) { + element.removeClassName("mouseover"); + Element.stopObserving(document, "mousemove", mousemoveTracker); + } + }; + Element.observe(document, "mousemove", mousemoveTracker); + }); + }, + /* Use on div tag to make it sticky visible on the bottom of the page. When page scrolls it remains in the bottom of the page