|
1 | 1 | #ifndef NUIE_INPUTEVENTHANDLER_HPP |
2 | 2 | #define NUIE_INPUTEVENTHANDLER_HPP |
3 | 3 |
|
| 4 | +#include "NUIE_HashUtils.hpp" |
4 | 5 | #include "NUIE_Geometry.hpp" |
5 | 6 | #include "NUIE_NodeUIEnvironment.hpp" |
6 | 7 |
|
@@ -34,44 +35,18 @@ enum class KeyCode |
34 | 35 | Escape |
35 | 36 | }; |
36 | 37 |
|
37 | | -} |
38 | | - |
39 | | -namespace std |
40 | | -{ |
41 | | - template <> |
42 | | - struct hash<NUIE::MouseButton> |
43 | | - { |
44 | | - size_t operator() (const NUIE::MouseButton& button) const noexcept |
45 | | - { |
46 | | - return (size_t) button; |
47 | | - } |
48 | | - }; |
49 | | - |
50 | | - template <> |
51 | | - struct hash<NUIE::ModifierKeyCode> |
52 | | - { |
53 | | - size_t operator() (const NUIE::ModifierKeyCode& keyCode) const noexcept |
54 | | - { |
55 | | - return (size_t) keyCode; |
56 | | - } |
57 | | - }; |
58 | | -} |
59 | | - |
60 | | -namespace NUIE |
61 | | -{ |
62 | | - |
63 | 38 | class ModifierKeys |
64 | 39 | { |
65 | 40 | public: |
66 | 41 | ModifierKeys (); |
67 | | - ModifierKeys (const std::unordered_set<ModifierKeyCode>& keys); |
| 42 | + ModifierKeys (const std::initializer_list<ModifierKeyCode>& keyCodes); |
68 | 43 | ~ModifierKeys (); |
69 | 44 |
|
70 | 45 | void Insert (ModifierKeyCode keyCode); |
71 | 46 | bool Contains (ModifierKeyCode keyCode) const; |
72 | 47 |
|
73 | 48 | private: |
74 | | - std::unordered_set<ModifierKeyCode> keys; |
| 49 | + std::unordered_set<ModifierKeyCode, EnumHash> keys; |
75 | 50 | }; |
76 | 51 |
|
77 | 52 | extern const ModifierKeys EmptyModifierKeys; |
@@ -109,9 +84,9 @@ class MouseEventTranslator |
109 | 84 | void OnMouseMove (NodeUIEnvironment& env, const ModifierKeys& modifierKeys, const Point& position); |
110 | 85 |
|
111 | 86 | private: |
112 | | - InputEventHandler& handler; |
113 | | - std::unordered_map<MouseButton, Point> downMouseButtons; |
114 | | - std::unordered_set<MouseButton> movingMouseButtons; |
| 87 | + InputEventHandler& handler; |
| 88 | + std::unordered_map<MouseButton, Point, EnumHash> downMouseButtons; |
| 89 | + std::unordered_set<MouseButton, EnumHash> movingMouseButtons; |
115 | 90 | }; |
116 | 91 |
|
117 | 92 | } |
|
0 commit comments