fix a regression in keyboard manager (#1824)

This commit is contained in:
Tian L 2022-04-19 14:02:43 +08:00 committed by GitHub
parent 8e7ac87f01
commit e9a974d1dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -575,11 +575,17 @@ private static void OnVirtualKeyControlShiftChordPropertyChanged(DependencyObjec
}
}
private static bool CanNavigateModeByShortcut(MUXC.NavigationView navView, MUXC.NavigationViewItem nvi
private static bool CanNavigateModeByShortcut(MUXC.NavigationView navView, object nvi
, ApplicationViewModel vm, ViewMode toMode)
{
return nvi != null && nvi.IsEnabled && navView.Visibility == Visibility.Visible
&& !vm.IsAlwaysOnTop && NavCategoryStates.IsValidViewMode(toMode);
if(nvi != null && nvi is NavCategory navCategory)
{
return navCategory.IsEnabled
&& navView.Visibility == Visibility.Visible
&& !vm.IsAlwaysOnTop
&& NavCategoryStates.IsValidViewMode(toMode);
}
return false;
}
private static void NavigateModeByShortcut(bool controlKeyPressed, bool shiftKeyPressed, bool altPressed
@ -596,14 +602,15 @@ private static void NavigateModeByShortcut(bool controlKeyPressed, bool shiftKey
{
var navView = (MUXC.NavigationView)item;
var menuItems = ((ObservableCollection<object>)navView.MenuItemsSource);
var menuItems = ((List<object>)navView.MenuItemsSource);
if (menuItems != null)
{
var vm = (navView.DataContext as ApplicationViewModel);
if (null != vm)
{
ViewMode realToMode = toMode.HasValue ? toMode.Value : NavCategoryStates.GetViewModeForVirtualKey(((MyVirtualKey)key));
var nvi = (menuItems[NavCategoryStates.GetFlatIndex(realToMode)] as MUXC.NavigationViewItem);
var nvi = menuItems[NavCategoryStates.GetFlatIndex(realToMode)];
if (CanNavigateModeByShortcut(navView, nvi, vm, realToMode))
{
vm.Mode = realToMode;