## Summary of the Pull Request Moves all the code responsible for dispatching an `ActionAndArgs` to it's own class, `ShortcutActionDispatch`. Now, the `AppKeyBindings` just uses the single instance of a `ShortcutActionDispatch` that the `TerminalPage` owns to dispatch events, without the need to re-attach the event handlers every time we reload the settings. ## References This is something I originally did as a part of #2046. I need this now for #607. It's also a part of work for #3475 ## PR Checklist * [x] This is a bullet point within #3475 * [x] I work here * [ ] Tests added/passed * [n/a] Requires documentation to be updated ## Detailed Description of the Pull Request / Additional comments With this change, we'll be able to have other things dispatch `ShortcutAction`s easily, by constructing an `ActionAndArgs` and just passing it straight to the `ShortcutActionDispatch`. ## Validation Steps Performed Ran the Terminal, tried out some keybindings, namely <kbd>Ctrl+c</kbd> for copy when there is a selection, or send `^C` when there isn't. That still works. Reloading settings also still works. ----------------------------------------------- * Move action handling to it's own class separate from AKB. This is the first checkbox in #3475 (cherry picked from commit 696726b571d3d1fdf1d59844c76e182fc72cb2ea) * clean up doc comments
104 lines
4.6 KiB
Plaintext
104 lines
4.6 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
import "../ActionArgs.idl";
|
|
|
|
namespace TerminalApp
|
|
{
|
|
// TODO: GH#1069 - Many of these shortcut actions are "legacy" now that we
|
|
// have support for arbitrary args (#1142). We should remove them, and our
|
|
// legacy deserializers.
|
|
enum ShortcutAction
|
|
{
|
|
Invalid = 0,
|
|
CopyText,
|
|
CopyTextWithoutNewlines,
|
|
PasteText,
|
|
OpenNewTabDropdown,
|
|
DuplicateTab,
|
|
NewTab,
|
|
NewTabProfile0, // Legacy
|
|
NewTabProfile1, // Legacy
|
|
NewTabProfile2, // Legacy
|
|
NewTabProfile3, // Legacy
|
|
NewTabProfile4, // Legacy
|
|
NewTabProfile5, // Legacy
|
|
NewTabProfile6, // Legacy
|
|
NewTabProfile7, // Legacy
|
|
NewTabProfile8, // Legacy
|
|
NewWindow,
|
|
CloseWindow,
|
|
CloseTab,
|
|
ClosePane,
|
|
NextTab,
|
|
PrevTab,
|
|
SplitVertical,
|
|
SplitHorizontal,
|
|
SwitchToTab,
|
|
SwitchToTab0, // Legacy
|
|
SwitchToTab1, // Legacy
|
|
SwitchToTab2, // Legacy
|
|
SwitchToTab3, // Legacy
|
|
SwitchToTab4, // Legacy
|
|
SwitchToTab5, // Legacy
|
|
SwitchToTab6, // Legacy
|
|
SwitchToTab7, // Legacy
|
|
SwitchToTab8, // Legacy
|
|
IncreaseFontSize,
|
|
DecreaseFontSize,
|
|
ResetFontSize,
|
|
ScrollUp,
|
|
ScrollDown,
|
|
ScrollUpPage,
|
|
ScrollDownPage,
|
|
ResizePane,
|
|
ResizePaneLeft, // Legacy
|
|
ResizePaneRight, // Legacy
|
|
ResizePaneUp, // Legacy
|
|
ResizePaneDown, // Legacy
|
|
MoveFocus,
|
|
MoveFocusLeft, // Legacy
|
|
MoveFocusRight, // Legacy
|
|
MoveFocusUp, // Legacy
|
|
MoveFocusDown, // Legacy
|
|
ToggleFullscreen,
|
|
OpenSettings
|
|
};
|
|
|
|
[default_interface] runtimeclass ActionAndArgs {
|
|
ActionAndArgs();
|
|
IActionArgs Args;
|
|
ShortcutAction Action;
|
|
};
|
|
|
|
[default_interface] runtimeclass ShortcutActionDispatch {
|
|
ShortcutActionDispatch();
|
|
|
|
Boolean DoAction(ActionAndArgs actionAndArgs);
|
|
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> CopyText;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> PasteText;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> NewTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> OpenNewTabDropdown;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> DuplicateTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> NewWindow;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> CloseWindow;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> CloseTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ClosePane;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> SwitchToTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> NextTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> PrevTab;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> SplitVertical;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> SplitHorizontal;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> AdjustFontSize;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ResetFontSize;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ScrollUp;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ScrollDown;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ScrollUpPage;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ScrollDownPage;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> OpenSettings;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ResizePane;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> MoveFocus;
|
|
event Windows.Foundation.TypedEventHandler<ShortcutActionDispatch, ActionEventArgs> ToggleFullscreen;
|
|
}
|
|
}
|