diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index 1cd13e10c8b..3ca25bb4e31 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -1863,6 +1863,8 @@ void ProjectList::_bind_methods() { ADD_SIGNAL(MethodInfo(SIGNAL_PROJECT_ASK_OPEN)); } +ProjectManager *ProjectManager::singleton = nullptr; + void ProjectManager::_notification(int p_what) { switch (p_what) { case NOTIFICATION_TRANSLATION_CHANGED: @@ -1908,10 +1910,8 @@ void ProjectManager::_notification(int p_what) { } } -Map> ProjectManager::icon_type_cache; - Ref ProjectManager::_file_dialog_get_icon(const String &p_path) { - return icon_type_cache["ObjectHR"]; + return singleton->icon_type_cache["ObjectHR"]; } void ProjectManager::_build_icon_type_cache(Ref p_theme) { @@ -2481,6 +2481,8 @@ void ProjectManager::_version_button_pressed() { } ProjectManager::ProjectManager() { + singleton = this; + // load settings if (!EditorSettings::get_singleton()) { EditorSettings::create(); @@ -2870,6 +2872,7 @@ ProjectManager::ProjectManager() { } ProjectManager::~ProjectManager() { + singleton = nullptr; if (EditorSettings::get_singleton()) { EditorSettings::destroy(); } diff --git a/editor/project_manager.h b/editor/project_manager.h index d3cd929eb75..2965dc7d2ed 100644 --- a/editor/project_manager.h +++ b/editor/project_manager.h @@ -50,8 +50,10 @@ enum FilterOption { class ProjectManager : public Control { GDCLASS(ProjectManager, Control); - static Map> icon_type_cache; - static void _build_icon_type_cache(Ref p_theme); + Map> icon_type_cache; + void _build_icon_type_cache(Ref p_theme); + + static ProjectManager *singleton; TabContainer *tabs; @@ -139,6 +141,8 @@ protected: static void _bind_methods(); public: + static ProjectManager *get_singleton() { return singleton; } + ProjectManager(); ~ProjectManager(); }; diff --git a/main/main.cpp b/main/main.cpp index bfe560fa319..7cbafe37a3e 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1212,6 +1212,10 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph // If we didn't find a project, we fall back to the project manager. project_manager = !found_project && !cmdline_tool; } + + if (project_manager) { + Engine::get_singleton()->set_project_manager_hint(true); + } #endif GLOBAL_DEF("debug/file_logging/enable_file_logging", false); @@ -2540,7 +2544,6 @@ bool Main::start() { #ifdef TOOLS_ENABLED if (project_manager) { Engine::get_singleton()->set_editor_hint(true); - Engine::get_singleton()->set_project_manager_hint(true); ProjectManager *pmanager = memnew(ProjectManager); ProgressDialog *progress_dialog = memnew(ProgressDialog); pmanager->add_child(progress_dialog);