diff --git a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java index 89c2d675a3..1e30b51271 100644 --- a/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java +++ b/app/display/representation-javafx/src/main/java/org/csstudio/display/builder/representation/javafx/widgets/RegionBaseRepresentation.java @@ -258,25 +258,26 @@ private void connectionOrValueChanged(final WidgetProperty property, final Ob if (!model_widget.runtimePropConnected().getValue()) { severity = AlarmSeverity.UNDEFINED; } - else if (value_prop != null && alarm_sensitive_border_prop.getValue()) - { + else if (value_prop != null && alarm_sensitive_border_prop.getValue()) { // Reflect severity of primary PV's value - final VType value = value_prop.getValue(); - final Alarm alarm = Alarm.alarmOf(value); + final Object object = value_prop.getValue(); + final Alarm alarm = Alarm.alarmOf(object); if (alarm.equals(Alarm.disconnected())) { severity = AlarmSeverity.UNDEFINED; + } else if (alarm != null && alarm.getSeverity() != AlarmSeverity.NONE) { + // Have alarm info + severity = alarm.getSeverity(); + } else if (object instanceof VType) { + // VType that doesn't provide alarm, always OK + severity = AlarmSeverity.NONE; + } else if (object != null) { + // Not a vtype, but non-null, assume OK + severity = AlarmSeverity.NONE; + } else { // null + severity = AlarmSeverity.UNDEFINED; } - else { - if (alarm != null && alarm.getSeverity() != AlarmSeverity.NONE) - // Have alarm info - severity = alarm.getSeverity(); - else if (value != null) - // VType that doesn't provide alarm, always OK - severity = AlarmSeverity.NONE; - else // null - severity = AlarmSeverity.UNDEFINED; - } + } // Any change?