Skip to content

Commit 35679a1

Browse files
authored
Remove Use of CoreWindow GetKeyState (#1251)
1 parent 874423c commit 35679a1

File tree

2 files changed

+36
-7
lines changed

2 files changed

+36
-7
lines changed

Files/Views/ModernShellPage.xaml

+17-1
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,26 @@
1111
xmlns:local1="using:Files"
1212
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
1313
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
14-
KeyUp="ModernShellPage_KeyUp"
1514
Loaded="Page_Loaded"
1615
NavigationCacheMode="Required"
1716
mc:Ignorable="d">
17+
<Page.KeyboardAccelerators>
18+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control,Shift" Key="N"/>
19+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Shift" Key="Delete"/>
20+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="C"/>
21+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="V"/>
22+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="X"/>
23+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="A"/>
24+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="N"/>
25+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="W"/>
26+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="F4"/>
27+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="None" Key="Delete"/>
28+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="None" Key="Space"/>
29+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Menu" Key="Left"/>
30+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Menu" Key="Right"/>
31+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="Control" Key="R"/>
32+
<KeyboardAccelerator Invoked="KeyboardAccelerator_Invoked" Modifiers="None" Key="F2"/>
33+
</Page.KeyboardAccelerators>
1834

1935
<Grid>
2036
<Grid.ColumnDefinitions>

Files/Views/ModernShellPage.xaml.cs

+19-6
Original file line numberDiff line numberDiff line change
@@ -205,15 +205,16 @@ public void UpdateProgressFlyout(InteractionOperationType operationType, int amo
205205
}
206206
}
207207

208-
private async void ModernShellPage_KeyUp(object sender, KeyRoutedEventArgs e)
208+
private async void KeyboardAccelerator_Invoked(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
209209
{
210-
var ctrl = Window.Current.CoreWindow.GetKeyState(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down);
211-
var alt = Window.Current.CoreWindow.GetKeyState(VirtualKey.Menu).HasFlag(CoreVirtualKeyStates.Down);
212-
var shift = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);
210+
args.Handled = true;
211+
var ctrl = args.KeyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Control);
212+
var alt = args.KeyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Menu);
213+
var shift = args.KeyboardAccelerator.Modifiers.HasFlag(VirtualKeyModifiers.Shift);
213214
var tabInstance = App.CurrentInstance.CurrentPageType == typeof(GenericFileBrowser)
214215
|| App.CurrentInstance.CurrentPageType == typeof(GridViewBrowser);
215216

216-
switch (c: ctrl, s: shift, a: alt, t: tabInstance, k: e.Key)
217+
switch (c: ctrl, s: shift, a: alt, t: tabInstance, k: args.KeyboardAccelerator.Key)
217218
{
218219
case (true, true, false, true, VirtualKey.N): // ctrl + shift + n, new item
219220
await App.AddItemDialogDisplay.ShowAsync();
@@ -257,6 +258,18 @@ private async void ModernShellPage_KeyUp(object sender, KeyRoutedEventArgs e)
257258
App.CurrentInstance.InteractionOperations.CloseTab();
258259
break;
259260

261+
case (true, false, false, true, VirtualKey.N): // ctrl + n, new window from layout mode
262+
App.CurrentInstance.InteractionOperations.LaunchNewWindow();
263+
break;
264+
265+
case (true, false, false, true, VirtualKey.W): // ctrl + w, close tab from layout mode
266+
App.CurrentInstance.InteractionOperations.CloseTab();
267+
break;
268+
269+
case (true, false, false, true, VirtualKey.F4): // ctrl + F4, close tab from layout mode
270+
App.CurrentInstance.InteractionOperations.CloseTab();
271+
break;
272+
260273
case (false, false, false, true, VirtualKey.Delete): // delete, delete item
261274
if (App.CurrentInstance.ContentPage.IsItemSelected && !App.CurrentInstance.ContentPage.isRenamingItem)
262275
App.CurrentInstance.InteractionOperations.DeleteItem_Click(null, null);
@@ -287,7 +300,7 @@ private async void ModernShellPage_KeyUp(object sender, KeyRoutedEventArgs e)
287300

288301
if (App.CurrentInstance.CurrentPageType == typeof(GridViewBrowser))
289302
{
290-
switch (e.Key)
303+
switch (args.KeyboardAccelerator.Key)
291304
{
292305
case VirtualKey.F2: //F2, rename
293306
if (App.CurrentInstance.ContentPage.IsItemSelected)

0 commit comments

Comments
 (0)