From 7fac103c5162aca1980f235549b195b522c28ead Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 17 Oct 2025 07:33:17 +0200 Subject: [PATCH] fix: Help Overlay - ambas columnas respetan padding inferior MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Problema: - Solo columna 0 verificaba si cabía más texto antes de escribir - Columna 1 (derecha) escribía fuera del overlay si no cabía - En ventanas de 600px altura, columna 1 se desbordaba Solución: - Eliminada restricción `&& current_column == 0` del check de padding - Ahora AMBAS columnas verifican si caben antes de escribir - Si columna 1 está llena: omitir texto restante (continue) - Si columna 0 está llena: cambiar a columna 1 Comportamiento preferido por el usuario: "prefiero que 'falte texto' a que el texto se escriba por fuera del overlay" Resultado: ✅ Columna 0 cambia a columna 1 cuando se llena ✅ Columna 1 omite texto que no cabe ✅ Overlay nunca muestra texto fuera de sus límites ✅ Funciona correctamente en ventanas pequeñas (600px) 🤖 Generated with Claude Code Co-Authored-By: Claude --- source/ui/help_overlay.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/source/ui/help_overlay.cpp b/source/ui/help_overlay.cpp index 1d0935c..2a22673 100644 --- a/source/ui/help_overlay.cpp +++ b/source/ui/help_overlay.cpp @@ -385,12 +385,19 @@ void HelpOverlay::rebuildCachedTexture() { continue; } - // CHECK PADDING INFERIOR ANTES de escribir la línea (solo para columna 0) + // CHECK PADDING INFERIOR ANTES de escribir la línea (AMBAS COLUMNAS) // Verificar si la PRÓXIMA línea cabrá dentro del box con padding inferior - if (current_y + line_height >= box_height_ - padding && current_column == 0) { - current_column = 1; - current_x = padding + column1_width_ + padding; - current_y = content_start_y; + if (current_y + line_height >= box_height_ - padding) { + if (current_column == 0) { + // Columna 0 llena: cambiar a columna 1 + current_column = 1; + current_x = padding + column1_width_ + padding; + current_y = content_start_y; + } else { + // Columna 1 llena: omitir resto de texto (no cabe) + // Preferible omitir que sobresalir del overlay + continue; + } } if (binding.description[0] == '\0') {