diff --git a/OpenDreamClient/DreamClientSystem.cs b/OpenDreamClient/DreamClientSystem.cs index a2d1c288ae..5a6b47d3bf 100644 --- a/OpenDreamClient/DreamClientSystem.cs +++ b/OpenDreamClient/DreamClientSystem.cs @@ -13,6 +13,6 @@ public override void Initialize() { private void OnPlayerAttached(LocalPlayerAttachedEvent e) { // The active input context gets reset to "common" when a new player is attached // So we have to set it again - _interfaceManager.DefaultWindow?.Macro.SetActive(); + _interfaceManager.DefaultWindow?.Macro?.SetActive(); } } diff --git a/OpenDreamClient/Interface/Controls/ControlWindow.cs b/OpenDreamClient/Interface/Controls/ControlWindow.cs index 83e0e18bfe..3ee1c66817 100644 --- a/OpenDreamClient/Interface/Controls/ControlWindow.cs +++ b/OpenDreamClient/Interface/Controls/ControlWindow.cs @@ -20,7 +20,7 @@ public sealed class ControlWindow : InterfaceControl { public readonly List ChildControls = new(); public string Title => WindowDescriptor.Title.Value; - public InterfaceMacroSet Macro => _interfaceManager.MacroSets[WindowDescriptor.Macro.AsRaw()]; + public InterfaceMacroSet? Macro => _interfaceManager.MacroSets.GetValueOrDefault(WindowDescriptor.Macro.AsRaw()); private WindowDescriptor WindowDescriptor => (WindowDescriptor)ElementDescriptor; @@ -54,7 +54,7 @@ protected override void UpdateElementDescriptor() { UpdateWindowAttributes(_myWindow); if (WindowDescriptor.IsDefault.Value) { - Macro.SetActive(); + Macro?.SetActive(); } }