Skip to content

Commit e1db0a6

Browse files
committed
feat: filter edit box for shortcuts in preferences
Refs #2482
1 parent 27c3895 commit e1db0a6

3 files changed

Lines changed: 34 additions & 6 deletions

File tree

source/extra_controls.pas

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ interface
66
System.Classes, System.SysUtils, Vcl.Forms, Winapi.Windows, Winapi.Messages, System.Types, Vcl.StdCtrls, Vcl.Clipbrd,
77
SizeGrip, apphelpers, Vcl.Graphics, Vcl.Dialogs, gnugettext, Vcl.ImgList, Vcl.VirtualImageList, Vcl.ComCtrls,
88
Winapi.ShLwApi, Vcl.ExtCtrls, VirtualTrees, VirtualTrees.Types, SynRegExpr, Vcl.Controls, Winapi.ShlObj,
9-
SynEditMiscClasses, SynUnicode, Vcl.Themes, Vcl.GraphUtil;
9+
SynEditMiscClasses, SynUnicode, Vcl.Themes, Vcl.GraphUtil, Math;
1010

1111
type
1212
// Form with a sizegrip in the lower right corner, without the need for a statusbar
@@ -382,7 +382,7 @@ procedure TExtForm.FilterNodesByEdit(Edit: TButtonedEdit; Tree: TVirtualStringTr
382382
var
383383
rx: TRegExpr;
384384
Node: PVirtualNode;
385-
i: Integer;
385+
i, ColumnCount: Integer;
386386
match: Boolean;
387387
CellText: String;
388388
begin
@@ -407,8 +407,10 @@ procedure TExtForm.FilterNodesByEdit(Edit: TButtonedEdit; Tree: TVirtualStringTr
407407
if not Tree.HasChildren[Node] then begin
408408
// Don't filter anything if the filter text is empty
409409
match := rx.Expression = '';
410+
// Suport trees with 0 defined columns, like the shortcut tree in preferences
411+
ColumnCount := Max(Tree.Header.Columns.Count, 1);
410412
// Search for given text in node's captions
411-
if not match then for i := 0 to Tree.Header.Columns.Count - 1 do begin
413+
if not match then for i:=0 to ColumnCount - 1 do begin
412414
CellText := Tree.Text[Node, i];
413415
match := rx.Exec(CellText);
414416
if match then

source/preferences.dfm

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1330,10 +1330,10 @@ object frmPreferences: TfrmPreferences
13301330
end
13311331
object TreeShortcutItems: TVirtualStringTree
13321332
Left = 0
1333-
Top = 0
1333+
Top = 32
13341334
Width = 300
1335-
Height = 406
1336-
Align = alLeft
1335+
Height = 374
1336+
Anchors = [akLeft, akTop, akBottom]
13371337
Colors.BorderColor = 15987699
13381338
Colors.DisabledColor = clGray
13391339
Colors.DropMarkColor = 15385233
@@ -1390,6 +1390,19 @@ object frmPreferences: TfrmPreferences
13901390
TabOrder = 2
13911391
OnClick = btnRemoveHotKeyClick
13921392
end
1393+
object editShortcutsFilter: TButtonedEdit
1394+
Left = 0
1395+
Top = 4
1396+
Width = 300
1397+
Height = 22
1398+
Images = MainForm.VirtualImageListMain
1399+
RightButton.ImageIndex = 193
1400+
RightButton.Visible = True
1401+
TabOrder = 3
1402+
TextHint = 'Filter'
1403+
OnChange = editShortcutsFilterChange
1404+
OnRightButtonClick = editShortcutsFilterRightButtonClick
1405+
end
13931406
end
13941407
object tabFiles: TTabSheet
13951408
Caption = 'Files and tabs'

source/preferences.pas

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ TGridColorsPreset = class
3333
TGridColorsPresetList = TObjectList<TGridColorsPreset>;
3434

3535
TfrmPreferences = class(TExtForm)
36+
editShortcutsFilter: TButtonedEdit;
3637
pagecontrolMain: TPageControl;
3738
tabMisc: TTabSheet;
3839
btnCancel: TButton;
@@ -192,6 +193,8 @@ TfrmPreferences = class(TExtForm)
192193
Label5: TLabel;
193194
lblReformatter: TLabel;
194195
comboReformatter: TComboBox;
196+
procedure editShortcutsFilterRightButtonClick(Sender: TObject);
197+
procedure editShortcutsFilterChange(Sender: TObject);
195198
procedure FormShow(Sender: TObject);
196199
procedure Modified(Sender: TObject);
197200
procedure Apply(Sender: TObject);
@@ -836,6 +839,16 @@ procedure TfrmPreferences.FormShow(Sender: TObject);
836839
screen.Cursor := crdefault;
837840
end;
838841

842+
procedure TfrmPreferences.editShortcutsFilterRightButtonClick(Sender: TObject);
843+
begin
844+
editShortcutsFilter.Clear;
845+
end;
846+
847+
procedure TfrmPreferences.editShortcutsFilterChange(Sender: TObject);
848+
begin
849+
FilterNodesByEdit(editShortcutsFilter, TreeShortcutItems);
850+
end;
851+
839852

840853

841854
procedure TfrmPreferences.SQLFontChange(Sender: TObject);

0 commit comments

Comments
 (0)