Before this change, the pchs for CalcViewModel and Calculator project referenced project headers. If those project headers (or any of their dependencies) were to change, then the pch would be recompiled, slowing local build times. By removing references to project headers, the pch will be compiled once and is resilient to changes in the project. Now that project headers are explicit about their dependencies, when there is a change to a project header only the translation units referencing the modified header will need to be rebuilt. - Manually tested by ensuring Calculator project builds locally. @Microsoft/calculator-team
99 lines
4.3 KiB
C++
99 lines
4.3 KiB
C++
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT License.
|
|
|
|
#pragma once
|
|
|
|
#include "Utils.h"
|
|
#include "MyVirtualKey.h"
|
|
|
|
namespace CalculatorApp
|
|
{
|
|
namespace Common
|
|
{
|
|
public ref class KeyboardShortcutManager sealed
|
|
{
|
|
public:
|
|
KeyboardShortcutManager() {}
|
|
|
|
DEPENDENCY_PROPERTY_OWNER(KeyboardShortcutManager);
|
|
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(Platform::String^, Character);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKey);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyControlChord);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyShiftChord);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyAltChord);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyControlShiftChord);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyInverseChord);
|
|
DEPENDENCY_PROPERTY_ATTACHED_WITH_CALLBACK(MyVirtualKey, VirtualKeyControlInverseChord);
|
|
|
|
internal:
|
|
|
|
static void Initialize();
|
|
|
|
// Sometimes, like with popups, escape is treated as special and even
|
|
// though it is handled we get it passed through to us. In those cases
|
|
// we need to be able to ignore it (looking at e->Hanlded isn't sufficient
|
|
// because that always returns true).
|
|
// The onlyOnce flag is used to indicate whether we should only ignore the
|
|
// next escape, or keep ignoring until you explicitly HonorEscape.
|
|
static void IgnoreEscape(bool onlyOnce);
|
|
static void HonorEscape();
|
|
static void HonorShortcuts(bool allow);
|
|
static void HandledEnter(bool ishandled);
|
|
static void UpdateDropDownState(bool);
|
|
static void ShiftButtonChecked(bool checked);
|
|
static void UpdateDropDownState(Windows::UI::Xaml::Controls::Flyout^ aboutPageFlyout);
|
|
|
|
static void RegisterNewAppViewId();
|
|
static void OnWindowClosed(int viewId);
|
|
|
|
private:
|
|
|
|
static void OnCharacterPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
Platform::String^ oldValue,
|
|
Platform::String^ newValue);
|
|
|
|
static void OnVirtualKeyPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyControlChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyShiftChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyInverseChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyControlInverseChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyAltChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnVirtualKeyControlShiftChordPropertyChanged(
|
|
Windows::UI::Xaml::DependencyObject^ target,
|
|
MyVirtualKey oldValue,
|
|
MyVirtualKey newValue);
|
|
|
|
static void OnCharacterReceivedHandler(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::CharacterReceivedEventArgs^ args);
|
|
static void OnKeyDownHandler(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
|
|
static void OnKeyUpHandler(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::KeyEventArgs^ args);
|
|
static void OnAcceleratorKeyActivated(Windows::UI::Core::CoreDispatcher^, Windows::UI::Core::AcceleratorKeyEventArgs^ args);
|
|
};
|
|
}
|
|
}
|