Merge pull request #29261 from volzhs/fix-basebutton

Fix BaseButton not emitting signal with virtual function
This commit is contained in:
Rémi Verschelde 2019-05-29 13:16:02 +02:00 committed by GitHub
commit e832a3269c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 6 deletions

View file

@ -76,12 +76,12 @@ void BaseButton::_gui_input(Ref<InputEvent> p_event) {
} }
status.pressed = !status.pressed; status.pressed = !status.pressed;
_unpress_group(); _unpress_group();
toggled(status.pressed); _toggled(status.pressed);
pressed(); _pressed();
} }
} else { } else {
if (!p_event->is_pressed()) { if (!p_event->is_pressed()) {
pressed(); _pressed();
} }
} }
} }
@ -159,22 +159,30 @@ void BaseButton::_notification(int p_what) {
} }
} }
void BaseButton::pressed() { void BaseButton::_pressed() {
if (get_script_instance()) { if (get_script_instance()) {
get_script_instance()->call(SceneStringNames::get_singleton()->_pressed); get_script_instance()->call(SceneStringNames::get_singleton()->_pressed);
} }
pressed();
emit_signal("pressed"); emit_signal("pressed");
} }
void BaseButton::toggled(bool p_pressed) { void BaseButton::_toggled(bool p_pressed) {
if (get_script_instance()) { if (get_script_instance()) {
get_script_instance()->call(SceneStringNames::get_singleton()->_toggled, p_pressed); get_script_instance()->call(SceneStringNames::get_singleton()->_toggled, p_pressed);
} }
toggled(p_pressed);
emit_signal("toggled", p_pressed); emit_signal("toggled", p_pressed);
} }
void BaseButton::pressed() {
}
void BaseButton::toggled(bool p_pressed) {
}
void BaseButton::set_disabled(bool p_disabled) { void BaseButton::set_disabled(bool p_disabled) {
if (status.disabled == p_disabled) if (status.disabled == p_disabled)
return; return;
@ -209,7 +217,7 @@ void BaseButton::set_pressed(bool p_pressed) {
_unpress_group(); _unpress_group();
} }
if (toggle_mode) { if (toggle_mode) {
toggled(status.pressed); _toggled(status.pressed);
} }
update(); update();

View file

@ -71,6 +71,8 @@ private:
Ref<ButtonGroup> button_group; Ref<ButtonGroup> button_group;
void _unpress_group(); void _unpress_group();
void _pressed();
void _toggled(bool p_pressed);
protected: protected:
virtual void pressed(); virtual void pressed();