From a623a72d5a3672f2cacf6f2185db102ca6f1d9ae Mon Sep 17 00:00:00 2001 From: rampaa Date: Fri, 26 Jul 2024 18:03:16 +0300 Subject: [PATCH] Minor fix --- JL.Windows/GUI/PopupWindow.xaml.cs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/JL.Windows/GUI/PopupWindow.xaml.cs b/JL.Windows/GUI/PopupWindow.xaml.cs index dc6e213f..f90afb7e 100644 --- a/JL.Windows/GUI/PopupWindow.xaml.cs +++ b/JL.Windows/GUI/PopupWindow.xaml.cs @@ -31,6 +31,8 @@ internal sealed partial class PopupWindow : Window private int _listViewItemIndex; // 0 + private int _listViewItemIndexAfterContextMenuIsClosed; // 0 + private int _firstVisibleListViewItemIndex; // 0 private int _currentCharPosition; @@ -1080,8 +1082,15 @@ private int GetFirstVisibleListViewItemIndex() private void ListViewItem_MouseEnter(object sender, MouseEventArgs e) { - _listViewItemIndex = GetIndexOfListViewItemFromStackPanel((StackPanel)sender); - LastSelectedText = LastLookupResults[_listViewItemIndex].PrimarySpelling; + if (PopupContextMenu.IsVisible) + { + _listViewItemIndexAfterContextMenuIsClosed = GetIndexOfListViewItemFromStackPanel((StackPanel)sender); + } + else + { + _listViewItemIndex = GetIndexOfListViewItemFromStackPanel((StackPanel)sender); + LastSelectedText = LastLookupResults[_listViewItemIndex].PrimarySpelling; + } } private static void Unselect(object sender, RoutedEventArgs e) @@ -1893,12 +1902,18 @@ private static bool NoAllDictFilter(object item) private void PopupContextMenu_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { - if (!(bool)e.NewValue - && !IsMouseOver - && !AddWordWindow.IsItVisible() - && !AddNameWindow.IsItVisible()) + bool contextMenuBecameInvisible = !(bool)e.NewValue; + if (contextMenuBecameInvisible) { - PopupAutoHideTimer.Start(); + _listViewItemIndex = _listViewItemIndexAfterContextMenuIsClosed; + LastSelectedText = LastLookupResults[_listViewItemIndex].PrimarySpelling; + + if (!IsMouseOver + && !AddWordWindow.IsItVisible() + && !AddNameWindow.IsItVisible()) + { + PopupAutoHideTimer.Start(); + } } }