mirror of
https://github.com/microsoft/PowerToys
synced 2025-09-02 15:35:12 +00:00
cmdpal: move kb shortcut handling to PreviewKeyDown (#40777)
This lets things like C-S-c work in the text box, and in the context menu too Closes #40174
This commit is contained in:
@@ -131,7 +131,7 @@
|
|||||||
ItemClick="CommandsDropdown_ItemClick"
|
ItemClick="CommandsDropdown_ItemClick"
|
||||||
ItemTemplateSelector="{StaticResource ContextItemTemplateSelector}"
|
ItemTemplateSelector="{StaticResource ContextItemTemplateSelector}"
|
||||||
ItemsSource="{x:Bind ViewModel.FilteredItems, Mode=OneWay}"
|
ItemsSource="{x:Bind ViewModel.FilteredItems, Mode=OneWay}"
|
||||||
KeyDown="CommandsDropdown_KeyDown"
|
PreviewKeyDown="CommandsDropdown_PreviewKeyDown"
|
||||||
SelectionMode="Single">
|
SelectionMode="Single">
|
||||||
<ListView.ItemContainerStyle>
|
<ListView.ItemContainerStyle>
|
||||||
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
|
<Style BasedOn="{StaticResource DefaultListViewItemStyle}" TargetType="ListViewItem">
|
||||||
|
@@ -84,7 +84,7 @@ public sealed partial class ContextMenu : UserControl,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CommandsDropdown_KeyDown(object sender, KeyRoutedEventArgs e)
|
private void CommandsDropdown_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.Handled)
|
if (e.Handled)
|
||||||
{
|
{
|
||||||
@@ -174,8 +174,6 @@ public sealed partial class ContextMenu : UserControl,
|
|||||||
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
CommandsDropdown_KeyDown(sender, e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ContextFilterBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
private void ContextFilterBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
||||||
@@ -192,6 +190,8 @@ public sealed partial class ContextMenu : UserControl,
|
|||||||
|
|
||||||
e.Handled = true;
|
e.Handled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CommandsDropdown_PreviewKeyDown(sender, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NavigateUp()
|
private void NavigateUp()
|
||||||
|
@@ -159,16 +159,6 @@ public sealed partial class SearchBar : UserControl,
|
|||||||
CurrentPageViewModel.Filter = FilterBox.Text;
|
CurrentPageViewModel.Filter = FilterBox.Text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!e.Handled)
|
|
||||||
{
|
|
||||||
// The CommandBar is responsible for handling all the item keybindings,
|
|
||||||
// since the bound context item may need to then show another
|
|
||||||
// context menu
|
|
||||||
TryCommandKeybindingMessage msg = new(ctrlPressed, altPressed, shiftPressed, winPressed, e.Key);
|
|
||||||
WeakReferenceMessenger.Default.Send(msg);
|
|
||||||
e.Handled = msg.Handled;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FilterBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
private void FilterBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
||||||
@@ -256,6 +246,22 @@ public sealed partial class SearchBar : UserControl,
|
|||||||
_inSuggestion = false;
|
_inSuggestion = false;
|
||||||
_lastText = null;
|
_lastText = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!e.Handled)
|
||||||
|
{
|
||||||
|
var ctrlPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.Control).HasFlag(CoreVirtualKeyStates.Down);
|
||||||
|
var altPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.Menu).HasFlag(CoreVirtualKeyStates.Down);
|
||||||
|
var shiftPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);
|
||||||
|
var winPressed = InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.LeftWindows).HasFlag(CoreVirtualKeyStates.Down) ||
|
||||||
|
InputKeyboardSource.GetKeyStateForCurrentThread(VirtualKey.RightWindows).HasFlag(CoreVirtualKeyStates.Down);
|
||||||
|
|
||||||
|
// The CommandBar is responsible for handling all the item keybindings,
|
||||||
|
// since the bound context item may need to then show another
|
||||||
|
// context menu
|
||||||
|
TryCommandKeybindingMessage msg = new(ctrlPressed, altPressed, shiftPressed, winPressed, e.Key);
|
||||||
|
WeakReferenceMessenger.Default.Send(msg);
|
||||||
|
e.Handled = msg.Handled;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FilterBox_PreviewKeyUp(object sender, KeyRoutedEventArgs e)
|
private void FilterBox_PreviewKeyUp(object sender, KeyRoutedEventArgs e)
|
||||||
|
Reference in New Issue
Block a user