summaryrefslogtreecommitdiff
path: root/core/os
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2019-02-16 00:26:07 +0100
committerHugo Locurcio <hugo.locurcio@hugo.pro>2019-02-16 00:29:23 +0100
commitb54910eb05296380a0bb9b97df3af8eedac11250 (patch)
tree84a38666162f73f7bba20901e513026d83c7c1fa /core/os
parentf5477ee36f2d34a5d6db0ee3e1516e9c12be28d5 (diff)
Make Button shortcuts triggerable by gamepads
This closes #25741.
Diffstat (limited to 'core/os')
-rw-r--r--core/os/input_event.cpp14
-rw-r--r--core/os/input_event.h1
2 files changed, 12 insertions, 3 deletions
diff --git a/core/os/input_event.cpp b/core/os/input_event.cpp
index 1e0e83c8d2..24ec8a1963 100644
--- a/core/os/input_event.cpp
+++ b/core/os/input_event.cpp
@@ -749,6 +749,15 @@ bool InputEventJoypadButton::action_match(const Ref<InputEvent> &p_event, bool *
return match;
}
+bool InputEventJoypadButton::shortcut_match(const Ref<InputEvent> &p_event) const {
+
+ Ref<InputEventJoypadButton> button = p_event;
+ if (button.is_null())
+ return false;
+
+ return button_index == button->button_index;
+}
+
String InputEventJoypadButton::as_text() const {
return "InputEventJoypadButton : button_index=" + itos(button_index) + ", pressed=" + (pressed ? "true" : "false") + ", pressure=" + String(Variant(pressure));
@@ -950,11 +959,10 @@ bool InputEventAction::is_pressed() const {
}
bool InputEventAction::shortcut_match(const Ref<InputEvent> &p_event) const {
- Ref<InputEventKey> event = p_event;
- if (event.is_null())
+ if (p_event.is_null())
return false;
- return event->is_action(action);
+ return p_event->is_action(action);
}
bool InputEventAction::is_action(const StringName &p_action) const {
diff --git a/core/os/input_event.h b/core/os/input_event.h
index db31055b5f..a6a7012298 100644
--- a/core/os/input_event.h
+++ b/core/os/input_event.h
@@ -400,6 +400,7 @@ public:
float get_pressure() const;
virtual bool action_match(const Ref<InputEvent> &p_event, bool *p_pressed, float *p_strength, float p_deadzone) const;
+ virtual bool shortcut_match(const Ref<InputEvent> &p_event) const;
virtual bool is_action_type() const { return true; }
virtual String as_text() const;