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();