mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 05:19:31 +02:00
ide, debugger: add "Toggle breakpoint" menu item to the callstack dialog, show address in the source column if source file is not available
git-svn-id: trunk@18984 -
This commit is contained in:
parent
7402655037
commit
41ff1a63f0
@ -1,7 +1,7 @@
|
||||
inherited CallStackDlg: TCallStackDlg
|
||||
Left = 247
|
||||
Left = 516
|
||||
Height = 246
|
||||
Top = 176
|
||||
Top = 219
|
||||
Width = 562
|
||||
ActiveControl = lvCallStack
|
||||
Caption = 'CallStack'
|
||||
@ -144,13 +144,17 @@ inherited CallStackDlg: TCallStackDlg
|
||||
end
|
||||
end
|
||||
object mnuPopup: TPopupMenu[2]
|
||||
left = 66
|
||||
top = 88
|
||||
left = 16
|
||||
top = 120
|
||||
object popShow: TMenuItem
|
||||
Action = actShow
|
||||
Default = True
|
||||
OnClick = actShowClick
|
||||
end
|
||||
object MenuItem1: TMenuItem
|
||||
Action = actToggleBreakPoint
|
||||
OnClick = actToggleBreakPointExecute
|
||||
end
|
||||
object N1: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
@ -164,8 +168,8 @@ inherited CallStackDlg: TCallStackDlg
|
||||
end
|
||||
end
|
||||
object aclActions: TActionList[3]
|
||||
left = 128
|
||||
top = 104
|
||||
left = 16
|
||||
top = 80
|
||||
object actShow: TAction
|
||||
Caption = 'Show'
|
||||
DisableIfNoHandler = True
|
||||
@ -211,10 +215,15 @@ inherited CallStackDlg: TCallStackDlg
|
||||
DisableIfNoHandler = True
|
||||
OnExecute = actViewBottomExecute
|
||||
end
|
||||
object actToggleBreakPoint: TAction
|
||||
Caption = 'Toggle Breakpoint'
|
||||
DisableIfNoHandler = True
|
||||
OnExecute = actToggleBreakPointExecute
|
||||
end
|
||||
end
|
||||
object mnuLimit: TPopupMenu[4]
|
||||
left = 192
|
||||
top = 112
|
||||
left = 48
|
||||
top = 120
|
||||
object popLimit10: TMenuItem
|
||||
Tag = 10
|
||||
Caption = 'Max 10'
|
||||
|
@ -1,64 +1,67 @@
|
||||
{ This is an automatically generated lazarus resource file }
|
||||
|
||||
LazarusResources.Add('TCallStackDlg','FORMDATA',[
|
||||
'TPF0'#241#13'TCallStackDlg'#12'CallStackDlg'#4'Left'#3#247#0#6'Height'#3#246
|
||||
+#0#3'Top'#3#176#0#5'Width'#3'2'#2#13'ActiveControl'#7#11'lvCallStack'#7'Capt'
|
||||
+'ion'#6#9'CallStack'#12'ClientHeight'#3#246#0#11'ClientWidth'#3'2'#2#8'OnCre'
|
||||
+'ate'#7#10'FormCreate'#7'Visible'#9#0#242#2#0#9'TListView'#11'lvCallStack'#4
|
||||
+'Left'#2#0#6'Height'#3#204#0#3'Top'#2'*'#5'Width'#3'2'#2#5'Align'#7#8'alClie'
|
||||
+'nt'#7'Columns'#14#1#5'Width'#2#20#0#1#7'Caption'#6#5'Index'#5'Width'#2'#'#0
|
||||
+#1#7'Caption'#6#6'Source'#5'Width'#3#150#0#0#1#7'Caption'#6#4'Line'#0#1#7'Ca'
|
||||
+'ption'#6#8'Function'#5'Width'#3'"'#1#0#0#9'PopupMenu'#7#8'mnuPopup'#8'ReadO'
|
||||
+'nly'#9#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#7'OnClick'
|
||||
+#7#16'lvCallStackClick'#10'OnDblClick'#7#19'lvCallStackDBLCLICK'#0#0#242#2#1
|
||||
+#8'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2'*'#3'Top'#2#0#5'Width'#3'2'
|
||||
+#2#12'ButtonHeight'#2'('#11'ButtonWidth'#2'2'#7'Caption'#6#9'tbButtons'#11'E'
|
||||
+'dgeBorders'#11#0#12'ShowCaptions'#9#8'TabOrder'#2#1#0#11'TToolButton'#14'To'
|
||||
+'olButtonShow'#4'Left'#2#1#3'Top'#2#0#6'Action'#7#7'actShow'#10'ImageIndex'#2
|
||||
+#0#0#0#11'TToolButton'#17'ToolButtonCurrent'#4'Left'#2'3'#3'Top'#2#0#6'Actio'
|
||||
+'n'#7#13'actSetCurrent'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#2'e'#3'T'
|
||||
+'op'#2#0#5'Width'#2#3#7'Caption'#6#11'ToolButton4'#5'Style'#7#12'tbsSeparato'
|
||||
+'r'#0#0#11'TToolButton'#14'ToolButtonMore'#4'Left'#3#159#0#3'Top'#2#0#6'Acti'
|
||||
+'on'#7#11'actViewMore'#10'ImageIndex'#2#1#0#0#11'TToolButton'#13'ToolButtonM'
|
||||
+'ax'#4'Left'#2'h'#3'Top'#2#0#6'Action'#7#12'actViewLimit'#7'Caption'#6#6'Max'
|
||||
+' 10'#12'DropdownMenu'#7#8'mnuLimit'#5'Style'#7#11'tbsDropDown'#0#0#11'TTool'
|
||||
+'Button'#14'ToolButtonGoto'#4'Left'#3'j'#1#3'Top'#2#0#6'Action'#7#11'actView'
|
||||
+'Goto'#10'ImageIndex'#2#4#0#0#11'TToolButton'#17'ToolButtonCopyAll'#4'Left'#3
|
||||
+#159#1#3'Top'#2#0#6'Action'#7#10'actCopyAll'#10'ImageIndex'#2#5#0#0#11'TTool'
|
||||
+'Button'#11'ToolButton8'#4'Left'#3#156#1#3'Top'#2#0#5'Width'#2#3#7'Caption'#6
|
||||
+#11'ToolButton8'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#11'ToolButt'
|
||||
+'on9'#4'Left'#3#209#0#3'Top'#2#0#5'Width'#2#3#7'Caption'#6#11'ToolButton9'#5
|
||||
+'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#13'ToolButtonTop'#4'Left'#3
|
||||
+#212#0#3'Top'#2#0#6'Action'#7#10'actViewTop'#10'ImageIndex'#2#2#0#0#11'TTool'
|
||||
+'Button'#16'ToolButtonBottom'#4'Left'#3#6#1#3'Top'#2#0#6'Action'#7#13'actVie'
|
||||
+'wBottom'#10'ImageIndex'#2#3#0#0#6'TPanel'#6'Panel1'#4'Left'#3'8'#1#6'Height'
|
||||
+#2'('#3'Top'#2#0#5'Width'#2'2'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2
|
||||
+'('#11'ClientWidth'#2'2'#8'TabOrder'#2#0#0#5'TEdit'#7'txtGoto'#4'Left'#2#2#6
|
||||
+'Height'#2#22#3'Top'#2#8#5'Width'#2'.'#10'OnKeyPress'#7#15'txtGotoKeyPress'#8
|
||||
+'TabOrder'#2#0#4'Text'#6#1'0'#0#0#0#0#242#2#2#10'TPopupMenu'#8'mnuPopup'#4'l'
|
||||
+'eft'#2'B'#3'top'#2'X'#0#9'TMenuItem'#7'popShow'#6'Action'#7#7'actShow'#7'De'
|
||||
+'fault'#9#7'OnClick'#7#12'actShowClick'#0#0#9'TMenuItem'#2'N1'#7'Caption'#6#1
|
||||
+'-'#0#0#9'TMenuItem'#15'popSetAsCurrent'#6'Action'#7#13'actSetCurrent'#7'OnC'
|
||||
+'lick'#7#20'actSetAsCurrentClick'#0#0#9'TMenuItem'#10'popCopyAll'#6'Action'#7
|
||||
+#10'actCopyAll'#7'OnClick'#7#15'actCopyAllClick'#0#0#0#242#2#3#11'TActionLis'
|
||||
+'t'#10'aclActions'#4'left'#3#128#0#3'top'#2'h'#0#7'TAction'#7'actShow'#7'Cap'
|
||||
+'tion'#6#4'Show'#18'DisableIfNoHandler'#9#9'OnExecute'#7#12'actShowClick'#0#0
|
||||
+#7'TAction'#13'actSetCurrent'#7'Caption'#6#7'Current'#18'DisableIfNoHandler'
|
||||
+#9#9'OnExecute'#7#20'actSetAsCurrentClick'#0#0#7'TAction'#10'actCopyAll'#7'C'
|
||||
+'aption'#6#8'Copy All'#18'DisableIfNoHandler'#9#9'OnExecute'#7#15'actCopyAll'
|
||||
+'Click'#0#0#7'TAction'#11'actViewMore'#8'Category'#6#4'View'#7'Caption'#6#4
|
||||
+'More'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'actViewMoreExecute'#0#0#7
|
||||
+'TAction'#11'actViewGoto'#8'Category'#6#4'View'#7'Caption'#6#4'Goto'#18'Disa'
|
||||
+'bleIfNoHandler'#9#9'OnExecute'#7#18'actViewGotoExecute'#0#0#7'TAction'#12'a'
|
||||
+'ctViewLimit'#8'Category'#6#4'View'#7'Caption'#6#2'10'#18'DisableIfNoHandler'
|
||||
+#9#9'OnExecute'#7#19'actViewLimitExecute'#0#0#7'TAction'#10'actViewTop'#8'Ca'
|
||||
+'tegory'#6#4'View'#7'Caption'#6#3'Top'#18'DisableIfNoHandler'#9#9'OnExecute'
|
||||
+#7#17'actViewTopExecute'#0#0#7'TAction'#13'actViewBottom'#8'Category'#6#4'Vi'
|
||||
+'ew'#7'Caption'#6#6'Bottom'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actVi'
|
||||
+'ewBottomExecute'#0#0#0#242#2#4#10'TPopupMenu'#8'mnuLimit'#4'left'#3#192#0#3
|
||||
+'top'#2'p'#0#9'TMenuItem'#10'popLimit10'#3'Tag'#2#10#7'Caption'#6#6'Max 10'#7
|
||||
+'OnClick'#7#13'popCountClick'#0#0#9'TMenuItem'#10'popLimit25'#3'Tag'#2#25#7
|
||||
+'Caption'#6#6'Max 25'#7'OnClick'#7#13'popCountClick'#0#0#9'TMenuItem'#10'pop'
|
||||
+'Limit50'#3'Tag'#2'2'#7'Caption'#6#6'Max 50'#7'OnClick'#7#13'popCountClick'#0
|
||||
+#0#0#0
|
||||
'TPF0'#241#13'TCallStackDlg'#12'CallStackDlg'#4'Left'#3#4#2#6'Height'#3#246#0
|
||||
+#3'Top'#3#219#0#5'Width'#3'2'#2#13'ActiveControl'#7#11'lvCallStack'#7'Captio'
|
||||
+'n'#6#9'CallStack'#12'ClientHeight'#3#246#0#11'ClientWidth'#3'2'#2#8'OnCreat'
|
||||
+'e'#7#10'FormCreate'#7'Visible'#9#0#242#2#0#9'TListView'#11'lvCallStack'#4'L'
|
||||
+'eft'#2#0#6'Height'#3#204#0#3'Top'#2'*'#5'Width'#3'2'#2#5'Align'#7#8'alClien'
|
||||
+'t'#7'Columns'#14#1#5'Width'#2#20#0#1#7'Caption'#6#5'Index'#5'Width'#2'#'#0#1
|
||||
+#7'Caption'#6#6'Source'#5'Width'#3#150#0#0#1#7'Caption'#6#4'Line'#0#1#7'Capt'
|
||||
+'ion'#6#8'Function'#5'Width'#3'"'#1#0#0#9'PopupMenu'#7#8'mnuPopup'#8'ReadOnl'
|
||||
+'y'#9#9'RowSelect'#9#8'TabOrder'#2#0#9'ViewStyle'#7#8'vsReport'#7'OnClick'#7
|
||||
+#16'lvCallStackClick'#10'OnDblClick'#7#19'lvCallStackDBLCLICK'#0#0#242#2#1#8
|
||||
+'TToolBar'#8'ToolBar1'#4'Left'#2#0#6'Height'#2'*'#3'Top'#2#0#5'Width'#3'2'#2
|
||||
+#12'ButtonHeight'#2'('#11'ButtonWidth'#2'2'#7'Caption'#6#9'tbButtons'#11'Edg'
|
||||
+'eBorders'#11#0#12'ShowCaptions'#9#8'TabOrder'#2#1#0#11'TToolButton'#14'Tool'
|
||||
+'ButtonShow'#4'Left'#2#1#3'Top'#2#0#6'Action'#7#7'actShow'#10'ImageIndex'#2#0
|
||||
+#0#0#11'TToolButton'#17'ToolButtonCurrent'#4'Left'#2'3'#3'Top'#2#0#6'Action'
|
||||
+#7#13'actSetCurrent'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#2'e'#3'Top'
|
||||
+#2#0#5'Width'#2#3#7'Caption'#6#11'ToolButton4'#5'Style'#7#12'tbsSeparator'#0
|
||||
+#0#11'TToolButton'#14'ToolButtonMore'#4'Left'#3#159#0#3'Top'#2#0#6'Action'#7
|
||||
+#11'actViewMore'#10'ImageIndex'#2#1#0#0#11'TToolButton'#13'ToolButtonMax'#4
|
||||
+'Left'#2'h'#3'Top'#2#0#6'Action'#7#12'actViewLimit'#7'Caption'#6#6'Max 10'#12
|
||||
+'DropdownMenu'#7#8'mnuLimit'#5'Style'#7#11'tbsDropDown'#0#0#11'TToolButton'
|
||||
+#14'ToolButtonGoto'#4'Left'#3'j'#1#3'Top'#2#0#6'Action'#7#11'actViewGoto'#10
|
||||
+'ImageIndex'#2#4#0#0#11'TToolButton'#17'ToolButtonCopyAll'#4'Left'#3#159#1#3
|
||||
+'Top'#2#0#6'Action'#7#10'actCopyAll'#10'ImageIndex'#2#5#0#0#11'TToolButton'
|
||||
+#11'ToolButton8'#4'Left'#3#156#1#3'Top'#2#0#5'Width'#2#3#7'Caption'#6#11'Too'
|
||||
+'lButton8'#5'Style'#7#12'tbsSeparator'#0#0#11'TToolButton'#11'ToolButton9'#4
|
||||
+'Left'#3#209#0#3'Top'#2#0#5'Width'#2#3#7'Caption'#6#11'ToolButton9'#5'Style'
|
||||
+#7#12'tbsSeparator'#0#0#11'TToolButton'#13'ToolButtonTop'#4'Left'#3#212#0#3
|
||||
+'Top'#2#0#6'Action'#7#10'actViewTop'#10'ImageIndex'#2#2#0#0#11'TToolButton'
|
||||
+#16'ToolButtonBottom'#4'Left'#3#6#1#3'Top'#2#0#6'Action'#7#13'actViewBottom'
|
||||
+#10'ImageIndex'#2#3#0#0#6'TPanel'#6'Panel1'#4'Left'#3'8'#1#6'Height'#2'('#3
|
||||
+'Top'#2#0#5'Width'#2'2'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'('#11
|
||||
+'ClientWidth'#2'2'#8'TabOrder'#2#0#0#5'TEdit'#7'txtGoto'#4'Left'#2#2#6'Heigh'
|
||||
+'t'#2#22#3'Top'#2#8#5'Width'#2'.'#10'OnKeyPress'#7#15'txtGotoKeyPress'#8'Tab'
|
||||
+'Order'#2#0#4'Text'#6#1'0'#0#0#0#0#242#2#2#10'TPopupMenu'#8'mnuPopup'#4'left'
|
||||
+#2#16#3'top'#2'x'#0#9'TMenuItem'#7'popShow'#6'Action'#7#7'actShow'#7'Default'
|
||||
+#9#7'OnClick'#7#12'actShowClick'#0#0#9'TMenuItem'#9'MenuItem1'#6'Action'#7#19
|
||||
+'actToggleBreakPoint'#7'OnClick'#7#26'actToggleBreakPointExecute'#0#0#9'TMen'
|
||||
+'uItem'#2'N1'#7'Caption'#6#1'-'#0#0#9'TMenuItem'#15'popSetAsCurrent'#6'Actio'
|
||||
+'n'#7#13'actSetCurrent'#7'OnClick'#7#20'actSetAsCurrentClick'#0#0#9'TMenuIte'
|
||||
+'m'#10'popCopyAll'#6'Action'#7#10'actCopyAll'#7'OnClick'#7#15'actCopyAllClic'
|
||||
+'k'#0#0#0#242#2#3#11'TActionList'#10'aclActions'#4'left'#2#16#3'top'#2'P'#0#7
|
||||
+'TAction'#7'actShow'#7'Caption'#6#4'Show'#18'DisableIfNoHandler'#9#9'OnExecu'
|
||||
+'te'#7#12'actShowClick'#0#0#7'TAction'#13'actSetCurrent'#7'Caption'#6#7'Curr'
|
||||
+'ent'#18'DisableIfNoHandler'#9#9'OnExecute'#7#20'actSetAsCurrentClick'#0#0#7
|
||||
+'TAction'#10'actCopyAll'#7'Caption'#6#8'Copy All'#18'DisableIfNoHandler'#9#9
|
||||
+'OnExecute'#7#15'actCopyAllClick'#0#0#7'TAction'#11'actViewMore'#8'Category'
|
||||
+#6#4'View'#7'Caption'#6#4'More'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'a'
|
||||
+'ctViewMoreExecute'#0#0#7'TAction'#11'actViewGoto'#8'Category'#6#4'View'#7'C'
|
||||
+'aption'#6#4'Goto'#18'DisableIfNoHandler'#9#9'OnExecute'#7#18'actViewGotoExe'
|
||||
+'cute'#0#0#7'TAction'#12'actViewLimit'#8'Category'#6#4'View'#7'Caption'#6#2
|
||||
+'10'#18'DisableIfNoHandler'#9#9'OnExecute'#7#19'actViewLimitExecute'#0#0#7'T'
|
||||
+'Action'#10'actViewTop'#8'Category'#6#4'View'#7'Caption'#6#3'Top'#18'Disable'
|
||||
+'IfNoHandler'#9#9'OnExecute'#7#17'actViewTopExecute'#0#0#7'TAction'#13'actVi'
|
||||
+'ewBottom'#8'Category'#6#4'View'#7'Caption'#6#6'Bottom'#18'DisableIfNoHandle'
|
||||
+'r'#9#9'OnExecute'#7#20'actViewBottomExecute'#0#0#7'TAction'#19'actToggleBre'
|
||||
+'akPoint'#7'Caption'#6#17'Toggle Breakpoint'#18'DisableIfNoHandler'#9#9'OnEx'
|
||||
+'ecute'#7#26'actToggleBreakPointExecute'#0#0#0#242#2#4#10'TPopupMenu'#8'mnuL'
|
||||
+'imit'#4'left'#2'0'#3'top'#2'x'#0#9'TMenuItem'#10'popLimit10'#3'Tag'#2#10#7
|
||||
+'Caption'#6#6'Max 10'#7'OnClick'#7#13'popCountClick'#0#0#9'TMenuItem'#10'pop'
|
||||
+'Limit25'#3'Tag'#2#25#7'Caption'#6#6'Max 25'#7'OnClick'#7#13'popCountClick'#0
|
||||
+#0#9'TMenuItem'#10'popLimit50'#3'Tag'#2'2'#7'Caption'#6#6'Max 50'#7'OnClick'
|
||||
+#7#13'popCountClick'#0#0#0#0
|
||||
]);
|
||||
|
@ -38,7 +38,7 @@ interface
|
||||
uses
|
||||
LResources, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
||||
ComCtrls, Debugger, DebuggerDlg, Menus, ClipBrd, ExtCtrls, StdCtrls, Spin,
|
||||
ActnList, MainBase, IDEImagesIntf;
|
||||
ActnList, MainBase, IDEImagesIntf, IDECommands;
|
||||
|
||||
type
|
||||
|
||||
@ -47,6 +47,7 @@ type
|
||||
TCallStackDlg = class(TDebuggerDlg)
|
||||
aclActions: TActionList;
|
||||
actCopyAll: TAction;
|
||||
actToggleBreakPoint: TAction;
|
||||
actViewBottom: TAction;
|
||||
actViewTop: TAction;
|
||||
actViewLimit: TAction;
|
||||
@ -54,6 +55,7 @@ type
|
||||
actViewMore: TAction;
|
||||
actSetCurrent: TAction;
|
||||
actShow: TAction;
|
||||
MenuItem1: TMenuItem;
|
||||
ToolButtonTop: TToolButton;
|
||||
ToolButtonBottom: TToolButton;
|
||||
ToolButtonCopyAll: TToolButton;
|
||||
@ -78,6 +80,7 @@ type
|
||||
ToolButtonMore: TToolButton;
|
||||
ToolButtonMax: TToolButton;
|
||||
ToolButtonGoto: TToolButton;
|
||||
procedure actToggleBreakPointExecute(Sender: TObject);
|
||||
procedure actViewBottomExecute(Sender: TObject);
|
||||
procedure actViewGotoExecute(Sender: TObject);
|
||||
procedure actViewMoreExecute(Sender: TObject);
|
||||
@ -113,6 +116,7 @@ type
|
||||
procedure UpdateView;
|
||||
procedure JumpToSource;
|
||||
procedure CopyToClipBoard;
|
||||
procedure ToggleBreakpoint(Item: TListItem);
|
||||
protected
|
||||
procedure DoBeginUpdate; override;
|
||||
procedure DoEndUpdate; override;
|
||||
@ -158,6 +162,7 @@ begin
|
||||
FViewCount := 10;
|
||||
FViewStart := 0;
|
||||
actViewLimit.Caption := popLimit10.Caption;
|
||||
actToggleBreakPoint.ShortCut:= IDECommandList.FindIDECommand(ecToggleBreakPoint).AsShortCut;
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.CallStackChanged(Sender: TObject);
|
||||
@ -192,6 +197,7 @@ var
|
||||
Item: TListItem;
|
||||
Entry: TCallStackEntry;
|
||||
First, Count: Integer;
|
||||
Source: String;
|
||||
begin
|
||||
BeginUpdate;
|
||||
try
|
||||
@ -256,7 +262,10 @@ begin
|
||||
end;
|
||||
|
||||
Item.SubItems[0] := IntToStr(Entry.Index);
|
||||
Item.SubItems[1] := Entry.Source;
|
||||
Source := Entry.Source;
|
||||
if Source = '' then // we dont have a source file => just show an adress
|
||||
Source := ':' + IntToHex(Entry.Adress, 8);
|
||||
Item.SubItems[1] := Source;
|
||||
Item.SubItems[2] := IntToStr(Entry.Line);
|
||||
Item.SubItems[3] := GetFunction(Entry);
|
||||
end;
|
||||
@ -317,7 +326,7 @@ begin
|
||||
if Entry = nil then Exit;
|
||||
|
||||
Filename := Entry.Source;
|
||||
if DebugBoss.GetFullFilename(Filename, true)
|
||||
if (FileName <> '') and DebugBoss.GetFullFilename(Filename, True)
|
||||
then MainIDE.DoJumpToSourcePosition(Filename, 0, Entry.Line, 0, True);
|
||||
end;
|
||||
|
||||
@ -343,6 +352,29 @@ begin
|
||||
ClipBoard.AsText := S;
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.ToggleBreakpoint(Item: TListItem);
|
||||
var
|
||||
idx: Integer;
|
||||
Entry: TCallStackEntry;
|
||||
BreakPoint: TIDEBreakPoint;
|
||||
FileName: String;
|
||||
begin
|
||||
if (Item <> nil) and (BreakPoints <> nil) then
|
||||
begin
|
||||
idx := FViewStart + Item.Index;
|
||||
if idx >= CallStack.Count then Exit;
|
||||
Entry := CallStack.Entries[idx];
|
||||
FileName := Entry.Source;
|
||||
if (FileName = '') or not DebugBoss.GetFullFilename(FileName, False) then
|
||||
Exit;
|
||||
BreakPoint := BreakPoints.Find(FileName, Entry.Line);
|
||||
if BreakPoint <> nil then
|
||||
DebugBoss.DoDeleteBreakPoint(BreakPoint.Source, BreakPoint.Line)
|
||||
else
|
||||
DebugBoss.DoCreateBreakPoint(FileName, Entry.Line, False);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.lvCallStackDBLCLICK(Sender: TObject);
|
||||
begin
|
||||
JumpToSource;
|
||||
@ -393,6 +425,11 @@ begin
|
||||
else SetViewStart(0);
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.actToggleBreakPointExecute(Sender: TObject);
|
||||
begin
|
||||
ToggleBreakpoint(lvCallStack.Selected);
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.actViewGotoExecute(Sender: TObject);
|
||||
begin
|
||||
SetViewStart(StrToIntDef(txtGoto.Text, 0));
|
||||
@ -454,29 +491,13 @@ procedure TCallStackDlg.lvCallStackClick(Sender: TObject);
|
||||
var
|
||||
P: TPoint;
|
||||
Item: TListItem;
|
||||
idx: Integer;
|
||||
Entry: TCallStackEntry;
|
||||
BreakPoint: TIDEBreakPoint;
|
||||
FileName: String;
|
||||
begin
|
||||
// toggle breakpoint
|
||||
P := lvCallStack.ScreenToClient(Mouse.CursorPos);
|
||||
Item := lvCallStack.GetItemAt(P.X, P.Y);
|
||||
// if clicked on the first column of a valid item
|
||||
if (Item <> nil) and (P.X <= lvCallStack.Column[0].Width) and (BreakPoints <> nil) then
|
||||
begin
|
||||
idx := FViewStart + Item.Index;
|
||||
if idx >= CallStack.Count then Exit;
|
||||
Entry := CallStack.Entries[idx];
|
||||
FileName := Entry.Source;
|
||||
if (FileName = '') or not DebugBoss.GetFullFilename(FileName, False) then
|
||||
Exit;
|
||||
BreakPoint := BreakPoints.Find(FileName, Entry.Line);
|
||||
if BreakPoint <> nil then
|
||||
DebugBoss.DoDeleteBreakPoint(BreakPoint.Source, BreakPoint.Line)
|
||||
else
|
||||
DebugBoss.DoCreateBreakPoint(FileName, Entry.Line, False);
|
||||
end;
|
||||
if (Item <> nil) and (P.X <= lvCallStack.Column[0].Width) then
|
||||
ToggleBreakPoint(Item);
|
||||
end;
|
||||
|
||||
procedure TCallStackDlg.actViewLimitExecute(Sender: TObject);
|
||||
|
Loading…
Reference in New Issue
Block a user