diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 10277fb2f9..9120942054 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -765,6 +765,7 @@ type PhysicalPos, StartBytePos, StartPhysicalPos: integer): integer; procedure MoveCaretToVisibleArea; procedure MoveCaretIgnoreEOL(const NewCaret: TPoint); + procedure MoveLogicalCaretIgnoreEOL(const NewLogCaret: TPoint); function NextTokenPos: TPoint; virtual; {$ELSE} function LogicalToPhysicalPos(p: TPoint): TPoint; @@ -5550,6 +5551,11 @@ begin DecPaintLock; end; end; + +procedure TCustomSynEdit.MoveLogicalCaretIgnoreEOL(const NewLogCaret: TPoint); +begin + MoveCaretIgnoreEOL(LogicalToPhysicalPos(NewLogCaret)); +end; {$ENDIF} procedure TCustomSynEdit.UpdateCaret; diff --git a/ide/main.pp b/ide/main.pp index c44c370c49..5429ac3ce1 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -10666,7 +10666,7 @@ begin NewTopLine:=Max(1,NewY-(NewSrcEdit.EditorComponent.LinesInWindow div 2)); //writeln('[TMainIDE.DoJumpToCodePos] ',NewX,',',NewY,',',NewTopLine); with NewSrcEdit.EditorComponent do begin - LogicalCaretXY:=Point(NewX,NewY); + MoveLogicalCaretIgnoreEOL(Point(NewX,NewY)); BlockBegin:=LogicalCaretXY; BlockEnd:=BlockBegin; TopLine:=NewTopLine;