@@ -11,6 +11,7 @@ import Cocoa
1111class ChangesObserver {
1212 private var oldFullScreen : Bool
1313 private var oldVolume : Float
14+ private var oldMuted : Bool
1415 private var oldBrightness : Float = 0
1516 private var oldKeyboard : Float = 0
1617
@@ -26,6 +27,7 @@ class ChangesObserver {
2627 init ( positionManager: PositionManager , displayer: Displayer , volumeView: BarView , brightnessView: BarView , keyboardView: BarView ) {
2728 oldFullScreen = DisplayManager . isInFullscreenMode ( )
2829 oldVolume = VolumeManager . getOutputVolume ( )
30+ oldMuted = VolumeManager . isMuted ( )
2931
3032 do {
3133 oldBrightness = try DisplayManager . getDisplayBrightness ( )
@@ -62,26 +64,24 @@ class ChangesObserver {
6264 }
6365
6466 private func createObservers( ) {
65- NotificationCenter . default. addObserver ( self , selector: #selector( showVolumeHUD) , name: KeyPressObserver . volumeChanged, object: nil )
6667 DistributedNotificationCenter . default. addObserver ( self ,
6768 selector: #selector( showVolumeHUD) ,
6869 name: NSNotification . Name ( rawValue: " com.apple.sound.settingsChangedNotification " ) ,
6970 object: nil )
70-
71+ NotificationCenter . default. addObserver ( self ,
72+ selector: #selector( showVolumeHUD) ,
73+ name: KeyPressObserver . volumeChanged,
74+ object: nil )
7175 // observers for brightness
7276 NotificationCenter . default. addObserver ( self ,
7377 selector: #selector( showBrightnessHUD) ,
7478 name: KeyPressObserver . brightnessChanged,
7579 object: nil )
76-
7780 // observers for keyboard backlight
7881 NotificationCenter . default. addObserver ( self ,
7982 selector: #selector( showKeyboardHUD) ,
80- name: KeyPressObserver . keyboardIlluminationChanged, object: nil )
81- DistributedNotificationCenter . default. addObserver ( self ,
82- selector: #selector( showVolumeHUD) ,
83- name: NSNotification . Name ( rawValue: " com.apple.sound.settingsChangedNotification " ) ,
84- object: nil )
83+ name: KeyPressObserver . keyboardIlluminationChanged,
84+ object: nil )
8585 }
8686
8787 @objc func showVolumeHUD( ) {
@@ -101,14 +101,16 @@ class ChangesObserver {
101101 positionManager. setupHUDsPosition ( newFullScreen)
102102 oldFullScreen = newFullScreen
103103 }
104-
105- if settingsManager. enabledBars. brightnessBar && !temporarelyDisabledBars. brightnessBar {
106- checkBrightnessChanges ( )
107- }
108- if settingsManager. enabledBars. keyboardBar && !temporarelyDisabledBars. keyboardBar {
109- checkKeyboardChanges ( )
104+ if settingsManager. shouldContinuouslyCheck {
105+ if settingsManager. enabledBars. brightnessBar && !temporarelyDisabledBars. brightnessBar {
106+ checkBrightnessChanges ( )
107+ }
108+ if settingsManager. enabledBars. keyboardBar && !temporarelyDisabledBars. keyboardBar {
109+ checkKeyboardChanges ( )
110+ }
110111 }
111- if settingsManager. shouldContinuouslyCheck && settingsManager. enabledBars. volumeBar {
112+ // volume can't change on its own, so we always continuously check it
113+ if settingsManager. enabledBars. volumeBar && settingsManager. enabledBars. volumeBar {
112114 checkVolumeChanges ( )
113115 }
114116 }
@@ -120,10 +122,12 @@ class ChangesObserver {
120122
121123 private func checkVolumeChanges( ) {
122124 let newVolume = VolumeManager . getOutputVolume ( )
125+ let newMuted = VolumeManager . isMuted ( )
123126 volumeView. bar!. progress = newVolume
124- if !isAlmost( firstNumber: oldVolume, secondNumber: newVolume) {
127+ if !isAlmost( firstNumber: oldVolume, secondNumber: newVolume) || newMuted != oldMuted {
125128 displayer. showVolumeHUD ( )
126129 oldVolume = newVolume
130+ oldMuted = newMuted
127131 }
128132 volumeView. bar!. progress = newVolume
129133 }
0 commit comments