anchor.diff:      if Assigned( FOnClickLink ) then
         FOnClickLink( Self, FClickedLink );
     FClickedLink := ''; // reset link
  +end;
  +
  +procedure TRichTextView.HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState);
  +var
  +  Line: longint;
  +  Offset: longint;
  +  Link: TfpgString;
  +  Position: TTextPosition;
  +begin
  +  inherited HandleMouseMove(x, y, btnstate, shiftstate);
  +  Position := FindPoint(X, Y, Line, Offset, Link);
  +
  +//  if not MouseCapture then     // TODO: Introduce a IsMouseCaptured in TfpgWindow
  +  begin
  +    if Link <> FLastLinkOver then
  +    begin
  +      if Link <> '' then
  +      begin
  +        if Assigned(FOnOverLink) then
  +          FOnOverLink(Self, Link)
  +      end
  +      else
  +      begin
  +        if Assigned(FOnNotOverLink) then
  +          FOnNotOverLink(Self, FLastLinkOver);
  +      end;
  +      FLastLinkOver := Link;
  +    end;
  +
  +    if Link <> '' then
  +      MouseCursor := mcHand
  +    else
  +      MouseCursor := mcDefault;   // TODO: later this should be IBeam when RichView supports editing
  +    exit;
  +  end;
   end;
   
   Destructor TRichTextView.Destroy;
  
positive.code: var
    Line: longint;
    Offset: longint;
    Link: string;
    Position: TTextPosition;
    Shift: boolean;
  begin
  
negative.code:     procedure HandleMouseScroll(x, y: integer; shiftstate: TShiftState; delta: smallint); override;
      procedure HandleLMouseDown(x, y: integer; shiftstate: TShiftState); override;
      procedure HandleLMouseUp(x, y: integer; shiftstate: TShiftState); override;
      procedure HandleMouseMove(x, y: integer; btnstate: word; shiftstate: TShiftState); override;
  
      //procedure ScanEvent( Var KeyCode: TKeyCode;
      //                     RepeatCount: Byte ); override;
  