It's a good way to separate the ShrinkingUI from app window. The loose coupling it represents is why I made these shrinking functions rely and only rely on the 'ShrinkingEffects' state. 

I will follow this pattern to move the ShrinkingUI out, and send the patch again.