Prevent loading project-specific config in Project Manager

The Project Manager should share the same settings as the editor most of the time.
The whole init stuff with Main::setup and Main::start needs a good cleanup though.

Fixes #15199.
This commit is contained in:
Rémi Verschelde 2018-02-19 13:31:06 +01:00
parent fee29570d0
commit f9b292b935
1 changed files with 21 additions and 28 deletions

View File

@ -780,6 +780,7 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->add_logger(memnew(RotatedFileLogger(base_path, max_files))); OS::get_singleton()->add_logger(memnew(RotatedFileLogger(base_path, max_files)));
} }
#ifdef TOOLS_ENABLED
if (editor) { if (editor) {
Engine::get_singleton()->set_editor_hint(true); Engine::get_singleton()->set_editor_hint(true);
main_args.push_back("--editor"); main_args.push_back("--editor");
@ -787,7 +788,23 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
init_maximized = true; init_maximized = true;
video_mode.maximized = true; video_mode.maximized = true;
} }
}
if (!project_manager) {
// Determine if the project manager should be requested
project_manager =
main_args.size() == 0 &&
!ProjectSettings::get_singleton()->has_setting("application/run/main_loop_type") &&
(!ProjectSettings::get_singleton()->has_setting("application/run/main_scene") ||
String(ProjectSettings::get_singleton()->get("application/run/main_scene")) == "");
}
#endif
if (editor || project_manager) {
use_custom_res = false; use_custom_res = false;
input_map->load_default(); //keys for editor
} else {
input_map->load_from_globals(); //keys for game
} }
if (bool(ProjectSettings::get_singleton()->get("application/run/disable_stdout"))) { if (bool(ProjectSettings::get_singleton()->get("application/run/disable_stdout"))) {
@ -802,28 +819,6 @@ Error Main::setup(const char *execpath, int argc, char *argv[], bool p_second_ph
OS::get_singleton()->set_cmdline(execpath, main_args); OS::get_singleton()->set_cmdline(execpath, main_args);
#ifdef TOOLS_ENABLED
if (!project_manager) {
// Determine if the project manager should be requested
project_manager =
main_args.size() == 0 &&
!ProjectSettings::get_singleton()->has_setting("application/run/main_loop_type") &&
(!ProjectSettings::get_singleton()->has_setting("application/run/main_scene") ||
String(ProjectSettings::get_singleton()->get("application/run/main_scene")) == "");
}
if (project_manager) {
use_custom_res = false; //project manager (run without arguments)
}
#endif
if (editor)
input_map->load_default(); //keys for editor
else
input_map->load_from_globals(); //keys for game
//if (video_driver == "") // useless for now, so removing //if (video_driver == "") // useless for now, so removing
// video_driver = GLOBAL_DEF("display/driver/name", Variant((const char *)OS::get_singleton()->get_video_driver_name(0))); // video_driver = GLOBAL_DEF("display/driver/name", Variant((const char *)OS::get_singleton()->get_video_driver_name(0)));
@ -1104,7 +1099,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
MAIN_PRINT("Main: Create bootsplash"); MAIN_PRINT("Main: Create bootsplash");
#if defined(TOOLS_ENABLED) && !defined(NO_EDITOR_SPLASH) #if defined(TOOLS_ENABLED) && !defined(NO_EDITOR_SPLASH)
Ref<Image> splash = editor ? memnew(Image(boot_splash_editor_png)) : memnew(Image(boot_splash_png)); Ref<Image> splash = (editor || project_manager) ? memnew(Image(boot_splash_editor_png)) : memnew(Image(boot_splash_png));
#else #else
Ref<Image> splash = memnew(Image(boot_splash_png)); Ref<Image> splash = memnew(Image(boot_splash_png));
#endif #endif
@ -1130,7 +1125,7 @@ Error Main::setup2(Thread::ID p_main_tid_override) {
ProjectSettings::get_singleton()->set_custom_property_info("application/config/icon", PropertyInfo(Variant::STRING, "application/config/icon", PROPERTY_HINT_FILE, "*.png,*.webp")); ProjectSettings::get_singleton()->set_custom_property_info("application/config/icon", PropertyInfo(Variant::STRING, "application/config/icon", PROPERTY_HINT_FILE, "*.png,*.webp"));
if (bool(GLOBAL_DEF("display/window/handheld/emulate_touchscreen", false))) { if (bool(GLOBAL_DEF("display/window/handheld/emulate_touchscreen", false))) {
if (!OS::get_singleton()->has_touchscreen_ui_hint() && Input::get_singleton() && !editor) { if (!OS::get_singleton()->has_touchscreen_ui_hint() && Input::get_singleton() && !(editor || project_manager)) {
//only if no touchscreen ui hint, set emulation //only if no touchscreen ui hint, set emulation
InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton()); InputDefault *id = Object::cast_to<InputDefault>(Input::get_singleton());
if (id) if (id)
@ -1218,7 +1213,6 @@ bool Main::start() {
ERR_FAIL_COND_V(!_start_success, false); ERR_FAIL_COND_V(!_start_success, false);
bool hasicon = false; bool hasicon = false;
bool editor = false;
String doc_tool; String doc_tool;
List<String> removal_docs; List<String> removal_docs;
bool doc_base = true; bool doc_base = true;
@ -1452,7 +1446,7 @@ bool Main::start() {
{ {
} }
if (!editor) { if (!editor && !project_manager) {
//standard helpers that can be changed from main config //standard helpers that can be changed from main config
String stretch_mode = GLOBAL_DEF("display/window/stretch/mode", "disabled"); String stretch_mode = GLOBAL_DEF("display/window/stretch/mode", "disabled");
@ -1563,7 +1557,7 @@ bool Main::start() {
#endif #endif
} }
if (!project_manager && !editor) { if (!project_manager && !editor) { // game
if (game_path != "" || script != "") { if (game_path != "" || script != "") {
//autoload //autoload
List<PropertyInfo> props; List<PropertyInfo> props;
@ -1645,7 +1639,6 @@ bool Main::start() {
sml->get_root()->add_child(E->get()); sml->get_root()->add_child(E->get());
} }
//singletons
} }
if (game_path != "") { if (game_path != "") {