diff --git a/app/src/screen.c b/app/src/screen.c index e35641f7..0cb09a4b 100644 --- a/app/src/screen.c +++ b/app/src/screen.c @@ -90,7 +90,8 @@ is_optimal_size(struct sc_size current_size, struct sc_size content_size) { // - it keeps the aspect ratio // - it scales down to make it fit in the display_size static struct sc_size -get_optimal_size(struct sc_size current_size, struct sc_size content_size) { +get_optimal_size(struct sc_size current_size, struct sc_size content_size, + bool within_display_bounds) { if (content_size.width == 0 || content_size.height == 0) { // avoid division by 0 return current_size; @@ -99,8 +100,9 @@ get_optimal_size(struct sc_size current_size, struct sc_size content_size) { struct sc_size window_size; struct sc_size display_size; - if (!get_preferred_display_bounds(&display_size)) { - // could not get display bounds, do not constraint the size + if (!within_display_bounds || + !get_preferred_display_bounds(&display_size)) { + // do not constraint the size window_size = current_size; } else { window_size.width = MIN(current_size.width, display_size.width); @@ -134,7 +136,7 @@ get_initial_optimal_size(struct sc_size content_size, uint16_t req_width, uint16_t req_height) { struct sc_size window_size; if (!req_width && !req_height) { - window_size = get_optimal_size(content_size, content_size); + window_size = get_optimal_size(content_size, content_size, true); } else { if (req_width) { window_size.width = req_width; @@ -559,7 +561,7 @@ resize_for_content(struct screen *screen, struct sc_size old_content_size, .height = (uint32_t) window_size.height * new_content_size.height / old_content_size.height, }; - target_size = get_optimal_size(target_size, new_content_size); + target_size = get_optimal_size(target_size, new_content_size, true); set_window_size(screen, target_size); } @@ -694,7 +696,7 @@ screen_resize_to_fit(struct screen *screen) { struct sc_size window_size = get_window_size(screen); struct sc_size optimal_size = - get_optimal_size(window_size, screen->content_size); + get_optimal_size(window_size, screen->content_size, false); // Center the window related to the device screen assert(optimal_size.width <= window_size.width);