diff --git a/src/ce_shortcutseditor.lfm b/src/ce_shortcutseditor.lfm index 377fcb0b..1c4468df 100644 --- a/src/ce_shortcutseditor.lfm +++ b/src/ce_shortcutseditor.lfm @@ -20,21 +20,23 @@ object CEShortcutEditor: TCEShortcutEditor TabOrder = 0 object fltItems: TTreeFilterEdit Left = 2 - Height = 20 + Height = 24 Top = 2 Width = 420 + OnFilterItem = fltItemsFilterItem ButtonWidth = 28 NumGlyphs = 1 Align = alTop BorderSpacing.Around = 2 + AutoSize = False MaxLength = 0 TabOrder = 0 FilteredTreeview = tree end object tree: TTreeView Left = 2 - Height = 407 - Top = 26 + Height = 403 + Top = 30 Width = 420 Align = alClient AutoExpand = True diff --git a/src/ce_shortcutseditor.pas b/src/ce_shortcutseditor.pas index 6e5e8ba5..9b0a1e76 100644 --- a/src/ce_shortcutseditor.pas +++ b/src/ce_shortcutseditor.pas @@ -6,9 +6,9 @@ interface uses Classes, SysUtils, FileUtil, TreeFilterEdit, Forms, Controls, Menus, Graphics, - ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType, PropEdits, + ExtCtrls, LCLProc, ComCtrls, StdCtrls, Buttons, LCLType, PropEdits, strutils, ce_sharedres, ce_observer, ce_interfaces, ce_common, ce_writableComponent, - ce_dialogs; + ce_dialogs, EditBtn; type @@ -59,6 +59,7 @@ type tree: TTreeView; procedure btnActivateClick(Sender: TObject); procedure btnClearClick(Sender: TObject); + function fltItemsFilterItem(Item: TObject; out Done: Boolean): Boolean; procedure LabeledEdit1KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState); procedure shortcutCatcherExit(Sender: TObject); procedure shortcutCatcherMouseLeave(Sender: TObject); @@ -283,6 +284,28 @@ begin updateEditCtrls; end; +function TCEShortcutEditor.fltItemsFilterItem(Item: TObject; out Done: Boolean): Boolean; +var + shc: TShortcutItem; +begin + if fltItems.Filter.isBlank then + begin + result := true; + done := true; + end + else + begin + result := false; + done := false; + // see TTreeFilterEdit: they pass TObject(TTreeNode.Data) and not a TTreeNode + if Pointer(item).isNil then + exit; + shc := TShortcutItem(item); + result := AnsiContainsText(shc.combination, fltItems.Filter); + done := true; + end; +end; + procedure TCEShortcutEditor.LabeledEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var i: integer;