Close toasts instantly when Close button is pressed

This commit is contained in:
kobewi 2024-11-03 15:04:50 +01:00
parent 0f5f3bc954
commit cb7304662b
2 changed files with 7 additions and 1 deletions

View file

@ -375,7 +375,7 @@ Control *EditorToaster::popup(Control *p_control, Severity p_severity, double p_
if (p_time > 0.0) { if (p_time > 0.0) {
Button *close_button = memnew(Button); Button *close_button = memnew(Button);
close_button->set_flat(true); close_button->set_flat(true);
close_button->connect(SceneStringName(pressed), callable_mp(this, &EditorToaster::close).bind(panel)); close_button->connect(SceneStringName(pressed), callable_mp(this, &EditorToaster::instant_close).bind(panel));
hbox_container->add_child(close_button); hbox_container->add_child(close_button);
toast.close_button = close_button; toast.close_button = close_button;
@ -501,6 +501,11 @@ void EditorToaster::close(Control *p_control) {
toasts[p_control].popped = false; toasts[p_control].popped = false;
} }
void EditorToaster::instant_close(Control *p_control) {
close(p_control);
p_control->set_modulate(Color(1, 1, 1, 0));
}
EditorToaster *EditorToaster::get_singleton() { EditorToaster *EditorToaster::get_singleton() {
return singleton; return singleton;
} }

View file

@ -115,6 +115,7 @@ public:
Control *popup(Control *p_control, Severity p_severity = SEVERITY_INFO, double p_time = 0.0, const String &p_tooltip = String()); Control *popup(Control *p_control, Severity p_severity = SEVERITY_INFO, double p_time = 0.0, const String &p_tooltip = String());
void popup_str(const String &p_message, Severity p_severity = SEVERITY_INFO, const String &p_tooltip = String()); void popup_str(const String &p_message, Severity p_severity = SEVERITY_INFO, const String &p_tooltip = String());
void close(Control *p_control); void close(Control *p_control);
void instant_close(Control *p_control);
EditorToaster(); EditorToaster();
~EditorToaster(); ~EditorToaster();