From 63409a91e0f0da9aa24135db0d6e0bb6d21d9a11 Mon Sep 17 00:00:00 2001
From: Giganzo <158825920+Giganzo@users.noreply.github.com>
Date: Thu, 24 Jul 2025 00:21:59 +0200
Subject: [PATCH] Fix button down signal not emitting on first press after
being disabled
---
doc/classes/BaseButton.xml | 1 +
scene/gui/base_button.cpp | 4 ++++
2 files changed, 5 insertions(+)
diff --git a/doc/classes/BaseButton.xml b/doc/classes/BaseButton.xml
index 1ce3284392..2554528bcc 100644
--- a/doc/classes/BaseButton.xml
+++ b/doc/classes/BaseButton.xml
@@ -61,6 +61,7 @@
If [code]true[/code], the button is in disabled state and can't be clicked or toggled.
+ [b]Note:[/b] If the button is disabled while held down, [signal button_up] will be emitted.
diff --git a/scene/gui/base_button.cpp b/scene/gui/base_button.cpp
index a488f76782..bf0bd6d345 100644
--- a/scene/gui/base_button.cpp
+++ b/scene/gui/base_button.cpp
@@ -266,6 +266,10 @@ void BaseButton::set_disabled(bool p_disabled) {
}
status.press_attempt = false;
status.pressing_inside = false;
+ if (status.pressed_down_with_focus) {
+ status.pressed_down_with_focus = false;
+ emit_signal(SNAME("button_up"));
+ }
}
queue_accessibility_update();
queue_redraw();