a3d68d2b21
The Xaml input stack doesn't allow an application to suppress the "caret browsing" dialog experience triggered when you press F7. The official recommendation from the Xaml team is to catch F7 before we hand it off. This commit introduces a special F7 handler and an ad-hoc implementation of event bubbling. Runtime classes implementing a custom IF7Listener interface are considered during a modified focus parent walk to determine who can handle F7 specifically. If the recipient control handles F7, we suppress the message completely. This event bubbler has some minor issues -- the search box will not be able to receive F7 because its parent control implements the handler. Since search is already mostly a text box, it doesn't _need_ special caret browsing functionality as far as I can tell. TermControl implements its OnF7Pressed handler by synthesizing a keybindings event and an event to feed into Terminal Core directly. It's not possible to create a synthetic KeyPressRoutedEvent; if it were, I would have just popped one into the traditional input queue. :) Fixes #638.
53 lines
2 KiB
Plaintext
53 lines
2 KiB
Plaintext
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
import "../TerminalPage.idl";
|
|
import "../ShortcutActionDispatch.idl";
|
|
import "../IF7Listener.idl";
|
|
|
|
namespace TerminalApp
|
|
{
|
|
enum LaunchMode
|
|
{
|
|
DefaultMode,
|
|
MaximizedMode,
|
|
};
|
|
|
|
[default_interface] runtimeclass AppLogic: IF7Listener {
|
|
AppLogic();
|
|
|
|
// For your own sanity, it's better to do setup outside the ctor.
|
|
// If you do any setup in the ctor that ends up throwing an exception,
|
|
// then it might look like TermApp just failed to activate, which will
|
|
// cause you to chase down the rabbit hole of "why is TermApp not
|
|
// registered?" when it definitely is.
|
|
void Create();
|
|
|
|
Boolean IsUwp();
|
|
void RunAsUwp();
|
|
|
|
Int32 SetStartupCommandline(String[] commands);
|
|
String EarlyExitMessage { get; };
|
|
|
|
void LoadSettings();
|
|
Windows.UI.Xaml.UIElement GetRoot();
|
|
|
|
String Title { get; };
|
|
|
|
Windows.Foundation.Point GetLaunchDimensions(UInt32 dpi);
|
|
Windows.Foundation.Point GetLaunchInitialPositions(Int32 defaultInitialX, Int32 defaultInitialY);
|
|
Windows.UI.Xaml.ElementTheme GetRequestedTheme();
|
|
LaunchMode GetLaunchMode();
|
|
Boolean GetShowTabsInTitlebar();
|
|
Single CalcSnappedDimension(Boolean widthOrHeight, Single dimension);
|
|
void TitlebarClicked();
|
|
void WindowCloseButtonClicked();
|
|
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.UIElement> SetTitleBarContent;
|
|
event Windows.Foundation.TypedEventHandler<Object, String> TitleChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, LastTabClosedEventArgs> LastTabClosed;
|
|
event Windows.Foundation.TypedEventHandler<Object, Windows.UI.Xaml.ElementTheme> RequestedThemeChanged;
|
|
event Windows.Foundation.TypedEventHandler<Object, ToggleFullscreenEventArgs> ToggleFullscreen;
|
|
}
|
|
}
|