From 314dd32d887b475641db3e4c12ee2911fc3b59ff Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Mon, 18 Jan 2021 02:39:46 +0100 Subject: [PATCH] Tweak the "Auto" editor setting hints to be more indicative This affects the editor scale and font hinting settings which will now display their automatically chosen value in parentheses. (cherry picked from commit 57654508c91fa5eb166a02d4c1174a056da2afbb) --- editor/editor_node.cpp | 2 ++ editor/editor_settings.cpp | 27 +++++++++++++++++++++++++-- editor/project_manager.cpp | 2 ++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 9cb8cf35fda..2e3519ed638 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -5766,6 +5766,8 @@ EditorNode::EditorNode() { switch (display_scale) { case 0: { // Try applying a suitable display scale automatically. + // The code below is adapted in `editor/editor_settings.cpp` and `editor/project_manager.cpp`. + // Make sure to update those when modifying the code below. #ifdef OSX_ENABLED editor_set_scale(OS::get_singleton()->get_screen_max_scale()); #else diff --git a/editor/editor_settings.cpp b/editor/editor_settings.cpp index 1c61da7b21b..033a8e62ba0 100644 --- a/editor/editor_settings.cpp +++ b/editor/editor_settings.cpp @@ -317,7 +317,26 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { // Editor _initial_set("interface/editor/display_scale", 0); - hints["interface/editor/display_scale"] = PropertyInfo(Variant::INT, "interface/editor/display_scale", PROPERTY_HINT_ENUM, "Auto,75%,100%,125%,150%,175%,200%,Custom", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); + // Display what the Auto display scale setting effectively corresponds to. + // The code below is adapted in `editor/editor_node.cpp` and `editor/project_manager.cpp`. + // Make sure to update those when modifying the code below. +#ifdef OSX_ENABLED + float scale = OS::get_singleton()->get_screen_max_scale(); +#else + const int screen = OS::get_singleton()->get_current_screen(); + float scale; + if (OS::get_singleton()->get_screen_dpi(screen) >= 192 && OS::get_singleton()->get_screen_size(screen).y >= 1400) { + // hiDPI display. + scale = 2.0; + } else if (OS::get_singleton()->get_screen_size(screen).y <= 800) { + // Small loDPI display. Use a smaller display scale so that editor elements fit more easily. + // Icons won't look great, but this is better than having editor elements overflow from its window. + scale = 0.75; + } else { + scale = 1.0; + } +#endif + hints["interface/editor/display_scale"] = PropertyInfo(Variant::INT, "interface/editor/display_scale", PROPERTY_HINT_ENUM, vformat("Auto (%d%%),75%%,100%%,125%%,150%%,175%%,200%%,Custom", Math::round(scale * 100)), PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); _initial_set("interface/editor/custom_display_scale", 1.0f); hints["interface/editor/custom_display_scale"] = PropertyInfo(Variant::REAL, "interface/editor/custom_display_scale", PROPERTY_HINT_RANGE, "0.5,3,0.01", PROPERTY_USAGE_DEFAULT | PROPERTY_USAGE_RESTART_IF_CHANGED); _initial_set("interface/editor/main_font_size", 14); @@ -326,7 +345,11 @@ void EditorSettings::_load_defaults(Ref p_extra_config) { hints["interface/editor/code_font_size"] = PropertyInfo(Variant::INT, "interface/editor/code_font_size", PROPERTY_HINT_RANGE, "8,48,1", PROPERTY_USAGE_DEFAULT); _initial_set("interface/editor/font_antialiased", true); _initial_set("interface/editor/font_hinting", 0); - hints["interface/editor/font_hinting"] = PropertyInfo(Variant::INT, "interface/editor/font_hinting", PROPERTY_HINT_ENUM, "Auto,None,Light,Normal", PROPERTY_USAGE_DEFAULT); +#ifdef OSX_ENABLED + hints["interface/editor/font_hinting"] = PropertyInfo(Variant::INT, "interface/editor/font_hinting", PROPERTY_HINT_ENUM, "Auto (None),None,Light,Normal", PROPERTY_USAGE_DEFAULT); +#else + hints["interface/editor/font_hinting"] = PropertyInfo(Variant::INT, "interface/editor/font_hinting", PROPERTY_HINT_ENUM, "Auto (Light),None,Light,Normal", PROPERTY_USAGE_DEFAULT); +#endif _initial_set("interface/editor/main_font", ""); hints["interface/editor/main_font"] = PropertyInfo(Variant::STRING, "interface/editor/main_font", PROPERTY_HINT_GLOBAL_FILE, "*.ttf,*.otf", PROPERTY_USAGE_DEFAULT); _initial_set("interface/editor/main_font_bold", ""); diff --git a/editor/project_manager.cpp b/editor/project_manager.cpp index ca29f2a5745..71e9ece73a9 100644 --- a/editor/project_manager.cpp +++ b/editor/project_manager.cpp @@ -2436,6 +2436,8 @@ ProjectManager::ProjectManager() { switch (display_scale) { case 0: { // Try applying a suitable display scale automatically. + // The code below is adapted in `editor/editor_settings.cpp` and `editor/editor_node.cpp`. + // Make sure to update those when modifying the code below. #ifdef OSX_ENABLED editor_set_scale(OS::get_singleton()->get_screen_max_scale()); #else