summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2018-08-18 15:30:00 +0200
committerHugo Locurcio <hugo.locurcio@hugo.pro>2018-08-22 20:21:03 +0200
commit475a46c59cdc1d5abcd3a9f7441a0689847df186 (patch)
tree2011b59f18100fcf0d54b072829ce509b09e7a4e
parent5acb309d61d868b9501a33c803e612e5a0a1d90c (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.cpp17
-rw-r--r--editor/editor_settings.cpp2
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);
}