# HG changeset patch # User Wuzzy # Date 1593987913 -7200 # Node ID c7fe94d56d6e201cc22398730c466a5003d9f394 # Parent 0d0f48f098f46225f54ed2534257b40476bd27ec Fix chat lines bleeding below screen for large font diff -r 0d0f48f098f4 -r c7fe94d56d6e hedgewars/uChat.pas --- a/hedgewars/uChat.pas Sun Jul 05 23:36:08 2020 +0200 +++ b/hedgewars/uChat.pas Mon Jul 06 00:25:13 2020 +0200 @@ -38,7 +38,8 @@ uses uConsts, uInputHandler, uTypes, uVariables, uCommands, uUtils, uTextures, uRender, uIO, uScript, uRenderUtils, uStore, uLocale {$IFDEF USE_VIDEO_RECORDING}, uVideoRec{$ENDIF}; -const MaxStrIndex = 27; +const MaxStrIndex = 27; // Max. possible string index + MaxStrPartial = 7; // Max. displayed strings in normal mode MaxInputStrLen = 200; type TChatLine = record @@ -389,13 +390,18 @@ visibleCount:= 0; // draw chat lines with some distance from screen border +left:= 4 - cScreenWidth div 2; {$IFDEF USE_TOUCH_INTERFACE} -left:= 4 - cScreenWidth div 2; -top := 55 + visibleCount * ClHeight; // we start with input line (if any) +i:= 55; {$ELSE} -left:= 4 - cScreenWidth div 2; -top := 10 + visibleCount * ClHeight; // we start with input line (if any) +i:= 10; {$ENDIF} +top := i + visibleCount * ClHeight; // we start with input line (if any) +if top > cScreenHeight - ClHeight - 60 then + begin + top:= cScreenHeight - ClHeight - 60; + top:= i + top - (top mod ClHeight); + end; // draw chat input line first and under all other lines if isInChatMode and (InputStr.Tex <> nil) then @@ -484,7 +490,7 @@ t := 1; // # of current line processed // draw lines in reverse order - while (((t < 7) and (Strs[i].Time > RealTicks)) or ((t <= MaxStrIndex + 1) and showAll)) + while (((t < MaxStrPartial) and (Strs[i].Time > RealTicks)) or ((t <= MaxStrIndex + 1) and showAll)) and (Strs[i].Tex <> nil) do begin top:= top - ClHeight;