From 820460bb3ad22900a4c17626747bb546fe605198 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 17 Aug 2002 23:41:32 +0000 Subject: [PATCH] ensuecursorvisible now tries to also show the selection git-svn-id: trunk@2627 - --- components/synedit/synedit.pp | 43 ++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/components/synedit/synedit.pp b/components/synedit/synedit.pp index a21b744977..bc11e1b251 100644 --- a/components/synedit/synedit.pp +++ b/components/synedit/synedit.pp @@ -1430,7 +1430,7 @@ var P: PChar; begin {$IFDEF SYN_LAZARUS} - sLineBreak:=AdjustLineBreaks(#$0D#$0A); + sLineBreak:=AdjustLineBreaks(#13#10); {$ENDIF} if not SelAvail then Result := '' @@ -5452,18 +5452,59 @@ end; procedure TCustomSynEdit.EnsureCursorPosVisible; var PhysCaretXY: TPoint; + {$IFDEF SYN_LAZARUS} + MinX: Integer; + MaxX: Integer; + PhysBlockBeginXY: TPoint; + PhysBlockEndXY: TPoint; + {$ENDIF} begin IncPaintLock; try // Make sure X is visible //writeln('[TCustomSynEdit.EnsureCursorPosVisible] A CaretX=',CaretX,' LeftChar=',LeftChar,' CharsInWindow=',CharsInWindow,' ClientWidth=',ClientWidth); PhysCaretXY:=LogicalToPhysicalPos(CaretXY); + {$IFDEF SYN_LAZARUS} + // try also to make the current selection visible + MinX:=PhysCaretXY.X; + MaxX:=PhysCaretXY.X; + PhysBlockBeginXY:=LogicalToPhysicalPos(BlockBegin); + PhysBlockEndXY:=LogicalToPhysicalPos(BlockEnd); + if (PhysBlockBeginXY.X<>PhysBlockEndXY.X) + or (PhysBlockBeginXY.Y<>PhysBlockEndXY.Y) then begin + if (SelectionMode<>smColumn) and (PhysBlockBeginXY.Y<>PhysBlockEndXY.Y) then + PhysBlockBeginXY.X:=1; + if MinX>PhysBlockBeginXY.X then + MinX:=Max(PhysBlockBeginXY.X,PhysCaretXY.X-CharsInWindow+1); + if MinX>PhysBlockEndXY.X then + MinX:=Max(PhysBlockEndXY.X,PhysCaretXY.X-CharsInWindow+1); + if MaxX