From 475a46c59cdc1d5abcd3a9f7441a0689847df186 Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Sat, 18 Aug 2018 15:30:00 +0200 Subject: [PATCH] Add more project window placement options It is now possible to use the previous or next monitor (relative to the editor) to display running projects. If either end is reached, it will wrap around to the last or first monitor (respectively). This closes #20283. --- editor/editor_run.cpp | 17 ++++++++++++++++- editor/editor_settings.cpp | 2 +- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/editor/editor_run.cpp b/editor/editor_run.cpp index 749cf6aa2b5..62870ab35c5 100644 --- a/editor/editor_run.cpp +++ b/editor/editor_run.cpp @@ -68,9 +68,24 @@ Error EditorRun::run(const String &p_scene, const String p_custom_args, const Li int screen = EditorSettings::get_singleton()->get("run/window_placement/screen"); if (screen == 0) { + // Same as editor screen = OS::get_singleton()->get_current_screen(); + } else if (screen == 1) { + // Previous monitor (wrap to the other end if needed) + screen = Math::wrapi( + OS::get_singleton()->get_current_screen() - 1, + 0, + OS::get_singleton()->get_screen_count()); + } else if (screen == 2) { + // Next monitor (wrap to the other end if needed) + screen = Math::wrapi( + OS::get_singleton()->get_current_screen() + 1, + 0, + OS::get_singleton()->get_screen_count()); } else { - screen--; + // Fixed monitor ID + // There are 3 special options, so decrement the option ID by 3 to get the monitor ID + screen -= 3; } if (OS::get_singleton()->is_disable_crash_handler()) { diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index d24816ee028..e1ec48a9f9a 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -492,7 +492,7 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { _initial_set("run/window_placement/rect", 1); hints["run/window_placement/rect"] = PropertyInfo(Variant::INT, "run/window_placement/rect", PROPERTY_HINT_ENUM, "Top Left,Centered,Custom Position,Force Maximized,Force Fullscreen"); - String screen_hints = TTR("Default (Same as Editor)"); + String screen_hints = "Same as Editor,Previous Monitor,Next Monitor"; for (int i = 0; i < OS::get_singleton()->get_screen_count(); i++) { screen_hints += ",Monitor " + itos(i + 1); }