mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 16:39:15 +02:00
IDE: Improve setting cursor position in new programs. Issue #32089, patch by n7800.
This commit is contained in:
parent
eb480b51d8
commit
1580d1778e
@ -58,6 +58,8 @@ type
|
|||||||
{ TProjectConsoleApplicationDescriptor }
|
{ TProjectConsoleApplicationDescriptor }
|
||||||
|
|
||||||
TProjectConsoleApplicationDescriptor = class(TProjectDescriptor)
|
TProjectConsoleApplicationDescriptor = class(TProjectDescriptor)
|
||||||
|
protected
|
||||||
|
FCaretPos: TPoint;
|
||||||
public
|
public
|
||||||
constructor Create; override;
|
constructor Create; override;
|
||||||
function GetLocalizedName: string; override;
|
function GetLocalizedName: string; override;
|
||||||
@ -102,6 +104,16 @@ type
|
|||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
procedure SetCaretPosInActiveEditor(aPos: TPoint);
|
||||||
|
begin
|
||||||
|
if assigned(SourceEditorManager.ActiveEditor) then
|
||||||
|
with SourceEditorManager.ActiveEditor.EditorComponent do
|
||||||
|
begin
|
||||||
|
MoveCaretIgnoreEOL(aPos);
|
||||||
|
TopLine:=aPos.Y-LinesInWindow div 2;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TProjectApplicationDescriptor }
|
{ TProjectApplicationDescriptor }
|
||||||
|
|
||||||
constructor TProjectApplicationDescriptor.Create;
|
constructor TProjectApplicationDescriptor.Create;
|
||||||
@ -225,9 +237,7 @@ function TProjectSimpleProgramDescriptor.CreateStartFiles(AProject: TLazProject)
|
|||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||||
[ofProjectLoading,ofRegularFile]);
|
[ofProjectLoading,ofRegularFile]);
|
||||||
// set caret position
|
SetCaretPosInActiveEditor(Point(3,3));
|
||||||
if Assigned(SourceEditorManager.ActiveEditor) then
|
|
||||||
SourceEditorManager.ActiveEditor.EditorComponent.LogicalCaretXY:=Point(3,3);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectProgramDescriptor }
|
{ TProjectProgramDescriptor }
|
||||||
@ -288,9 +298,7 @@ function TProjectProgramDescriptor.CreateStartFiles(AProject: TLazProject): TMod
|
|||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||||
[ofProjectLoading,ofRegularFile]);
|
[ofProjectLoading,ofRegularFile]);
|
||||||
// set caret position
|
SetCaretPosInActiveEditor(Point(3,13));
|
||||||
if Assigned(SourceEditorManager.ActiveEditor) then
|
|
||||||
SourceEditorManager.ActiveEditor.EditorComponent.LogicalCaretXY:=Point(3,13);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectManualProgramDescriptor }
|
{ TProjectManualProgramDescriptor }
|
||||||
@ -356,9 +364,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||||
[ofProjectLoading,ofRegularFile]);
|
[ofProjectLoading,ofRegularFile]);
|
||||||
// set caret position
|
SetCaretPosInActiveEditor(Point(3,10));
|
||||||
if Assigned(SourceEditorManager.ActiveEditor) then
|
|
||||||
SourceEditorManager.ActiveEditor.EditorComponent.LogicalCaretXY:=Point(3,10);
|
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
@ -380,6 +386,7 @@ begin
|
|||||||
Name:=ProjDescNameConsoleApplication;
|
Name:=ProjDescNameConsoleApplication;
|
||||||
Flags:=Flags-[pfMainUnitHasCreateFormStatements,pfMainUnitHasTitleStatement,pfMainUnitHasScaledStatement]
|
Flags:=Flags-[pfMainUnitHasCreateFormStatements,pfMainUnitHasTitleStatement,pfMainUnitHasScaledStatement]
|
||||||
+[pfUseDefaultCompilerOptions];
|
+[pfUseDefaultCompilerOptions];
|
||||||
|
FCaretPos := Point(1,1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectConsoleApplicationDescriptor.GetLocalizedName: string;
|
function TProjectConsoleApplicationDescriptor.GetLocalizedName: string;
|
||||||
@ -482,9 +489,10 @@ begin
|
|||||||
NewSource.Add(' Terminate;');
|
NewSource.Add(' Terminate;');
|
||||||
NewSource.Add(' Exit;');
|
NewSource.Add(' Exit;');
|
||||||
NewSource.Add(' end;');
|
NewSource.Add(' end;');
|
||||||
|
NewSource.Add('');
|
||||||
end;
|
end;
|
||||||
NewSource.Add('');
|
NewSource.Add('');
|
||||||
NewSource.Add(' { add your program here }');
|
FCaretPos := Point(3,NewSource.Count); // remember position for move the caret
|
||||||
NewSource.Add('');
|
NewSource.Add('');
|
||||||
NewSource.Add(' // stop program loop');
|
NewSource.Add(' // stop program loop');
|
||||||
NewSource.Add(' Terminate;');
|
NewSource.Add(' Terminate;');
|
||||||
@ -540,6 +548,7 @@ function TProjectConsoleApplicationDescriptor.CreateStartFiles(
|
|||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||||
[ofProjectLoading,ofRegularFile]);
|
[ofProjectLoading,ofRegularFile]);
|
||||||
|
SetCaretPosInActiveEditor(FCaretPos);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectLibraryDescriptor }
|
{ TProjectLibraryDescriptor }
|
||||||
@ -600,9 +609,7 @@ function TProjectLibraryDescriptor.CreateStartFiles(AProject: TLazProject): TMod
|
|||||||
begin
|
begin
|
||||||
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
Result:=LazarusIDE.DoOpenEditorFile(AProject.MainFile.Filename,-1,-1,
|
||||||
[ofProjectLoading,ofRegularFile]);
|
[ofProjectLoading,ofRegularFile]);
|
||||||
// set caret position
|
SetCaretPosInActiveEditor(Point(3,10));
|
||||||
if Assigned(SourceEditorManager.ActiveEditor) then
|
|
||||||
SourceEditorManager.ActiveEditor.EditorComponent.LogicalCaretXY:=Point(3,10);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Loading…
Reference in New Issue
Block a user