diff --git a/source/core/rendering/sdl_manager.cpp b/source/core/rendering/sdl_manager.cpp index a4d2bde..f0b1b32 100644 --- a/source/core/rendering/sdl_manager.cpp +++ b/source/core/rendering/sdl_manager.cpp @@ -277,11 +277,13 @@ auto SDLManager::handleWindowEvent(const SDL_Event& event) -> bool { if (event.type == SDL_EVENT_WINDOW_RESIZED) { SDL_GetWindowSize(finestra_, ¤t_width_, ¤t_height_); - float new_zoom = static_cast(current_width_) / Defaults::Window::WIDTH; - zoom_factor_ = std::max(Defaults::Window::MIN_ZOOM, - std::min(new_zoom, max_zoom_)); - + // En fullscreen el zoom_factor_ no participa del viewport (aspect-fit + // sobre la mida física), així que el preservem amb el valor de + // windowed per no perdre'l en tornar a windowed. if (!is_fullscreen_) { + float new_zoom = static_cast(current_width_) / Defaults::Window::WIDTH; + zoom_factor_ = std::max(Defaults::Window::MIN_ZOOM, + std::min(new_zoom, max_zoom_)); windowed_width_ = current_width_; windowed_height_ = current_height_; }