Handle portrait mode monitors in the automatic editor scale detection
Using the smallest dimension of the width and height makes it possible to support both landscape and portrait monitors.
This commit is contained in:
parent
6e3f47983c
commit
728fa3ff71
3 changed files with 15 additions and 9 deletions
|
@ -5684,15 +5684,17 @@ EditorNode::EditorNode() {
|
||||||
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();
|
||||||
|
// Use the smallest dimension to use a correct display scale on portait displays.
|
||||||
|
const int smallest_dimension = MIN(DisplayServer::get_singleton()->screen_get_size(screen).x, DisplayServer::get_singleton()->screen_get_size(screen).y);
|
||||||
float scale;
|
float scale;
|
||||||
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) {
|
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && smallest_dimension >= 1400) {
|
||||||
// hiDPI display.
|
// hiDPI display.
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) {
|
} else if (smallest_dimension >= 1700) {
|
||||||
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
||||||
// Use an intermediate scale to handle this situation.
|
// Use an intermediate scale to handle this situation.
|
||||||
scale = 1.5;
|
scale = 1.5;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) {
|
} else if (smallest_dimension <= 800) {
|
||||||
// Small loDPI display. Use a smaller display scale so that editor elements fit more easily.
|
// 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.
|
// Icons won't look great, but this is better than having editor elements overflow from its window.
|
||||||
scale = 0.75;
|
scale = 0.75;
|
||||||
|
|
|
@ -379,15 +379,17 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
||||||
float scale = DisplayServer::get_singleton()->screen_get_max_scale();
|
float 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();
|
||||||
|
// Use the smallest dimension to use a correct display scale on portait displays.
|
||||||
|
const int smallest_dimension = MIN(DisplayServer::get_singleton()->screen_get_size(screen).x, DisplayServer::get_singleton()->screen_get_size(screen).y);
|
||||||
float scale;
|
float scale;
|
||||||
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) {
|
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && smallest_dimension >= 1400) {
|
||||||
// hiDPI display.
|
// hiDPI display.
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) {
|
} else if (smallest_dimension <= 1700) {
|
||||||
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
||||||
// Use an intermediate scale to handle this situation.
|
// Use an intermediate scale to handle this situation.
|
||||||
scale = 1.5;
|
scale = 1.5;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) {
|
} else if (smallest_dimension <= 800) {
|
||||||
// Small loDPI display. Use a smaller display scale so that editor elements fit more easily.
|
// 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.
|
// Icons won't look great, but this is better than having editor elements overflow from its window.
|
||||||
scale = 0.75;
|
scale = 0.75;
|
||||||
|
|
|
@ -2403,15 +2403,17 @@ ProjectManager::ProjectManager() {
|
||||||
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();
|
||||||
|
// Use the smallest dimension to use a correct display scale on portait displays.
|
||||||
|
const int smallest_dimension = MIN(DisplayServer::get_singleton()->screen_get_size(screen).x, DisplayServer::get_singleton()->screen_get_size(screen).y);
|
||||||
float scale;
|
float scale;
|
||||||
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && DisplayServer::get_singleton()->screen_get_size(screen).y >= 1400) {
|
if (DisplayServer::get_singleton()->screen_get_dpi(screen) >= 192 && smallest_dimension >= 1400) {
|
||||||
// hiDPI display.
|
// hiDPI display.
|
||||||
scale = 2.0;
|
scale = 2.0;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y >= 1700) {
|
} else if (smallest_dimension >= 1700) {
|
||||||
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
// Likely a hiDPI display, but we aren't certain due to the returned DPI.
|
||||||
// Use an intermediate scale to handle this situation.
|
// Use an intermediate scale to handle this situation.
|
||||||
scale = 1.5;
|
scale = 1.5;
|
||||||
} else if (DisplayServer::get_singleton()->screen_get_size(screen).y <= 800) {
|
} else if (smallest_dimension <= 800) {
|
||||||
// Small loDPI display. Use a smaller display scale so that editor elements fit more easily.
|
// 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.
|
// Icons won't look great, but this is better than having editor elements overflow from its window.
|
||||||
scale = 0.75;
|
scale = 0.75;
|
||||||
|
|
Loading…
Reference in a new issue