mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 14:29:36 +02:00
DBG: protect dialog actions against re-entrance
git-svn-id: trunk@28736 -
This commit is contained in:
parent
8e4d321718
commit
7e077f0e18
@ -134,7 +134,9 @@ type
|
|||||||
procedure JumpToCurrentBreakPoint;
|
procedure JumpToCurrentBreakPoint;
|
||||||
procedure ShowProperties;
|
procedure ShowProperties;
|
||||||
protected
|
protected
|
||||||
|
procedure DoBeginUpdate; override;
|
||||||
procedure DoEndUpdate; override;
|
procedure DoEndUpdate; override;
|
||||||
|
procedure DisableAllActions;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -351,11 +353,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvBreakPoints.Items.Count -1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count -1 do
|
||||||
if Item.Selected then
|
begin
|
||||||
TIDEBreakPoint(Item.Data).Enabled := True;
|
Item := lvBreakPoints.Items[n];
|
||||||
|
if Item.Selected then
|
||||||
|
TIDEBreakPoint(Item.Data).Enabled := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -364,11 +371,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvBreakPoints.Items.Count -1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count -1 do
|
||||||
if Item.Selected then
|
begin
|
||||||
TIDEBreakPoint(Item.Data).Enabled := False;
|
Item := lvBreakPoints.Items[n];
|
||||||
|
if Item.Selected then
|
||||||
|
TIDEBreakPoint(Item.Data).Enabled := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -484,19 +496,24 @@ var
|
|||||||
CurBreakPoint: TIDEBreakPoint;
|
CurBreakPoint: TIDEBreakPoint;
|
||||||
Filename: String;
|
Filename: String;
|
||||||
begin
|
begin
|
||||||
CurItem:=lvBreakPoints.Selected;
|
try
|
||||||
if (CurItem=nil) then exit;
|
DisableAllActions;
|
||||||
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
CurItem:=lvBreakPoints.Selected;
|
||||||
if MessageDlg(lisDeleteAllBreakpoints,
|
if (CurItem=nil) then exit;
|
||||||
Format(lisDeleteAllBreakpoints2, ['"', Filename, '"']),
|
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
||||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
if MessageDlg(lisDeleteAllBreakpoints,
|
||||||
then exit;
|
Format(lisDeleteAllBreakpoints2, ['"', Filename, '"']),
|
||||||
for n := lvBreakPoints.Items.Count - 1 downto 0 do
|
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||||
begin
|
then exit;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := lvBreakPoints.Items.Count - 1 downto 0 do
|
||||||
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
begin
|
||||||
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
Item := lvBreakPoints.Items[n];
|
||||||
then CurBreakPoint.Free;
|
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
||||||
|
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
||||||
|
then CurBreakPoint.Free;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -508,15 +525,20 @@ var
|
|||||||
CurBreakPoint: TIDEBreakPoint;
|
CurBreakPoint: TIDEBreakPoint;
|
||||||
Filename: String;
|
Filename: String;
|
||||||
begin
|
begin
|
||||||
CurItem:=lvBreakPoints.Selected;
|
try
|
||||||
if (CurItem=nil) then exit;
|
DisableAllActions;
|
||||||
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
CurItem:=lvBreakPoints.Selected;
|
||||||
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
if (CurItem=nil) then exit;
|
||||||
begin
|
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
||||||
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
begin
|
||||||
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
Item := lvBreakPoints.Items[n];
|
||||||
then CurBreakPoint.Enabled := False;
|
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
||||||
|
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
||||||
|
then CurBreakPoint.Enabled := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -528,15 +550,20 @@ var
|
|||||||
CurBreakPoint: TIDEBreakPoint;
|
CurBreakPoint: TIDEBreakPoint;
|
||||||
Filename: String;
|
Filename: String;
|
||||||
begin
|
begin
|
||||||
CurItem:=lvBreakPoints.Selected;
|
try
|
||||||
if (CurItem=nil) then exit;
|
DisableAllActions;
|
||||||
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
CurItem:=lvBreakPoints.Selected;
|
||||||
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
if (CurItem=nil) then exit;
|
||||||
begin
|
Filename:=TIDEBreakpoint(CurItem.Data).Source;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
||||||
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
begin
|
||||||
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
Item := lvBreakPoints.Items[n];
|
||||||
then CurBreakPoint.Enabled := True;
|
CurBreakPoint:=TIDEBreakPoint(Item.Data);
|
||||||
|
if CompareFilenames(CurBreakPoint.Source,Filename)=0
|
||||||
|
then CurBreakPoint.Enabled := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -544,16 +571,21 @@ procedure TBreakPointsDlg.popDeleteAllClick(Sender: TObject);
|
|||||||
var
|
var
|
||||||
n: Integer;
|
n: Integer;
|
||||||
begin
|
begin
|
||||||
if MessageDlg(lisDeleteAllBreakpoints,
|
|
||||||
lisDeleteAllBreakpoints,
|
|
||||||
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
|
||||||
then exit;
|
|
||||||
lvBreakPoints.BeginUpdate;
|
|
||||||
try
|
try
|
||||||
for n := lvBreakPoints.Items.Count - 1 downto 0 do
|
DisableAllActions;
|
||||||
TIDEBreakPoint(lvBreakPoints.Items[n].Data).Free;
|
if MessageDlg(lisDeleteAllBreakpoints,
|
||||||
|
lisDeleteAllBreakpoints,
|
||||||
|
mtConfirmation,[mbYes,mbCancel],0)<>mrYes
|
||||||
|
then exit;
|
||||||
|
lvBreakPoints.BeginUpdate;
|
||||||
|
try
|
||||||
|
for n := lvBreakPoints.Items.Count - 1 downto 0 do
|
||||||
|
TIDEBreakPoint(lvBreakPoints.Items[n].Data).Free;
|
||||||
|
finally
|
||||||
|
lvBreakPoints.EndUpdate;
|
||||||
|
end;
|
||||||
finally
|
finally
|
||||||
lvBreakPoints.EndUpdate;
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -564,7 +596,12 @@ end;
|
|||||||
|
|
||||||
procedure TBreakPointsDlg.popDeleteClick(Sender: TObject);
|
procedure TBreakPointsDlg.popDeleteClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DeleteSelectedBreakpoints
|
try
|
||||||
|
DisableAllActions;
|
||||||
|
DeleteSelectedBreakpoints
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBreakPointsDlg.popDisableAllClick(Sender: TObject);
|
procedure TBreakPointsDlg.popDisableAllClick(Sender: TObject);
|
||||||
@ -572,11 +609,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
||||||
if Item.Data <> nil
|
begin
|
||||||
then TIDEBreakPoint(Item.Data).Enabled := False;
|
Item := lvBreakPoints.Items[n];
|
||||||
|
if Item.Data <> nil
|
||||||
|
then TIDEBreakPoint(Item.Data).Enabled := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -585,11 +627,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvBreakPoints.Items[n];
|
for n := 0 to lvBreakPoints.Items.Count - 1 do
|
||||||
if Item.Data <> nil
|
begin
|
||||||
then TIDEBreakPoint(Item.Data).Enabled := True;
|
Item := lvBreakPoints.Items[n];
|
||||||
|
if Item.Data <> nil
|
||||||
|
then TIDEBreakPoint(Item.Data).Enabled := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -599,34 +646,53 @@ var
|
|||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
Enable: Boolean;
|
Enable: Boolean;
|
||||||
begin
|
begin
|
||||||
Item:=lvBreakPoints.Selected;
|
try
|
||||||
if (Item=nil) then exit;
|
DisableAllActions;
|
||||||
|
Item:=lvBreakPoints.Selected;
|
||||||
|
if (Item=nil) then exit;
|
||||||
|
|
||||||
Enable := not TIDEBreakPoint(Item.Data).Enabled;
|
Enable := not TIDEBreakPoint(Item.Data).Enabled;
|
||||||
|
|
||||||
if lvBreakPoints.SelCount > 1
|
if lvBreakPoints.SelCount > 1
|
||||||
then begin
|
then begin
|
||||||
for n := 0 to lvBreakPoints.Items.Count -1 do
|
for n := 0 to lvBreakPoints.Items.Count -1 do
|
||||||
begin
|
begin
|
||||||
Item := lvBreakPoints.Items[n];
|
Item := lvBreakPoints.Items[n];
|
||||||
if Item.Selected then
|
if Item.Selected then
|
||||||
TIDEBreakPoint(Item.Data).Enabled := Enable;
|
TIDEBreakPoint(Item.Data).Enabled := Enable;
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
TIDEBreakPoint(Item.Data).Enabled:= Enable;
|
||||||
end;
|
end;
|
||||||
end
|
finally
|
||||||
else begin
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
TIDEBreakPoint(Item.Data).Enabled:= Enable;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBreakPointsDlg.popPropertiesClick(Sender: TObject);
|
procedure TBreakPointsDlg.popPropertiesClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShowProperties;
|
try
|
||||||
|
DisableAllActions;
|
||||||
|
ShowProperties;
|
||||||
|
finally
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBreakPointsDlg.DoEndUpdate;
|
procedure TBreakPointsDlg.DoEndUpdate;
|
||||||
begin
|
begin
|
||||||
inherited DoEndUpdate;
|
inherited DoEndUpdate;
|
||||||
if bpdsItemsNeedUpdate in FStates then UpdateAll;
|
if bpdsItemsNeedUpdate in FStates then UpdateAll;
|
||||||
|
lvBreakPointsSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TBreakPointsDlg.DisableAllActions;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to ActionList1.ActionCount - 1 do
|
||||||
|
(ActionList1.Actions[i] as TAction).Enabled := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBreakPointsDlg.UpdateItem(const AnItem: TListItem;
|
procedure TBreakPointsDlg.UpdateItem(const AnItem: TListItem;
|
||||||
@ -761,5 +827,11 @@ begin
|
|||||||
DebugBoss.ShowBreakPointProperties(CurBreakPoint);
|
DebugBoss.ShowBreakPointProperties(CurBreakPoint);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TBreakPointsDlg.DoBeginUpdate;
|
||||||
|
begin
|
||||||
|
inherited DoBeginUpdate;
|
||||||
|
DisableAllActions;
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -126,6 +126,8 @@ type
|
|||||||
protected
|
protected
|
||||||
procedure DoBeginUpdate; override;
|
procedure DoBeginUpdate; override;
|
||||||
procedure DoEndUpdate; override;
|
procedure DoEndUpdate; override;
|
||||||
|
procedure DisableAllActions;
|
||||||
|
procedure EnableAllActions;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -307,12 +309,30 @@ end;
|
|||||||
|
|
||||||
procedure TCallStackDlg.DoBeginUpdate;
|
procedure TCallStackDlg.DoBeginUpdate;
|
||||||
begin
|
begin
|
||||||
|
DisableAllActions;
|
||||||
lvCallStack.BeginUpdate;
|
lvCallStack.BeginUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.DoEndUpdate;
|
procedure TCallStackDlg.DoEndUpdate;
|
||||||
begin
|
begin
|
||||||
lvCallStack.EndUpdate;
|
lvCallStack.EndUpdate;
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCallStackDlg.DisableAllActions;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to aclActions.ActionCount - 1 do
|
||||||
|
(aclActions.Actions[i] as TAction).Enabled := False;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCallStackDlg.EnableAllActions;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to aclActions.ActionCount - 1 do
|
||||||
|
(aclActions.Actions[i] as TAction).Enabled := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCallStackDlg.GetCurrentEntry: TCallStackEntry;
|
function TCallStackDlg.GetCurrentEntry: TCallStackEntry;
|
||||||
@ -381,19 +401,24 @@ var
|
|||||||
BreakPoint: TIDEBreakPoint;
|
BreakPoint: TIDEBreakPoint;
|
||||||
FileName: String;
|
FileName: String;
|
||||||
begin
|
begin
|
||||||
if (Item <> nil) and (BreakPoints <> nil) then
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
idx := FViewStart + Item.Index;
|
if (Item <> nil) and (BreakPoints <> nil) then
|
||||||
if idx >= CallStack.Count then Exit;
|
begin
|
||||||
Entry := CallStack.Entries[idx];
|
idx := FViewStart + Item.Index;
|
||||||
FileName := Entry.Source;
|
if idx >= CallStack.Count then Exit;
|
||||||
if (FileName = '') or not DebugBoss.GetFullFilename(FileName, False) then
|
Entry := CallStack.Entries[idx];
|
||||||
Exit;
|
FileName := Entry.Source;
|
||||||
BreakPoint := BreakPoints.Find(FileName, Entry.Line);
|
if (FileName = '') or not DebugBoss.GetFullFilename(FileName, False) then
|
||||||
if BreakPoint <> nil then
|
Exit;
|
||||||
DebugBoss.DoDeleteBreakPoint(BreakPoint.Source, BreakPoint.Line)
|
BreakPoint := BreakPoints.Find(FileName, Entry.Line);
|
||||||
else
|
if BreakPoint <> nil then
|
||||||
DebugBoss.DoCreateBreakPoint(FileName, Entry.Line, False);
|
DebugBoss.DoDeleteBreakPoint(BreakPoint.Source, BreakPoint.Line)
|
||||||
|
else
|
||||||
|
DebugBoss.DoCreateBreakPoint(FileName, Entry.Line, False);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -439,10 +464,15 @@ procedure TCallStackDlg.actSetAsCurrentClick(Sender : TObject);
|
|||||||
var
|
var
|
||||||
Entry: TCallStackEntry;
|
Entry: TCallStackEntry;
|
||||||
begin
|
begin
|
||||||
Entry := GetCurrentEntry;
|
try
|
||||||
if Entry = nil then Exit;
|
DisableAllActions;
|
||||||
|
Entry := GetCurrentEntry;
|
||||||
|
if Entry = nil then Exit;
|
||||||
|
|
||||||
CallStack.Current := Entry;
|
CallStack.Current := Entry;
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.actShowClick(Sender: TObject);
|
procedure TCallStackDlg.actShowClick(Sender: TObject);
|
||||||
@ -452,9 +482,14 @@ end;
|
|||||||
|
|
||||||
procedure TCallStackDlg.actViewBottomExecute(Sender: TObject);
|
procedure TCallStackDlg.actViewBottomExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if CallStack <> nil
|
try
|
||||||
then SetViewStart(CallStack.Count - FViewLimit)
|
DisableAllActions;
|
||||||
else SetViewStart(0);
|
if CallStack <> nil
|
||||||
|
then SetViewStart(CallStack.Count - FViewLimit)
|
||||||
|
else SetViewStart(0);
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.actToggleBreakPointExecute(Sender: TObject);
|
procedure TCallStackDlg.actToggleBreakPointExecute(Sender: TObject);
|
||||||
@ -464,21 +499,36 @@ end;
|
|||||||
|
|
||||||
procedure TCallStackDlg.actViewGotoExecute(Sender: TObject);
|
procedure TCallStackDlg.actViewGotoExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
SetViewStart(StrToIntDef(txtGoto.Text, 0));
|
try
|
||||||
|
DisableAllActions;
|
||||||
|
SetViewStart(StrToIntDef(txtGoto.Text, 0));
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.actViewMoreExecute(Sender: TObject);
|
procedure TCallStackDlg.actViewMoreExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ToolButtonPower.Down := True;
|
try
|
||||||
ToolButtonPowerClick(nil);
|
DisableAllActions;
|
||||||
ViewLimit := ViewLimit + FViewCount;
|
ToolButtonPower.Down := True;
|
||||||
|
ToolButtonPowerClick(nil);
|
||||||
|
ViewLimit := ViewLimit + FViewCount;
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.actViewTopExecute(Sender: TObject);
|
procedure TCallStackDlg.actViewTopExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ToolButtonPower.Down := True;
|
try
|
||||||
ToolButtonPowerClick(nil);
|
DisableAllActions;
|
||||||
SetViewStart(0);
|
ToolButtonPower.Down := True;
|
||||||
|
ToolButtonPowerClick(nil);
|
||||||
|
SetViewStart(0);
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.BreakPointChanged(const ASender: TIDEBreakPoints;
|
procedure TCallStackDlg.BreakPointChanged(const ASender: TIDEBreakPoints;
|
||||||
@ -571,9 +621,14 @@ end;
|
|||||||
|
|
||||||
procedure TCallStackDlg.actViewLimitExecute(Sender: TObject);
|
procedure TCallStackDlg.actViewLimitExecute(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ToolButtonPower.Down := True;
|
try
|
||||||
ToolButtonPowerClick(nil);
|
DisableAllActions;
|
||||||
ViewLimit := FViewCount;
|
ToolButtonPower.Down := True;
|
||||||
|
ToolButtonPowerClick(nil);
|
||||||
|
ViewLimit := FViewCount;
|
||||||
|
finally
|
||||||
|
EnableAllActions;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.SetViewStart(AStart: Integer);
|
procedure TCallStackDlg.SetViewStart(AStart: Integer);
|
||||||
|
@ -111,6 +111,7 @@ type
|
|||||||
|
|
||||||
procedure UpdateItem(const AItem: TListItem; const AWatch: TIDEWatch);
|
procedure UpdateItem(const AItem: TListItem; const AWatch: TIDEWatch);
|
||||||
procedure UpdateAll;
|
procedure UpdateAll;
|
||||||
|
procedure DisableAllActions;
|
||||||
protected
|
protected
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
@ -276,6 +277,8 @@ begin
|
|||||||
actDeleteAll.Enabled := lvWatches.Items.Count > 0;
|
actDeleteAll.Enabled := lvWatches.Items.Count > 0;
|
||||||
|
|
||||||
actProperties.Enabled := ItemSelected;
|
actProperties.Enabled := ItemSelected;
|
||||||
|
|
||||||
|
actPower.Enabled := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.lvWatchesDblClick(Sender: TObject);
|
procedure TWatchesDlg.lvWatchesDblClick(Sender: TObject);
|
||||||
@ -320,11 +323,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvWatches.Items.Count -1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvWatches.Items[n];
|
for n := 0 to lvWatches.Items.Count -1 do
|
||||||
if Item.Selected then
|
begin
|
||||||
TIDEWatch(Item.Data).Enabled := True;
|
Item := lvWatches.Items[n];
|
||||||
|
if Item.Selected then
|
||||||
|
TIDEWatch(Item.Data).Enabled := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -333,11 +341,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvWatches.Items.Count -1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvWatches.Items[n];
|
for n := 0 to lvWatches.Items.Count -1 do
|
||||||
if Item.Selected then
|
begin
|
||||||
TIDEWatch(Item.Data).Enabled := False;
|
Item := lvWatches.Items[n];
|
||||||
|
if Item.Selected then
|
||||||
|
TIDEWatch(Item.Data).Enabled := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -357,26 +370,41 @@ end;
|
|||||||
|
|
||||||
procedure TWatchesDlg.popAddClick(Sender: TObject);
|
procedure TWatchesDlg.popAddClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DebugBoss.ShowWatchProperties(nil);
|
try
|
||||||
|
DisableAllActions;
|
||||||
|
DebugBoss.ShowWatchProperties(nil);
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.popDeleteAllClick(Sender: TObject);
|
procedure TWatchesDlg.popDeleteAllClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
n: Integer;
|
n: Integer;
|
||||||
begin
|
begin
|
||||||
for n := lvWatches.Items.Count - 1 downto 0 do
|
try
|
||||||
TIDEWatch(lvWatches.Items[n].Data).Free;
|
DisableAllActions;
|
||||||
|
for n := lvWatches.Items.Count - 1 downto 0 do
|
||||||
|
TIDEWatch(lvWatches.Items[n].Data).Free;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.popDeleteClick(Sender: TObject);
|
procedure TWatchesDlg.popDeleteClick(Sender: TObject);
|
||||||
var
|
var
|
||||||
Item: TIDEWatch;
|
Item: TIDEWatch;
|
||||||
begin
|
begin
|
||||||
repeat
|
try
|
||||||
Item := GetSelected;
|
DisableAllActions;
|
||||||
Item.Free;
|
repeat
|
||||||
until Item = nil;
|
Item := GetSelected;
|
||||||
//GetSelected.Free;
|
Item.Free;
|
||||||
|
until Item = nil;
|
||||||
|
//GetSelected.Free;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.popDisableAllClick(Sender: TObject);
|
procedure TWatchesDlg.popDisableAllClick(Sender: TObject);
|
||||||
@ -384,11 +412,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvWatches.Items.Count - 1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvWatches.Items[n];
|
for n := 0 to lvWatches.Items.Count - 1 do
|
||||||
if Item.Data <> nil
|
begin
|
||||||
then TIDEWatch(Item.Data).Enabled := False;
|
Item := lvWatches.Items[n];
|
||||||
|
if Item.Data <> nil
|
||||||
|
then TIDEWatch(Item.Data).Enabled := False;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -397,11 +430,16 @@ var
|
|||||||
n: Integer;
|
n: Integer;
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
begin
|
begin
|
||||||
for n := 0 to lvWatches.Items.Count - 1 do
|
try
|
||||||
begin
|
DisableAllActions;
|
||||||
Item := lvWatches.Items[n];
|
for n := 0 to lvWatches.Items.Count - 1 do
|
||||||
if Item.Data <> nil
|
begin
|
||||||
then TIDEWatch(Item.Data).Enabled := True;
|
Item := lvWatches.Items[n];
|
||||||
|
if Item.Data <> nil
|
||||||
|
then TIDEWatch(Item.Data).Enabled := True;
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -409,15 +447,25 @@ procedure TWatchesDlg.popEnabledClick(Sender: TObject);
|
|||||||
var
|
var
|
||||||
Watch: TIDEWatch;
|
Watch: TIDEWatch;
|
||||||
begin
|
begin
|
||||||
Watch := GetSelected;
|
try
|
||||||
if Watch = nil then Exit;
|
DisableAllActions;
|
||||||
popEnabled.Checked := not popEnabled.Checked;
|
Watch := GetSelected;
|
||||||
Watch.Enabled := popEnabled.Checked;
|
if Watch = nil then Exit;
|
||||||
|
popEnabled.Checked := not popEnabled.Checked;
|
||||||
|
Watch.Enabled := popEnabled.Checked;
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.popPropertiesClick(Sender: TObject);
|
procedure TWatchesDlg.popPropertiesClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DebugBoss.ShowWatchProperties(GetSelected);
|
try
|
||||||
|
DisableAllActions;
|
||||||
|
DebugBoss.ShowWatchProperties(GetSelected);
|
||||||
|
finally
|
||||||
|
lvWatchesSelectItem(nil, nil, False);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.UpdateItem(const AItem: TListItem; const AWatch: TIDEWatch);
|
procedure TWatchesDlg.UpdateItem(const AItem: TListItem; const AWatch: TIDEWatch);
|
||||||
@ -467,6 +515,14 @@ begin
|
|||||||
WatchUpdate(FWatches, FWatches.Items[i]);
|
WatchUpdate(FWatches, FWatches.Items[i]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWatchesDlg.DisableAllActions;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
for i := 0 to ActionList1.ActionCount - 1 do
|
||||||
|
(ActionList1.Actions[i] as TAction).Enabled := False;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWatchesDlg.WatchAdd(const ASender: TIDEWatches; const AWatch: TIDEWatch);
|
procedure TWatchesDlg.WatchAdd(const ASender: TIDEWatches; const AWatch: TIDEWatch);
|
||||||
var
|
var
|
||||||
Item: TListItem;
|
Item: TListItem;
|
||||||
|
Loading…
Reference in New Issue
Block a user