diff --git a/core/dbobject.class.php b/core/dbobject.class.php
index 46f6c719f..4ff6f9783 100644
--- a/core/dbobject.class.php
+++ b/core/dbobject.class.php
@@ -1470,23 +1470,15 @@ abstract class DBObject implements iDisplay
*/
public function GetIcon($bImgTag = true)
{
- $sCode = $this->ComputeHighlightCode();
$sClass = get_class($this);
- if($sCode != '')
- {
- $aHighlightScale = MetaModel::GetHighlightScale($sClass);
- if (array_key_exists($sCode, $aHighlightScale))
- {
- $sIconUrl = $aHighlightScale[$sCode]['icon'];
- if($bImgTag)
- {
- return "
";
- }
- else
- {
- return $sIconUrl;
- }
+ if($this->HasHighlightIcon()) {
+ $sIconUrl = MetaModel::GetHighlightScale($sClass)[$this->ComputeHighlightCode()]['icon'];
+ if($bImgTag) {
+ return "
";
+ }
+ else {
+ return $sIconUrl;
}
}
@@ -1527,6 +1519,31 @@ abstract class DBObject implements iDisplay
return $bHasInstanceIcon;
}
+ /**
+ * @return bool True if the class has an highlight icon declared for the current object state
+ * @throws \ArchivedObjectException
+ * @throws \CoreException
+ * @since 3.0.0
+ */
+ public function HasHighlightIcon(): bool
+ {
+ $bHasHighlightIcon = false;
+
+ $sCode = $this->ComputeHighlightCode();
+ $sClass = get_class($this);
+
+ if($sCode != '')
+ {
+ $aHighlightScale = MetaModel::GetHighlightScale($sClass);
+ if (array_key_exists($sCode, $aHighlightScale))
+ {
+ $bHasHighlightIcon = true;
+ }
+ }
+
+ return $bHasHighlightIcon;
+ }
+
/**
* Get the label of a class
*
diff --git a/sources/application/UI/Base/Layout/Object/ObjectDetails.php b/sources/application/UI/Base/Layout/Object/ObjectDetails.php
index 2fc2cb859..973d99b5c 100644
--- a/sources/application/UI/Base/Layout/Object/ObjectDetails.php
+++ b/sources/application/UI/Base/Layout/Object/ObjectDetails.php
@@ -204,7 +204,7 @@ class ObjectDetails extends Panel implements iKeyboardShortcut
// Default icon is the class icon
$sIconUrl = $oObject->GetIcon(false);
// Note: Class icons are a square image with no margin around, so they need to be zoomed out in the medallion
- $sIconCoverMethod = $oObject->HasInstanceIcon() ? static::ENUM_ICON_COVER_METHOD_COVER : static::ENUM_ICON_COVER_METHOD_ZOOMOUT;
+ $sIconCoverMethod = $oObject->HasInstanceIcon() && !$oObject->HasHighlightIcon() ? static::ENUM_ICON_COVER_METHOD_COVER : static::ENUM_ICON_COVER_METHOD_ZOOMOUT;
$this->SetIcon($sIconUrl, $sIconCoverMethod, true);
}