diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2016-08-30 16:49:12 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-08-30 16:49:12 +0200 |
commit | 41ee85b6a0dd9e0ee6960688a63ad8036a2a0497 (patch) | |
tree | 134ea975b276b1e66f8d0eb51085fda9fe265e97 | |
parent | 5efe47fb0bd08bba569ec951ed6b6e40d4b264f1 (diff) | |
parent | 141360ed82c2eff634cdee3a7823465937876484 (diff) |
Merge pull request #5262 from vnen/button-signals
Add button_down and button_up signals
-rw-r--r-- | doc/base/classes.xml | 14 | ||||
-rw-r--r-- | scene/gui/base_button.cpp | 11 |
2 files changed, 23 insertions, 2 deletions
diff --git a/doc/base/classes.xml b/doc/base/classes.xml index 157bb0f575..144ac007c0 100644 --- a/doc/base/classes.xml +++ b/doc/base/classes.xml @@ -5922,14 +5922,24 @@ </method> </methods> <signals> + <signal name="button_down"> + <description> + Emitted when the button starts being held down. + </description> + </signal> + <signal name="button_up"> + <description> + Emitted when the button stops being held down. + </description> + </signal> <signal name="pressed"> <description> - This signal is emitted every time the button is pressed or toggled. + This signal is emitted every time the button is toggled or pressed (i.e. activated, so on [code]button_down[/code] if "Click on press" is active and on [code]button_up[/code] otherwise). </description> </signal> <signal name="released"> <description> - This signal is emitted when the button was released. + Emitted when the button was released. This is only emitted by non-toggle buttons and if "Click on press" is active. </description> </signal> <signal name="toggled"> diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp index 41d766c1b7..6479dd2d02 100644 --- a/scene/gui/base_button.cpp +++ b/scene/gui/base_button.cpp @@ -55,6 +55,8 @@ void BaseButton::_input_event(InputEvent p_event) { if (b.pressed) { + emit_signal("button_down"); + if (!toggle_mode) { //mouse press attempt status.press_attempt=true; @@ -86,6 +88,8 @@ void BaseButton::_input_event(InputEvent p_event) { } else { + emit_signal("button_up"); + if (status.press_attempt && status.pressing_inside) { // released(); emit_signal("released"); @@ -100,9 +104,11 @@ void BaseButton::_input_event(InputEvent p_event) { status.press_attempt=true; status.pressing_inside=true; + emit_signal("button_down"); } else { + emit_signal("button_up"); if (status.press_attempt &&status.pressing_inside) { @@ -173,6 +179,7 @@ void BaseButton::_input_event(InputEvent p_event) { status.pressing_button++; status.press_attempt=true; status.pressing_inside=true; + emit_signal("button_down"); } else if (status.press_attempt) { @@ -185,6 +192,8 @@ void BaseButton::_input_event(InputEvent p_event) { status.press_attempt=false; status.pressing_inside=false; + emit_signal("button_up"); + if (!toggle_mode) { //mouse press attempt pressed(); @@ -467,6 +476,8 @@ void BaseButton::_bind_methods() { ADD_SIGNAL( MethodInfo("pressed" ) ); ADD_SIGNAL( MethodInfo("released" ) ); + ADD_SIGNAL( MethodInfo("button_up") ); + ADD_SIGNAL( MethodInfo("button_down") ); ADD_SIGNAL( MethodInfo("toggled", PropertyInfo( Variant::BOOL,"pressed") ) ); ADD_PROPERTYNZ( PropertyInfo( Variant::BOOL, "disabled"), _SCS("set_disabled"), _SCS("is_disabled")); ADD_PROPERTY( PropertyInfo( Variant::BOOL, "toggle_mode"), _SCS("set_toggle_mode"), _SCS("is_toggle_mode")); |