Fix auto-reparenting logic in the ProgressDialog
* Make sure `Popup` signals are disconnected when unparented. * Remove a fail condition from `Window::is_embedded` when not in tree.
This commit is contained in:
parent
2f57da2907
commit
4c5c7cbb58
5 changed files with 6 additions and 15 deletions
|
|
@ -134,29 +134,21 @@ void BackgroundProgress::end_task(const String &p_task) {
|
|||
|
||||
ProgressDialog *ProgressDialog::singleton = nullptr;
|
||||
|
||||
void ProgressDialog::_notification(int p_what) {
|
||||
if (p_what == NOTIFICATION_VISIBILITY_CHANGED) {
|
||||
if (!is_visible()) {
|
||||
Node *p = get_parent();
|
||||
if (p) {
|
||||
p->remove_child(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressDialog::_popup() {
|
||||
Size2 ms = main->get_combined_minimum_size();
|
||||
ms.width = MAX(500 * EDSCALE, ms.width);
|
||||
|
||||
Ref<StyleBox> style = main->get_theme_stylebox(SNAME("panel"), SNAME("PopupMenu"));
|
||||
ms += style->get_minimum_size();
|
||||
|
||||
main->set_offset(SIDE_LEFT, style->get_margin(SIDE_LEFT));
|
||||
main->set_offset(SIDE_RIGHT, -style->get_margin(SIDE_RIGHT));
|
||||
main->set_offset(SIDE_TOP, style->get_margin(SIDE_TOP));
|
||||
main->set_offset(SIDE_BOTTOM, -style->get_margin(SIDE_BOTTOM));
|
||||
|
||||
EditorInterface::get_singleton()->popup_dialog_centered(this, ms);
|
||||
if (!is_inside_tree()) {
|
||||
EditorInterface::get_singleton()->popup_dialog_centered(this, ms);
|
||||
}
|
||||
}
|
||||
|
||||
void ProgressDialog::add_task(const String &p_task, const String &p_label, int p_steps, bool p_can_cancel) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue