diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java
index b279fd88413b..5e6a69690c76 100644
--- a/core/src/main/java/hudson/Functions.java
+++ b/core/src/main/java/hudson/Functions.java
@@ -2322,18 +2322,7 @@ public static String tryGetIconPath(String iconGuess, JellyContext context) {
StaplerRequest currentRequest = Stapler.getCurrentRequest();
currentRequest.getWebApp().getDispatchValidator().allowDispatch(currentRequest, Stapler.getCurrentResponse());
String rootURL = currentRequest.getContextPath();
- Icon iconMetadata = IconSet.icons.getIconByClassSpec(iconGuess);
-
- if (iconMetadata == null) {
- // Icon could be provided as a simple iconFileName e.g. "settings.png"
- iconMetadata = IconSet.icons.getIconByClassSpec(IconSet.toNormalizedIconNameClass(iconGuess) + " icon-md");
- }
-
- if (iconMetadata == null) {
- // Icon could be provided as an absolute iconFileName e.g. "/plugin/foo/abc.png"
- iconMetadata = IconSet.icons.getIconByUrl(iconGuess);
- }
-
+ Icon iconMetadata = tryGetIcon(iconGuess, context);
String iconSource = null;
if (iconMetadata != null) {
diff --git a/core/src/main/java/org/jenkins/ui/icon/IconType.java b/core/src/main/java/org/jenkins/ui/icon/IconType.java
index 0757d1d6a817..b2e9c4fceeb6 100644
--- a/core/src/main/java/org/jenkins/ui/icon/IconType.java
+++ b/core/src/main/java/org/jenkins/ui/icon/IconType.java
@@ -24,8 +24,6 @@
package org.jenkins.ui.icon;
-import jnr.ffi.annotations.Out;
-
/**
* Icon type.
*
diff --git a/core/src/main/resources/lib/layout/breadcrumbs.js b/core/src/main/resources/lib/layout/breadcrumbs.js
index 98aba574d07f..f84037ae9722 100644
--- a/core/src/main/resources/lib/layout/breadcrumbs.js
+++ b/core/src/main/resources/lib/layout/breadcrumbs.js
@@ -23,8 +23,13 @@ var breadcrumbs = (function() {
var logger = function() {};
// logger = function() { console.log.apply(console,arguments) }; // uncomment this line to enable logging
- function makeMenuHtml(icon,displayName) {
+ function makeMenuHtml(icon, iconXml, displayName) {
var displaynameSpan = '' + displayName + '';
+
+ if (iconXml != null) {
+ return iconXml + displaynameSpan;
+ }
+
if (icon === null) return "" + displaynameSpan;
// TODO: move this to the API response in a clean way
@@ -213,9 +218,9 @@ var breadcrumbs = (function() {
var a = x.responseText.evalJSON().items;
function fillMenuItem(e) {
if (e.header) {
- e.text = makeMenuHtml(e.icon, "");
+ e.text = makeMenuHtml(e.icon, e.iconXml, "");
} else {
- e.text = makeMenuHtml(e.icon, e.displayName);
+ e.text = makeMenuHtml(e.icon, e.iconXml, e.displayName);
}
if (e.subMenu!=null)
e.subMenu = {id:"submenu"+(iota++), itemdata:e.subMenu.items.each(fillMenuItem)};
@@ -287,7 +292,7 @@ var breadcrumbs = (function() {
* @return {breadcrumbs.MenuItem}
*/
"add" : function (url,icon,displayName) {
- this.items.push({ url:url, text:makeMenuHtml(icon,displayName) });
+ this.items.push({ url:url, text:makeMenuHtml(icon, null, displayName) });
return this;
}
};
diff --git a/war/src/main/less/base/yui-compatibility.less b/war/src/main/less/base/yui-compatibility.less
index 655054472655..7f8e97a1a5ff 100644
--- a/war/src/main/less/base/yui-compatibility.less
+++ b/war/src/main/less/base/yui-compatibility.less
@@ -161,6 +161,13 @@ div.yahooTree td {
#jenkins .yuimenuitem {
font-size: var(--font-size-xs);
padding: 3px;
+
+ svg,
+ img {
+ width: 1.2rem;
+ height: 1.2rem;
+ margin: 0.25rem 0.5rem 0.25rem 0;
+ }
}
#jenkins .yuimenuitem,