mirror of
https://github.com/godotengine/godot.git
synced 2025-02-16 07:40:36 +00:00
Fix crash in QuickOpenDialog because of double free.
This commit is contained in:
parent
1917bc3454
commit
6d23fac021
@ -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<StringName> &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<CanvasItem>(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);
|
||||
|
@ -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<QuickOpenResultItem *> result_items;
|
||||
|
Loading…
Reference in New Issue
Block a user