diff --git a/editor/gui/editor_quick_open_dialog.cpp b/editor/gui/editor_quick_open_dialog.cpp index d24d37b302f..83b11e70221 100644 --- a/editor/gui/editor_quick_open_dialog.cpp +++ b/editor/gui/editor_quick_open_dialog.cpp @@ -223,13 +223,16 @@ QuickOpenResultContainer::QuickOpenResultContainer() { } QuickOpenResultContainer::~QuickOpenResultContainer() { - for (QuickOpenResultItem *E : result_items) { - memdelete(E); + if (never_opened) { + for (QuickOpenResultItem *E : result_items) { + memdelete(E); + } } } void QuickOpenResultContainer::init(const Vector &p_base_types) { base_types = p_base_types; + never_opened = false; const int display_mode_behavior = EDITOR_GET("filesystem/quick_open_dialog/default_display_mode"); const bool adaptive_display_mode = (display_mode_behavior == 0); @@ -574,13 +577,9 @@ void QuickOpenResultContainer::_toggle_display_mode() { void QuickOpenResultContainer::_set_display_mode(QuickOpenDisplayMode p_display_mode) { content_display_mode = p_display_mode; - const bool first_time = !list->is_visible() && !grid->is_visible(); - - if (!first_time) { - const bool show_list = (content_display_mode == QuickOpenDisplayMode::LIST); - if ((show_list && list->is_visible()) || (!show_list && grid->is_visible())) { - return; - } + const bool show_list = (content_display_mode == QuickOpenDisplayMode::LIST); + if ((show_list && list->is_visible()) || (!show_list && grid->is_visible())) { + return; } hide(); @@ -596,6 +595,8 @@ void QuickOpenResultContainer::_set_display_mode(QuickOpenDisplayMode p_display_ next_root = Object::cast_to(grid); } + const bool first_time = !list->is_visible() && !grid->is_visible(); + prev_root->hide(); for (QuickOpenResultItem *item : result_items) { item->set_display_mode(content_display_mode); diff --git a/editor/gui/editor_quick_open_dialog.h b/editor/gui/editor_quick_open_dialog.h index d2177375dc1..49257aed6b6 100644 --- a/editor/gui/editor_quick_open_dialog.h +++ b/editor/gui/editor_quick_open_dialog.h @@ -96,7 +96,9 @@ private: int selection_index = -1; int num_visible_results = 0; int max_total_results = 0; + bool showing_history = false; + bool never_opened = true; QuickOpenDisplayMode content_display_mode = QuickOpenDisplayMode::LIST; Vector result_items;