From 5f89299444faac8be08a43937dd1fc8decc6a94d Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 10 Oct 2025 11:19:01 +0200 Subject: [PATCH] Fix: Notifier aplica offset de viewport para consistencia en letterbox MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Aplica el mismo patrón de viewport offset usado en TextRenderer al renderizado del fondo de notificaciones para consistencia completa. ## Cambios **notifier.cpp - renderBackground():** - Obtener viewport ANTES de deshabilitar presentación lógica - Aplicar offset del viewport a coordenadas del rectángulo: - `bg_rect.x = x + viewport.x` - `bg_rect.y = y + viewport.y` ## Resultado ✅ Fondo de notificaciones respeta offset de viewport ✅ Consistencia completa entre texto y fondo en modo letterbox ✅ Compatible con F3 (letterbox), F4 (stretch), y ventana normal 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- source/ui/notifier.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/source/ui/notifier.cpp b/source/ui/notifier.cpp index 837ba0f..a5f8ffc 100644 --- a/source/ui/notifier.cpp +++ b/source/ui/notifier.cpp @@ -182,10 +182,16 @@ void Notifier::renderBackground(int x, int y, int width, int height, float alpha return; } + // Obtener viewport ANTES de deshabilitar presentación lógica + // En modo letterbox (F3), SDL crea un viewport con offset para centrar la imagen + SDL_Rect viewport; + SDL_GetRenderViewport(renderer_, &viewport); + // Crear rectángulo para el fondo (en coordenadas físicas) + // Aplicar offset del viewport para que el fondo se pinte dentro del área visible SDL_FRect bg_rect; - bg_rect.x = static_cast(x); - bg_rect.y = static_cast(y); + bg_rect.x = static_cast(x + viewport.x); + bg_rect.y = static_cast(y + viewport.y); bg_rect.w = static_cast(width); bg_rect.h = static_cast(height); @@ -202,7 +208,7 @@ void Notifier::renderBackground(int x, int y, int width, int height, float alpha SDL_RendererLogicalPresentation presentation_mode; SDL_GetRenderLogicalPresentation(renderer_, &logical_w, &logical_h, &presentation_mode); - // Renderizar sin presentación lógica (coordenadas físicas absolutas) + // Renderizar sin presentación lógica (coordenadas físicas absolutas con offset de viewport) SDL_SetRenderLogicalPresentation(renderer_, 0, 0, SDL_LOGICAL_PRESENTATION_DISABLED); SDL_RenderFillRect(renderer_, &bg_rect);