فهرست منبع

Merge pull request #2534 from eska014/unpress-hidden-buttons

Fix BaseButtons remaining pressed when hiding while pressed down
Juan Linietsky 10 سال پیش
والد
کامیت
6f0df4e80c
2فایلهای تغییر یافته به همراه11 افزوده شده و 1 حذف شده
  1. 1 1
      doc/base/classes.xml
  2. 10 0
      scene/gui/base_button.cpp

+ 1 - 1
doc/base/classes.xml

@@ -5018,7 +5018,7 @@
 			<return type="bool">
 			</return>
 			<description>
-			Return when the button is pressed (only if toggle_mode is active).
+			If toggle_mode is active, return whether the button is toggled. If toggle_mode is not active, return whether the button is pressed down.
 			</description>
 		</method>
 		<method name="is_hovered" qualifiers="const">

+ 10 - 0
scene/gui/base_button.cpp

@@ -255,6 +255,16 @@ void BaseButton::_notification(int p_what) {
 			group->_remove_button(this);
 	}
 
+	if (p_what==NOTIFICATION_VISIBILITY_CHANGED && !is_visible()) {
+
+		if (!toggle_mode) {
+			status.pressed = false;
+		}
+		status.hovering = false;
+		status.press_attempt = false;
+		status.pressing_inside = false;
+		status.pressing_button = 0;
+	}
 }
 
 void BaseButton::pressed() {