diff options
author | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2018-08-18 15:30:00 +0200 |
---|---|---|
committer | Hugo Locurcio <hugo.locurcio@hugo.pro> | 2018-08-22 20:21:03 +0200 |
commit | 475a46c59cdc1d5abcd3a9f7441a0689847df186 (patch) | |
tree | 2011b59f18100fcf0d54b072829ce509b09e7a4e | |
parent | 5acb309d61d868b9501a33c803e612e5a0a1d90c (diff) |
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.
-rw-r--r-- | editor/editor_run.cpp | 17 | ||||
-rw-r--r-- | 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 749cf6aa2b..62870ab35c 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 d24816ee02..e1ec48a9f9 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -492,7 +492,7 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> 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); } |