diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 38557b2bcc..76ffa4e2d6 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -7817,8 +7817,12 @@ begin //utf8bidi.insert(Temp,AChar,CaretNew.X); CaretX := CaretNew.X; {$ELSE} - Temp:=copy(Temp,1,LogCaretXY.X-1)+AChar - +copy(Temp,LogCaretXY.X+Counter,length(Temp)); + Len := Length(Temp); + if LogCaretXY.X<=Len then + Temp:=copy(Temp,1,LogCaretXY.X-1)+AChar + +copy(Temp,LogCaretXY.X+Counter,length(Temp)) + else + Temp:=Temp+StringOfChar(' ', LogCaretXY.X-1-Len)+AChar; {$ENDIF} CaretNew := Point((CaretX + 1), CaretY); TrimmedSetLine(CaretY - 1, Temp); diff --git a/lcl/include/control.inc b/lcl/include/control.inc index 1ae825dd6c..98fec5f244 100644 --- a/lcl/include/control.inc +++ b/lcl/include/control.inc @@ -1892,7 +1892,9 @@ end; {------------------------------------------------------------------------------ function TControl.AutoSizeCanStart: boolean; - Returns true if DoAutoSize can start. + Returns true if DoAutoSize can start. That means, it tests the minimum + requirements to start. Some controls need even more. + It returns false if - AutoSize=false - or the control is currently autosizing