瀏覽代碼

Adds a pressed signal to ButtonGroup

(cherry picked from commit 323f1769157cd9e30c504fa6f54e8ba0889cfac3)
Gilles Roudière 4 年之前
父節點
當前提交
472f7e9756
共有 2 個文件被更改,包括 16 次插入0 次删除
  1. 9 0
      doc/classes/ButtonGroup.xml
  2. 7 0
      scene/gui/base_button.cpp

+ 9 - 0
doc/classes/ButtonGroup.xml

@@ -28,6 +28,15 @@
 	<members>
 	<members>
 		<member name="resource_local_to_scene" type="bool" setter="set_local_to_scene" getter="is_local_to_scene" override="true" default="true" />
 		<member name="resource_local_to_scene" type="bool" setter="set_local_to_scene" getter="is_local_to_scene" override="true" default="true" />
 	</members>
 	</members>
+	<signals>
+		<signal name="pressed">
+			<argument index="0" name="button" type="Object">
+			</argument>
+			<description>
+				Emitted when one of the buttons of the group is pressed.
+			</description>
+		</signal>
+	</signals>
 	<constants>
 	<constants>
 	</constants>
 	</constants>
 </class>
 </class>

+ 7 - 0
scene/gui/base_button.cpp

@@ -155,6 +155,9 @@ void BaseButton::on_action_event(Ref<InputEvent> p_event) {
 				}
 				}
 				status.pressed = !status.pressed;
 				status.pressed = !status.pressed;
 				_unpress_group();
 				_unpress_group();
+				if (button_group.is_valid()) {
+					button_group->emit_signal("pressed", this);
+				}
 				_toggled(status.pressed);
 				_toggled(status.pressed);
 				_pressed();
 				_pressed();
 			}
 			}
@@ -220,6 +223,9 @@ void BaseButton::set_pressed(bool p_pressed) {
 
 
 	if (p_pressed) {
 	if (p_pressed) {
 		_unpress_group();
 		_unpress_group();
+		if (button_group.is_valid()) {
+			button_group->emit_signal("pressed", this);
+		}
 	}
 	}
 	_toggled(status.pressed);
 	_toggled(status.pressed);
 
 
@@ -480,6 +486,7 @@ BaseButton *ButtonGroup::get_pressed_button() {
 void ButtonGroup::_bind_methods() {
 void ButtonGroup::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("get_pressed_button"), &ButtonGroup::get_pressed_button);
 	ClassDB::bind_method(D_METHOD("get_pressed_button"), &ButtonGroup::get_pressed_button);
 	ClassDB::bind_method(D_METHOD("get_buttons"), &ButtonGroup::_get_buttons);
 	ClassDB::bind_method(D_METHOD("get_buttons"), &ButtonGroup::_get_buttons);
+	ADD_SIGNAL(MethodInfo("pressed", PropertyInfo(Variant::OBJECT, "button")));
 }
 }
 
 
 ButtonGroup::ButtonGroup() {
 ButtonGroup::ButtonGroup() {