You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Merge pull request #43479 from Calinou/use-low-editor-scale-auto
Use 75% editor scale on small displays automatically
This commit is contained in:
@@ -5565,46 +5565,51 @@ EditorNode::EditorNode() {
|
|||||||
|
|
||||||
{
|
{
|
||||||
int display_scale = EditorSettings::get_singleton()->get("interface/editor/display_scale");
|
int display_scale = EditorSettings::get_singleton()->get("interface/editor/display_scale");
|
||||||
float custom_display_scale = EditorSettings::get_singleton()->get("interface/editor/custom_display_scale");
|
|
||||||
|
|
||||||
switch (display_scale) {
|
switch (display_scale) {
|
||||||
case 0: {
|
case 0: {
|
||||||
// Try applying a suitable display scale automatically
|
// Try applying a suitable display scale automatically.
|
||||||
#ifdef OSX_ENABLED
|
#ifdef OSX_ENABLED
|
||||||
editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale());
|
editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale());
|
||||||
#else
|
#else
|
||||||
const int screen = DisplayServer::get_singleton()->window_get_current_screen();
|
const int screen = DisplayServer::get_singleton()->window_get_current_screen();
|
||||||
editor_set_scale(DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).x > 2000 ? 2.0 : 1.0);
|
float scale;
|
||||||
|
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) {
|
||||||
|
// hiDPI display.
|
||||||
|
scale = 2.0;
|
||||||
|
} else if (DisplayServer::get_singleton()->screen_get_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;
|
||||||
|
}
|
||||||
|
|
||||||
|
editor_set_scale(scale);
|
||||||
#endif
|
#endif
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case 1: {
|
case 1:
|
||||||
editor_set_scale(0.75);
|
editor_set_scale(0.75);
|
||||||
} break;
|
break;
|
||||||
|
case 2:
|
||||||
case 2: {
|
|
||||||
editor_set_scale(1.0);
|
editor_set_scale(1.0);
|
||||||
} break;
|
break;
|
||||||
|
case 3:
|
||||||
case 3: {
|
|
||||||
editor_set_scale(1.25);
|
editor_set_scale(1.25);
|
||||||
} break;
|
break;
|
||||||
|
case 4:
|
||||||
case 4: {
|
|
||||||
editor_set_scale(1.5);
|
editor_set_scale(1.5);
|
||||||
} break;
|
break;
|
||||||
|
case 5:
|
||||||
case 5: {
|
|
||||||
editor_set_scale(1.75);
|
editor_set_scale(1.75);
|
||||||
} break;
|
break;
|
||||||
|
case 6:
|
||||||
case 6: {
|
|
||||||
editor_set_scale(2.0);
|
editor_set_scale(2.0);
|
||||||
} break;
|
break;
|
||||||
|
default:
|
||||||
default: {
|
editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale"));
|
||||||
editor_set_scale(custom_display_scale);
|
break;
|
||||||
} break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -441,7 +441,8 @@ Ref<Theme> create_editor_theme(const Ref<Theme> p_theme) {
|
|||||||
|
|
||||||
// Highlighted tabs and border width
|
// Highlighted tabs and border width
|
||||||
Color tab_color = highlight_tabs ? base_color.lerp(font_color, contrast) : base_color;
|
Color tab_color = highlight_tabs ? base_color.lerp(font_color, contrast) : base_color;
|
||||||
const int border_width = CLAMP(border_size, 0, 3) * EDSCALE;
|
// Ensure borders are visible when using an editor scale below 100%.
|
||||||
|
const int border_width = CLAMP(border_size, 0, 3) * MAX(1, EDSCALE);
|
||||||
|
|
||||||
const int default_margin_size = 4;
|
const int default_margin_size = 4;
|
||||||
const int margin_size_extra = default_margin_size + CLAMP(border_size, 0, 3);
|
const int margin_size_extra = default_margin_size + CLAMP(border_size, 0, 3);
|
||||||
|
|||||||
@@ -2366,12 +2366,24 @@ ProjectManager::ProjectManager() {
|
|||||||
|
|
||||||
switch (display_scale) {
|
switch (display_scale) {
|
||||||
case 0: {
|
case 0: {
|
||||||
// Try applying a suitable display scale automatically
|
// Try applying a suitable display scale automatically.
|
||||||
#ifdef OSX_ENABLED
|
#ifdef OSX_ENABLED
|
||||||
editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale());
|
editor_set_scale(DisplayServer::get_singleton()->screen_get_max_scale());
|
||||||
#else
|
#else
|
||||||
const int screen = DisplayServer::get_singleton()->window_get_current_screen();
|
const int screen = DisplayServer::get_singleton()->window_get_current_screen();
|
||||||
editor_set_scale(DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).x > 2000 ? 2.0 : 1.0);
|
float scale;
|
||||||
|
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) {
|
||||||
|
// hiDPI display.
|
||||||
|
scale = 2.0;
|
||||||
|
} else if (DisplayServer::get_singleton()->screen_get_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;
|
||||||
|
}
|
||||||
|
|
||||||
|
editor_set_scale(scale);
|
||||||
#endif
|
#endif
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@@ -2393,9 +2405,9 @@ ProjectManager::ProjectManager() {
|
|||||||
case 6:
|
case 6:
|
||||||
editor_set_scale(2.0);
|
editor_set_scale(2.0);
|
||||||
break;
|
break;
|
||||||
default: {
|
default:
|
||||||
editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale"));
|
editor_set_scale(EditorSettings::get_singleton()->get("interface/editor/custom_display_scale"));
|
||||||
} break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define a minimum window size to prevent UI elements from overlapping or being cut off
|
// Define a minimum window size to prevent UI elements from overlapping or being cut off
|
||||||
|
|||||||
Reference in New Issue
Block a user