mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 17:21:27 +02:00
DBG: Toggle breakpoint enabled with ctrl-click. Issue #0017330
git-svn-id: trunk@32441 -
This commit is contained in:
parent
e3a3b6dab5
commit
a65bbd7c40
@ -157,6 +157,9 @@ type
|
||||
|
||||
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
|
||||
WarnIfNoDebugger: boolean): TModalResult; virtual; abstract;
|
||||
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
|
||||
WarnIfNoDebugger: boolean;
|
||||
out ABrkPoint: TIDEBreakPoint): TModalResult; virtual; abstract;
|
||||
function DoDeleteBreakPoint(const AFilename: string; ALine: integer
|
||||
): TModalResult; virtual; abstract;
|
||||
function DoDeleteBreakPointAtMark(const ASourceMark: TSourceMark
|
||||
|
@ -211,6 +211,9 @@ type
|
||||
|
||||
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
|
||||
WarnIfNoDebugger: boolean): TModalResult; override;
|
||||
function DoCreateBreakPoint(const AFilename: string; ALine: integer;
|
||||
WarnIfNoDebugger: boolean;
|
||||
out ABrkPoint: TIDEBreakPoint): TModalResult; override;
|
||||
|
||||
function DoDeleteBreakPoint(const AFilename: string;
|
||||
ALine: integer): TModalResult; override;
|
||||
@ -2390,7 +2393,16 @@ end;
|
||||
|
||||
function TDebugManager.DoCreateBreakPoint(const AFilename: string;
|
||||
ALine: integer; WarnIfNoDebugger: boolean): TModalResult;
|
||||
var
|
||||
ABrkPoint: TIDEBreakPoint;
|
||||
begin
|
||||
DoCreateBreakPoint(AFilename, ALine, WarnIfNoDebugger, ABrkPoint);
|
||||
end;
|
||||
|
||||
function TDebugManager.DoCreateBreakPoint(const AFilename: string; ALine: integer;
|
||||
WarnIfNoDebugger: boolean; out ABrkPoint: TIDEBreakPoint): TModalResult;
|
||||
begin
|
||||
ABrkPoint := nil;
|
||||
if WarnIfNoDebugger
|
||||
and ((FindDebuggerClass(EnvironmentOptions.DebuggerConfig.DebuggerClass)=nil)
|
||||
or (not FileIsExecutable(EnvironmentOptions.DebuggerFilename)))
|
||||
@ -2404,7 +2416,7 @@ begin
|
||||
exit;
|
||||
end;
|
||||
|
||||
FBreakPoints.Add(AFilename, ALine);
|
||||
ABrkPoint := FBreakPoints.Add(AFilename, ALine);
|
||||
Result := mrOK
|
||||
end;
|
||||
|
||||
|
@ -3654,27 +3654,39 @@ var
|
||||
Marks: PSourceMark;
|
||||
i, MarkCount: Integer;
|
||||
BreakFound: Boolean;
|
||||
Ctrl: Boolean;
|
||||
ABrkPoint: TIDEBreakPoint;
|
||||
Mrk: TSourceMark;
|
||||
begin
|
||||
// create or delete breakpoint
|
||||
// find breakpoint mark at line
|
||||
Marks := nil;
|
||||
Ctrl := ssCtrl in GetKeyShiftState;
|
||||
try
|
||||
SourceEditorMarks.GetMarksForLine(Self, Line, Marks, MarkCount);
|
||||
BreakFound := False;
|
||||
for i := 0 to MarkCount - 1 do
|
||||
begin
|
||||
if Marks[i].IsBreakPoint then
|
||||
begin
|
||||
Mrk := Marks[i];
|
||||
if Mrk.IsBreakPoint and
|
||||
(Mrk.Data <> nil) and (Mrk.Data is TIDEBreakPoint)
|
||||
then begin
|
||||
BreakFound := True;
|
||||
DebugBoss.DoDeleteBreakPointAtMark(Marks[i])
|
||||
if Ctrl then
|
||||
TIDEBreakPoint(Mrk.Data).Enabled := not TIDEBreakPoint(Mrk.Data).Enabled
|
||||
else
|
||||
DebugBoss.DoDeleteBreakPointAtMark(Mrk)
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
FreeMem(Marks);
|
||||
end;
|
||||
|
||||
if not BreakFound then
|
||||
DebugBoss.DoCreateBreakPoint(Filename, Line, True);
|
||||
if not BreakFound then begin
|
||||
DebugBoss.DoCreateBreakPoint(Filename, Line, True, ABrkPoint);
|
||||
if Ctrl and (ABrkPoint <> nil)
|
||||
then ABrkPoint.Enabled := False;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TSourceEditor.OnEditorSpecialLineColor(Sender: TObject; Line: integer;
|
||||
|
Loading…
Reference in New Issue
Block a user