anchor.diff:    end;
   end;
   
  -procedure TRichTextView.MakeRowAndColumnVisible( Row: longint;
  -                                                 Column: longint );
  +procedure TRichTextView.MakeRowAndColumnVisible(Row: longint; Column: longint);
   var
     X: Longint;
   begin
     MakeRowVisible( Row );
     FLayout.GetXFromOffset( Column, Row, X );
   
  -  if X > FXScroll + GetTextAreaWidth then
  +  if X > (FXScroll + GetTextAreaWidth) then
       // off the right
       SetHorizontalPosition( X - GetTextAreaWidth + 5 )
     else if X < FXScroll then
       // off to left
       SetHorizontalPosition( X );
  -
   end;
   
   function TRichTextView.LinkFromIndex( const CharIndexToFind: longint): string;
  
positive.code:   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;
  
negative.code:   Shift: boolean;
  begin
    inherited HandleLMouseDown(x, y, shiftstate);
    Offset := 0;
    Position := FindPoint( X, Y, Line, Offset, Link );
    FClickedLink := Link;
  //  writeln('Pos=', Ord(Position), '  link=', Link);
  
    if Position in [tpAboveTextArea, tpBelowTextArea] then
      // not on the control (this probably won't happen)
      exit;
  
    // if shift is pressed then keep the same selection start.
    Shift := ssShift in ShiftState;
    RemoveCursor;
  
    if not Shift then
      ClearSelection;
  
    SetCursorPosition(Offset, Line, Shift);
  end;
  
  procedure TRichTextView.HandleLMouseUp(x, y: integer; shiftstate: TShiftState);
  