diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index f12bb777428..1cce42d57f2 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -555,7 +555,7 @@ void DisplayServerWindows::_thread_fd_monitor(void *p_ud) { if (!exts.is_empty()) { String str = String(";").join(exts); filter_exts.push_back(str.utf16()); - if (tokens.size() == 2) { + if (tokens.size() >= 2) { filter_names.push_back(tokens[1].strip_edges().utf16()); } else { filter_names.push_back(str.utf16()); diff --git a/scene/gui/file_dialog.cpp b/scene/gui/file_dialog.cpp index cef4321fcff..343f267b72a 100644 --- a/scene/gui/file_dialog.cpp +++ b/scene/gui/file_dialog.cpp @@ -1127,13 +1127,13 @@ void FileDialog::update_filters() { } String native_all_name; + native_all_name += all_filters; if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_NATIVE_DIALOG_FILE_MIME)) { - native_all_name += all_filters; + if (!native_all_name.is_empty()) { + native_all_name += ", "; + } + native_all_name += all_mime; } - if (!native_all_name.is_empty()) { - native_all_name += ", "; - } - native_all_name += all_mime; if (max_filters < filters.size()) { all_filters += ", ..."; @@ -1148,13 +1148,14 @@ void FileDialog::update_filters() { String desc = filters[i].get_slicec(';', 1).strip_edges(); String mime = filters[i].get_slicec(';', 2).strip_edges(); String native_name; + + native_name += flt; if (DisplayServer::get_singleton()->has_feature(DisplayServer::FEATURE_NATIVE_DIALOG_FILE_MIME)) { - native_name += flt; + if (!native_name.is_empty() && !mime.is_empty()) { + native_name += ", "; + } + native_name += mime; } - if (!native_name.is_empty() && !mime.is_empty()) { - native_name += ", "; - } - native_name += mime; if (!desc.is_empty()) { filter->add_item(atr(desc) + " (" + flt + ")"); processed_filters.push_back(flt + ";" + atr(desc) + " (" + native_name + ");" + mime);