From 592e114a4771d79604c8bf8af97d80bc68707ae3 Mon Sep 17 00:00:00 2001 From: Foglio Date: Tue, 15 Aug 2023 14:10:07 +0200 Subject: [PATCH] fix topmost issues with player menu --- .../UI/Controls/Chat/PlayerMenuWindow.xaml.cs | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/TCC.Core/UI/Controls/Chat/PlayerMenuWindow.xaml.cs b/TCC.Core/UI/Controls/Chat/PlayerMenuWindow.xaml.cs index aafcb362..e214bf89 100644 --- a/TCC.Core/UI/Controls/Chat/PlayerMenuWindow.xaml.cs +++ b/TCC.Core/UI/Controls/Chat/PlayerMenuWindow.xaml.cs @@ -16,8 +16,8 @@ namespace TCC.UI.Controls.Chat { public partial class PlayerMenuWindow { - private readonly DoubleAnimation _openAnim; - private readonly DoubleAnimation _closeAnim; + readonly DoubleAnimation _openAnim; + readonly DoubleAnimation _closeAnim; public PlayerMenuWindow([NotNull] PlayerMenuViewModel vm) { @@ -46,9 +46,17 @@ public PlayerMenuWindow([NotNull] PlayerMenuViewModel vm) FocusManager.HideFromToolBar(handle); }; + FocusManager.ForegroundChanged += OnForegroundChanged; + InitializeComponent(); } + void OnForegroundChanged() + { + if (!IsVisible) return; + Dispatcher.InvokeAsync(Close); + } + public void AnimateOpening() { Topmost = false; @@ -60,7 +68,7 @@ public void ShowAndPosition() { Dispatcher?.InvokeAsync(() => { - FocusManager.PauseTopmost = true; + if(!IsVisible) FocusManager.PauseTopmost = true; var prevLeft = Left; var prevTop = Top; User32.GetCursorPos(out var pos); @@ -94,54 +102,54 @@ protected override void OnClosing(CancelEventArgs e) RootBorder.BeginAnimation(OpacityProperty, _closeAnim); } - private void OnMouseLeave(object sender, MouseEventArgs e) + void OnMouseLeave(object sender, MouseEventArgs e) { Close(); } - private void InspectClick(object sender, RoutedEventArgs e) + void InspectClick(object sender, RoutedEventArgs e) { Close(); } - private void PartyInviteClick(object sender, RoutedEventArgs e) + void PartyInviteClick(object sender, RoutedEventArgs e) { Close(); } - private void GuildInviteClick(object sender, RoutedEventArgs e) + void GuildInviteClick(object sender, RoutedEventArgs e) { Close(); } - private void WhisperClick(object sender, RoutedEventArgs e) + void WhisperClick(object sender, RoutedEventArgs e) { Close(); } - private void GrantInviteClick(object sender, RoutedEventArgs e) + void GrantInviteClick(object sender, RoutedEventArgs e) { Close(); } - private void DelegateLeaderClick(object sender, RoutedEventArgs e) + void DelegateLeaderClick(object sender, RoutedEventArgs e) { Close(); } - private void MakeGuildMasterClick(object sender, RoutedEventArgs e) + void MakeGuildMasterClick(object sender, RoutedEventArgs e) { Close(); } - private void MoongourdClick(object sender, RoutedEventArgs routedEventArgs) + void MoongourdClick(object sender, RoutedEventArgs routedEventArgs) { //var p = MgPopup.Child as MoongourdPopup; //p?.SetInfo(_vm.Name, App.Settings.LastLanguage); MgPopup.IsOpen = true; } - private void FpsUtilsClick(object sender, RoutedEventArgs routedEventArgs) + void FpsUtilsClick(object sender, RoutedEventArgs routedEventArgs) { FpsUtilsPopup.IsOpen = true; }