diff --git a/data/theme/gnome-shell-sass/widgets/_screen-shield.scss b/data/theme/gnome-shell-sass/widgets/_screen-shield.scss index a28ef2738..2c45589ac 100644 --- a/data/theme/gnome-shell-sass/widgets/_screen-shield.scss +++ b/data/theme/gnome-shell-sass/widgets/_screen-shield.scss @@ -35,6 +35,8 @@ background-color: transparentize($osd_bg_color,0.5); color: $osd_fg_color; border-radius: 4px; + + &.critical { background-color: transparentize($osd_bg_color,0.1) } } } diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js index df2126ee8..ec08acd1c 100644 --- a/js/ui/unlockDialog.js +++ b/js/ui/unlockDialog.js @@ -145,6 +145,20 @@ var NotificationsBox = GObject.registerClass({ source.narrowestPrivacyScope === MessageTray.PrivacyScope.SYSTEM; } + _updateSourceBoxStyle(source, obj, box) { + let hasCriticalNotification = + source.notifications.some(n => n.urgency === MessageTray.Urgency.CRITICAL); + + if (hasCriticalNotification !== obj.hasCriticalNotification) { + obj.hasCriticalNotification = hasCriticalNotification; + + if (hasCriticalNotification) + box.add_style_class_name('critical'); + else + box.remove_style_class_name('critical'); + } + } + _showSource(source, obj, box) { if (obj.detailed) [obj.titleLabel, obj.countLabel] = this._makeNotificationDetailedSource(source, box); @@ -152,6 +166,8 @@ var NotificationsBox = GObject.registerClass({ [obj.titleLabel, obj.countLabel] = this._makeNotificationSource(source, box); box.visible = obj.visible && (source.unseenCount > 0); + + this._updateSourceBoxStyle(source, obj, box); } _sourceAdded(tray, source, initial) { @@ -165,6 +181,7 @@ var NotificationsBox = GObject.registerClass({ sourceBox: null, titleLabel: null, countLabel: null, + hasCriticalNotification: false, }; obj.sourceBox = new St.BoxLayout({