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) , ApplicationViewModel vm, ViewMode toMode)
{ {
return nvi != null && nvi.IsEnabled && navView.Visibility == Visibility.Visible if(nvi != null && nvi is NavCategory navCategory)
&& !vm.IsAlwaysOnTop && NavCategoryStates.IsValidViewMode(toMode); {
return navCategory.IsEnabled
&& navView.Visibility == Visibility.Visible
&& !vm.IsAlwaysOnTop
&& NavCategoryStates.IsValidViewMode(toMode);
}
return false;
} }
private static void NavigateModeByShortcut(bool controlKeyPressed, bool shiftKeyPressed, bool altPressed 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 navView = (MUXC.NavigationView)item;
var menuItems = ((ObservableCollection<object>)navView.MenuItemsSource); var menuItems = ((List<object>)navView.MenuItemsSource);
if (menuItems != null) if (menuItems != null)
{ {
var vm = (navView.DataContext as ApplicationViewModel); var vm = (navView.DataContext as ApplicationViewModel);
if (null != vm) if (null != vm)
{ {
ViewMode realToMode = toMode.HasValue ? toMode.Value : NavCategoryStates.GetViewModeForVirtualKey(((MyVirtualKey)key)); 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)) if (CanNavigateModeByShortcut(navView, nvi, vm, realToMode))
{ {
vm.Mode = realToMode; vm.Mode = realToMode;