diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index 490854ff80..32f6e2bbc0 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -4190,6 +4190,7 @@ begin debugln(['ScrollAfterTopLineChanged did scroll Delta=',Delta]); {$ENDIF} include(fStateFlags, sfHasScrolled); + FScreenCaret.InvalidatePos; // Wine (Win emulator) may have changed the pos with the scroll end else begin Invalidate; // scrollwindow failed, invalidate all {$IFDEF SYNSCROLLDEBUG} diff --git a/components/synedit/syneditpointclasses.pas b/components/synedit/syneditpointclasses.pas index 272cd079c0..c62d98fff3 100644 --- a/components/synedit/syneditpointclasses.pas +++ b/components/synedit/syneditpointclasses.pas @@ -308,6 +308,7 @@ type procedure DestroyCaret(SkipHide: boolean = False); procedure Lock; procedure UnLock; + procedure InvalidatePos; property HandleOwner: TWinControl read FHandleOwner; property CharWidth: Integer read FCharWidth write SetCharWidth; property CharHeight: Integer read FCharHeight write SetCharHeight; @@ -1687,6 +1688,12 @@ begin end; end; +procedure TSynEditScreenCaret.InvalidatePos; +begin + FCurrentPosY := -1; + FCurrentPosX := -1; +end; + procedure TSynEditScreenCaret.SetClipRight(const AValue: Integer); begin if FClipRight = AValue then exit;