diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2021-08-10 18:55:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-10 18:55:22 +0200 |
commit | dce488d8f786cd3f67719196d21fbeca9c8bf688 (patch) | |
tree | 6c489f4bc1ff4411f343a7bcf95e0fb2bbff4c9c /scene/gui | |
parent | d915c187d0caeaf392c055e880c001c5835eae51 (diff) | |
parent | a0a019a99826d7afbe701a3157324e8ccc1edf80 (diff) |
Merge pull request #49417 from Bhu1-V/gsoc-cmd-plt
Command Palette For Godot
Diffstat (limited to 'scene/gui')
-rw-r--r-- | scene/gui/base_button.cpp | 3 | ||||
-rw-r--r-- | scene/gui/menu_button.cpp | 2 | ||||
-rw-r--r-- | scene/gui/shortcut.cpp | 8 |
3 files changed, 11 insertions, 2 deletions
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index 82f4a216b8..871ad889ca 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -145,6 +145,9 @@ void BaseButton::on_action_event(Ref<InputEvent> p_event) { if (status.press_attempt && status.pressing_inside) { if (toggle_mode) { + if (Object::cast_to<InputEventShortcut>(*p_event)) { + action_mode = ACTION_MODE_BUTTON_PRESS; // HACK. + } if ((p_event->is_pressed() && action_mode == ACTION_MODE_BUTTON_PRESS) || (!p_event->is_pressed() && action_mode == ACTION_MODE_BUTTON_RELEASE)) { if (action_mode == ACTION_MODE_BUTTON_PRESS) { status.press_attempt = false; diff --git a/scene/gui/menu_button.cpp b/scene/gui/menu_button.cpp index cf1f41d0fc..63b5793b3e 100644 --- a/scene/gui/menu_button.cpp +++ b/scene/gui/menu_button.cpp @@ -44,7 +44,7 @@ void MenuButton::_unhandled_key_input(Ref<InputEvent> p_event) { return; } - if (p_event->is_pressed() && !p_event->is_echo() && (Object::cast_to<InputEventKey>(p_event.ptr()) || Object::cast_to<InputEventJoypadButton>(p_event.ptr()) || Object::cast_to<InputEventAction>(*p_event))) { + if (p_event->is_pressed() && !p_event->is_echo() && (Object::cast_to<InputEventKey>(p_event.ptr()) || Object::cast_to<InputEventJoypadButton>(p_event.ptr()) || Object::cast_to<InputEventAction>(*p_event) || Object::cast_to<InputEventShortcut>(*p_event))) { if (!get_parent() || !is_visible_in_tree() || is_disabled()) { return; } diff --git a/scene/gui/shortcut.cpp b/scene/gui/shortcut.cpp index 885a51e058..1c29870682 100644 --- a/scene/gui/shortcut.cpp +++ b/scene/gui/shortcut.cpp @@ -29,10 +29,10 @@ /*************************************************************************/ #include "shortcut.h" - #include "core/os/keyboard.h" void Shortcut::set_event(const Ref<InputEvent> &p_event) { + ERR_FAIL_COND(Object::cast_to<InputEventShortcut>(*p_event)); event = p_event; emit_changed(); } @@ -42,6 +42,12 @@ Ref<InputEvent> Shortcut::get_event() const { } bool Shortcut::matches_event(const Ref<InputEvent> &p_event) const { + Ref<InputEventShortcut> ies = p_event; + if (ies != nullptr) { + if (ies->get_shortcut().ptr() == this) { + return true; + } + } return event.is_valid() && event->is_match(p_event, true); } |