From add29e845ec8076054563494f74e7dd3fd29eb17 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Mon, 30 May 2011 20:27:58 +1200 Subject: [PATCH] Fix orphaned DropDown panels (eg when exiting menus using a hotkey) --- OpenRA.Game/Widgets/DropDownButtonWidget.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/OpenRA.Game/Widgets/DropDownButtonWidget.cs b/OpenRA.Game/Widgets/DropDownButtonWidget.cs index 3d6e510e77..0e05f326a4 100644 --- a/OpenRA.Game/Widgets/DropDownButtonWidget.cs +++ b/OpenRA.Game/Widgets/DropDownButtonWidget.cs @@ -52,14 +52,22 @@ namespace OpenRA.Widgets // This is crap public override int UsableWidth { get { return Bounds.Width - Bounds.Height; } } /* space for button */ + public override void Removed() + { + base.Removed(); + RemovePanel(); + } + public void RemovePanel() { + if (panel == null) + return; + Widget.RootWidget.RemoveChild(fullscreenMask); Widget.RootWidget.RemoveChild(panel); - Game.BeforeGameStart -= RemovePanel; panel = fullscreenMask = null; } - + public void AttachPanel(Widget p) { if (panel != null) @@ -70,7 +78,6 @@ namespace OpenRA.Widgets fullscreenMask = new ContainerWidget(); fullscreenMask.Bounds = new Rectangle(0, 0, Game.viewport.Width, Game.viewport.Height); Widget.RootWidget.AddChild(fullscreenMask); - Game.BeforeGameStart += RemovePanel; fullscreenMask.OnMouseDown = mi => {