mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 05:39:29 +02:00
implemented eoAlwaysVisibleCaret from Martin Smat
git-svn-id: trunk@8777 -
This commit is contained in:
parent
83c73c3f8e
commit
16accc1b02
@ -201,7 +201,8 @@ type
|
||||
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
TSynEditorOption2 = (
|
||||
eoCaretSkipsSelection // caret skips selection on VK_LEFT/VK_RIGHT
|
||||
eoCaretSkipsSelection, // caret skips selection on VK_LEFT/VK_RIGHT
|
||||
eoAlwaysVisibleCaret // Move caret to be always visible when scrolling
|
||||
);
|
||||
TSynEditorOptions2 = set of TSynEditorOption2;
|
||||
{$ENDIF}
|
||||
@ -757,6 +758,7 @@ type
|
||||
PhysicalPos: integer): integer;
|
||||
function PhysicalToLogicalCol(const Line: string;
|
||||
PhysicalPos, StartBytePos, StartPhysicalPos: integer): integer;
|
||||
procedure MoveCaretToVisibleArea;
|
||||
function NextTokenPos: TPoint; virtual;
|
||||
{$ELSE}
|
||||
function LogicalToPhysicalPos(p: TPoint): TPoint;
|
||||
@ -5495,6 +5497,18 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
procedure TCustomSynEdit.MoveCaretToVisibleArea;
|
||||
begin
|
||||
if caretX < fLeftChar then caretX := fLeftChar
|
||||
else if caretX >= fLeftChar + fCharsInWindow then
|
||||
caretX := fLeftChar + fCharsInWindow - 1;
|
||||
if caretY < fTopLine then caretY := fTopLine
|
||||
else if caretY >= fTopLine + fLinesInWindow then
|
||||
caretY := fTopLine + fLinesInWindow - 1;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
procedure TCustomSynEdit.UpdateCaret;
|
||||
var
|
||||
CX, CY: Integer;
|
||||
@ -5512,6 +5526,10 @@ begin
|
||||
Include(fStateFlags, sfCaretChanged)
|
||||
else begin
|
||||
Exclude(fStateFlags, sfCaretChanged);
|
||||
{$IFDEF SYN_LAZARUS}
|
||||
if eoAlwaysVisibleCaret in fOptions2 then
|
||||
MoveCaretToVisibleArea;
|
||||
{$ENDIF}
|
||||
CX := CaretXPix + FCaretOffset.X;
|
||||
CY := CaretYPix + FCaretOffset.Y;
|
||||
if (CX >= fGutterWidth)
|
||||
|
@ -1282,6 +1282,8 @@ begin
|
||||
case SynEditOpt2 of
|
||||
eoCaretSkipsSelection:
|
||||
SynEditOptName := 'CaretSkipsSelection';
|
||||
eoAlwaysVisibleCaret:
|
||||
SynEditOptName := 'AlwaysVisibleCaret';
|
||||
else
|
||||
SynEditOptName := '';
|
||||
end;
|
||||
@ -1448,6 +1450,8 @@ begin
|
||||
case SynEditOpt2 of
|
||||
eoCaretSkipsSelection:
|
||||
SynEditOptName := 'CaretSkipsSelection';
|
||||
eoAlwaysVisibleCaret:
|
||||
SynEditOptName := 'AlwaysVisibleCaret';
|
||||
else
|
||||
SynEditOptName := '';
|
||||
end;
|
||||
@ -2560,6 +2564,7 @@ begin
|
||||
SetOption(dlgTrimTrailingSpaces, eoTrimTrailingSpaces);
|
||||
|
||||
SetOption2(dlgCaretSkipsSelection, eoCaretSkipsSelection);
|
||||
SetOption2(dlgAlwaysVisibleCaret, eoAlwaysVisibleCaret);
|
||||
|
||||
for a := Low(PreviewEdits) to High(PreviewEdits) do
|
||||
if PreviewEdits[a] <> Nil then
|
||||
@ -3509,6 +3514,7 @@ begin
|
||||
Items.Add(dlgScrollPastEndFile);
|
||||
Items.Add(dlgScrollPastEndLine);
|
||||
Items.Add(dlgHomeKeyJumpsToNearestStart);
|
||||
Items.Add(dlgAlwaysVisibleCaret);
|
||||
// tabs
|
||||
Items.Add(dlgSmartTabs);
|
||||
Items.Add(dlgTabsToSpaces);
|
||||
@ -3570,6 +3576,8 @@ begin
|
||||
eoEnhanceHomeKey in EditorOpts.SynEditOptions;
|
||||
Checked[Items.IndexOf(dlgCaretSkipsSelection)] :=
|
||||
eoCaretSkipsSelection in EditorOpts.SynEditOptions2;
|
||||
Checked[Items.IndexOf(dlgAlwaysVisibleCaret)] :=
|
||||
eoAlwaysVisibleCaret in EditorOpts.SynEditOptions2;
|
||||
end;
|
||||
|
||||
with BlockIndentComboBox do
|
||||
|
@ -851,6 +851,7 @@ resourcestring
|
||||
lisLazarusPackage = 'Lazarus package';
|
||||
lisLazarusProjectSource = 'Lazarus project source';
|
||||
dlgAltSetClMode = 'Alt-Key sets column mode';
|
||||
dlgAlwaysVisibleCaret = 'Always visible caret';
|
||||
dlgAutoIdent = 'Auto indent';
|
||||
dlgBracHighlight = 'Bracket highlighting';
|
||||
dlgDragDropEd = 'Drag Drop editing';
|
||||
|
@ -8870,3 +8870,7 @@ msgstr ""
|
||||
msgid "Save session information in"
|
||||
msgstr ""
|
||||
|
||||
#: lazarusidestrconsts:dlgalwaysvisiblecaret
|
||||
msgid "Always visible caret"
|
||||
msgstr ""
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user