e8ece1645c
For mysterious reasons lost to the sands of time, XAML will _never_ pass us a VK_MENU event. This is something that'll probably get fixed in WinUI 3, but considering we're stuck on system XAML for the time being, the only way to work around this bug is to pass the event through manually. This change generalizes the F7 handler into a "direct key event" handler that uses the same focus and tunneling method to send different key events, and then uses it to send VK_MENU. ## Validation Steps Performed Opened the debug tap, verified that I was seeing alt key ups. Also used some alt keybindings to make sure I didn't break them. Closes #6421
40 lines
1.5 KiB
C++
40 lines
1.5 KiB
C++
// Copyright (c) Microsoft Corporation.
|
|
// Licensed under the MIT license.
|
|
|
|
#include "pch.h"
|
|
|
|
#include <winrt/Microsoft.Terminal.TerminalControl.h>
|
|
#include <winrt/TerminalApp.h>
|
|
|
|
#include "NonClientIslandWindow.h"
|
|
|
|
class AppHost
|
|
{
|
|
public:
|
|
AppHost() noexcept;
|
|
virtual ~AppHost();
|
|
|
|
void AppTitleChanged(const winrt::Windows::Foundation::IInspectable& sender, winrt::hstring newTitle);
|
|
void LastTabClosed(const winrt::Windows::Foundation::IInspectable& sender, const winrt::TerminalApp::LastTabClosedEventArgs& args);
|
|
void Initialize();
|
|
bool OnDirectKeyEvent(const uint32_t vkey, const bool down);
|
|
|
|
private:
|
|
bool _useNonClientArea;
|
|
|
|
std::unique_ptr<IslandWindow> _window;
|
|
winrt::TerminalApp::App _app;
|
|
winrt::TerminalApp::AppLogic _logic;
|
|
|
|
void _HandleCommandlineArgs();
|
|
|
|
void _HandleCreateWindow(const HWND hwnd, RECT proposedRect, winrt::TerminalApp::LaunchMode& launchMode);
|
|
void _UpdateTitleBarContent(const winrt::Windows::Foundation::IInspectable& sender,
|
|
const winrt::Windows::UI::Xaml::UIElement& arg);
|
|
void _UpdateTheme(const winrt::Windows::Foundation::IInspectable&,
|
|
const winrt::Windows::UI::Xaml::ElementTheme& arg);
|
|
void _ToggleFullscreen(const winrt::Windows::Foundation::IInspectable& sender,
|
|
const winrt::TerminalApp::ToggleFullscreenEventArgs& arg);
|
|
void _WindowMouseWheeled(const til::point coord, const int32_t delta);
|
|
};
|