mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-20 09:59:09 +02:00
Debugger: Callstack-Dialog: Fixed, don't reset the "ViewStart" (first index shown), if more frames are evaluated
This commit is contained in:
parent
9487022e01
commit
71f7423dcc
@ -129,12 +129,15 @@ type
|
|||||||
function GetSelectedCallstack: TIdeCallStack;
|
function GetSelectedCallstack: TIdeCallStack;
|
||||||
procedure DoBreakPointsChanged; override;
|
procedure DoBreakPointsChanged; override;
|
||||||
procedure BreakPointChanged(const ASender: TIDEBreakPoints; const {%H-}ABreakpoint: TIDEBreakPoint);
|
procedure BreakPointChanged(const ASender: TIDEBreakPoints; const {%H-}ABreakpoint: TIDEBreakPoint);
|
||||||
|
procedure DoDebuggerState(ADebugger: TDebuggerIntf; AnOldState: TDBGState);
|
||||||
procedure CallStackChanged(Sender: TObject);
|
procedure CallStackChanged(Sender: TObject);
|
||||||
|
procedure CallStackCtxChanged(Sender: TObject);
|
||||||
procedure CallStackCurrent(Sender: TObject);
|
procedure CallStackCurrent(Sender: TObject);
|
||||||
function ColSizeGetter(AColId: Integer; var ASize: Integer): Boolean;
|
function ColSizeGetter(AColId: Integer; var ASize: Integer): Boolean;
|
||||||
procedure ColSizeSetter(AColId: Integer; ASize: Integer);
|
procedure ColSizeSetter(AColId: Integer; ASize: Integer);
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
property BreakPoints;
|
property BreakPoints;
|
||||||
property CallStackMonitor;
|
property CallStackMonitor;
|
||||||
property ThreadsMonitor;
|
property ThreadsMonitor;
|
||||||
@ -190,8 +193,11 @@ begin
|
|||||||
BreakpointsNotification.OnAdd := @BreakPointChanged;
|
BreakpointsNotification.OnAdd := @BreakPointChanged;
|
||||||
BreakpointsNotification.OnUpdate := @BreakPointChanged;
|
BreakpointsNotification.OnUpdate := @BreakPointChanged;
|
||||||
BreakpointsNotification.OnRemove := @BreakPointChanged;
|
BreakpointsNotification.OnRemove := @BreakPointChanged;
|
||||||
ThreadsNotification.OnCurrent := @CallStackChanged;
|
ThreadsNotification.OnCurrent := @CallStackCtxChanged;
|
||||||
SnapshotNotification.OnCurrent := @CallStackChanged;
|
SnapshotNotification.OnCurrent := @CallStackCtxChanged;
|
||||||
|
|
||||||
|
DebugBoss.RegisterStateChangeHandler(@DoDebuggerState);
|
||||||
|
|
||||||
|
|
||||||
actToggleBreakPoint.ShortCut := IDECommandList.FindIDECommand(ecToggleBreakPoint).AsShortCut;
|
actToggleBreakPoint.ShortCut := IDECommandList.FindIDECommand(ecToggleBreakPoint).AsShortCut;
|
||||||
|
|
||||||
@ -202,10 +208,30 @@ begin
|
|||||||
lvCallStack.Column[i].AutoSize := True;
|
lvCallStack.Column[i].AutoSize := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TCallStackDlg.Destroy;
|
||||||
|
begin
|
||||||
|
DebugBoss.UnregisterStateChangeHandler(@DoDebuggerState);
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCallStackDlg.DoDebuggerState(ADebugger: TDebuggerIntf;
|
||||||
|
AnOldState: TDBGState);
|
||||||
|
begin
|
||||||
|
CallStackCtxChanged(nil);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TCallStackDlg.CallStackChanged(Sender: TObject);
|
procedure TCallStackDlg.CallStackChanged(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
DebugLn(DBG_DATA_MONITORS, ['DebugDataWindow: TCallStackDlg.CallStackChanged from ', DbgSName(Sender), ' Upd:', IsUpdating]);
|
DebugLn(DBG_DATA_MONITORS, ['DebugDataWindow: TCallStackDlg.CallStackChanged from ', DbgSName(Sender), ' Upd:', IsUpdating]);
|
||||||
if (not ToolButtonPower.Down) or FInUpdateView then exit;
|
if (not ToolButtonPower.Down) or FInUpdateView then exit;
|
||||||
|
UpdateView;
|
||||||
|
SetViewMax;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TCallStackDlg.CallStackCtxChanged(Sender: TObject);
|
||||||
|
begin
|
||||||
|
DebugLn(DBG_DATA_MONITORS, ['DebugDataWindow: TCallStackDlg.CallStackCtxChanged from ', DbgSName(Sender), ' Upd:', IsUpdating]);
|
||||||
|
if (not ToolButtonPower.Down) or FInUpdateView then exit;
|
||||||
if FViewStart = 0
|
if FViewStart = 0
|
||||||
then UpdateView
|
then UpdateView
|
||||||
else SetViewStart(0);
|
else SetViewStart(0);
|
||||||
|
Loading…
Reference in New Issue
Block a user