BaseButton: Make shortcuts call virtual methods
When buttons are not in Toggle Mode, shortcuts used to only trigger the `pressed` signal, without calling the `_pressed` virtual method, contrarily to what happens when you click the button. For Toggle Mode buttons, it did call the `_toggled` virtual method together with emitting the `toggled` signal *twice*. This commit harmonizes it all and makes shortcuts behave the same as mouse clicks or `ui_accept`, for both toggle and non-toggle modes. Fixes #29604.
This commit is contained in:
parent
4073da7ddd
commit
2cedf7173a
1 changed files with 3 additions and 9 deletions
|
@ -216,9 +216,7 @@ void BaseButton::set_pressed(bool p_pressed) {
|
|||
if (p_pressed) {
|
||||
_unpress_group();
|
||||
}
|
||||
if (toggle_mode) {
|
||||
_toggled(status.pressed);
|
||||
}
|
||||
_toggled(status.pressed);
|
||||
|
||||
update();
|
||||
}
|
||||
|
@ -337,9 +335,6 @@ bool BaseButton::is_keep_pressed_outside() const {
|
|||
|
||||
void BaseButton::set_shortcut(const Ref<ShortCut> &p_shortcut) {
|
||||
|
||||
if (shortcut.is_null() == p_shortcut.is_null())
|
||||
return;
|
||||
|
||||
shortcut = p_shortcut;
|
||||
set_process_unhandled_input(shortcut.is_valid());
|
||||
}
|
||||
|
@ -356,11 +351,10 @@ void BaseButton::_unhandled_input(Ref<InputEvent> p_event) {
|
|||
return; //ignore because of modal window
|
||||
|
||||
if (is_toggle_mode()) {
|
||||
set_pressed(!is_pressed());
|
||||
emit_signal("toggled", is_pressed());
|
||||
set_pressed(!is_pressed()); // Also calls _toggled() internally.
|
||||
}
|
||||
|
||||
emit_signal("pressed");
|
||||
_pressed();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue