#pragma once #include #include #include #include "KeyDropDownControl.h" class ShortcutControl { private: // Stack panel for the drop downs to display the selected shortcut StackPanel shortcutDropDownStackPanel; // Button to type the shortcut Button typeShortcut; // StackPanel to parent the above controls StackPanel shortcutControlLayout; public: // Handle to the current Edit Shortcuts Window static HWND EditShortcutsWindowHandle; // Pointer to the keyboard manager state static KeyboardManagerState* keyboardManagerState; // Stores the current list of remappings static std::vector, std::wstring>> shortcutRemapBuffer; // Vector to store dynamically allocated KeyDropDownControl objects to avoid early destruction std::vector> keyDropDownControlObjects; ShortcutControl(Grid table, const int colIndex, TextBox targetApp) { shortcutDropDownStackPanel.Spacing(KeyboardManagerConstants::ShortcutTableDropDownSpacing); shortcutDropDownStackPanel.Orientation(Windows::UI::Xaml::Controls::Orientation::Horizontal); typeShortcut.Content(winrt::box_value(L"Type Shortcut")); typeShortcut.Width(KeyboardManagerConstants::ShortcutTableDropDownWidth); typeShortcut.Click([&, table, colIndex, targetApp](winrt::Windows::Foundation::IInspectable const& sender, RoutedEventArgs const&) { keyboardManagerState->SetUIState(KeyboardManagerUIState::DetectShortcutWindowActivated, EditShortcutsWindowHandle); // Using the XamlRoot of the typeShortcut to get the root of the XAML host createDetectShortcutWindow(sender, sender.as