diff --git a/Content.Client/Voting/UI/VoteCallMenuButton.cs b/Content.Client/Voting/UI/VoteCallMenuButton.cs index d934ab8b97a..93bf8231855 100644 --- a/Content.Client/Voting/UI/VoteCallMenuButton.cs +++ b/Content.Client/Voting/UI/VoteCallMenuButton.cs @@ -12,18 +12,28 @@ namespace Content.Client.Voting.UI { [Dependency] private readonly IVoteManager _voteManager = default!; + private VoteCallMenu? _voteCallMenu; + public VoteCallMenuButton() { IoCManager.InjectDependencies(this); Text = Loc.GetString("ui-vote-menu-button"); + ToggleMode = true; OnPressed += OnOnPressed; } private void OnOnPressed(ButtonEventArgs obj) { - var menu = new VoteCallMenu(); - menu.OpenCentered(); + if (_voteCallMenu is { IsOpen: true }) + { + _voteCallMenu.Close(); + return; + } + + _voteCallMenu = new VoteCallMenu(); + _voteCallMenu.OnClose += () => Pressed = false; + _voteCallMenu.OpenCentered(); } protected override void EnteredTree() @@ -38,6 +48,9 @@ namespace Content.Client.Voting.UI { base.ExitedTree(); + if (_voteCallMenu is { IsOpen: true }) + _voteCallMenu.Close(); + _voteManager.CanCallVoteChanged += UpdateCanCall; }