From 628a4b2bfdb959407ae0bee84071bc6234d869f1 Mon Sep 17 00:00:00 2001 From: Foivos Date: Tue, 17 Feb 2026 15:58:44 +0200 Subject: [PATCH] `GuiTooltip()` - Fix tooltip height for multiple lines and show tooltip over box in case out of screen (#521) * correctly wrap multiline tooltips and show them over controlRec in case the tooltip is too low. * include .y that was ommited * fix size of padding to account for multiple lines --- src/raygui.h | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/raygui.h b/src/raygui.h index 6ab2cdf..1b5c8b8 100644 --- a/src/raygui.h +++ b/src/raygui.h @@ -5424,13 +5424,18 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int numberOfLines; + GetTextLines(guiTooltipPtr, &numberOfLines); + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8 * numberOfLines) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8 * numberOfLines); + + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f * numberOfLines }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f * numberOfLines }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); }