From e07b3a72345410656096ad8a999243d7caba482f Mon Sep 17 00:00:00 2001 From: n7800 <14154601-n7800@users.noreply.gitlab.com> Date: Mon, 2 Jun 2025 00:08:25 +0500 Subject: [PATCH] IDE/Options: When calling help in a filter, show help for the open options frame. Issue #41662 --- ide/ideoptionsdlg.lfm | 1 - ide/ideoptionsdlg.pas | 42 ++++++++++++++++++++---------------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/ide/ideoptionsdlg.lfm b/ide/ideoptionsdlg.lfm index 438c5a7151..6fbfeec2d7 100644 --- a/ide/ideoptionsdlg.lfm +++ b/ide/ideoptionsdlg.lfm @@ -112,7 +112,6 @@ inherited IDEOptionsDialog: TIDEOptionsDialog OnCollapsed = CategoryTreeCollapsed OnCustomDrawItem = CategoryTreeCustomDrawItem OnExpanded = CategoryTreeExpanded - OnKeyDown = CategoryTreeKeyDown end end end diff --git a/ide/ideoptionsdlg.pas b/ide/ideoptionsdlg.pas index b90bc3f5f6..5e58f4b3fc 100644 --- a/ide/ideoptionsdlg.pas +++ b/ide/ideoptionsdlg.pas @@ -84,7 +84,6 @@ type procedure CategoryTreeCustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; {%H-}State: TCustomDrawState; var {%H-}DefaultDraw: Boolean); procedure CategoryTreeExpanded(Sender: TObject; Node: TTreeNode); - procedure CategoryTreeKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); function FilterEditFilterItem(ItemData: Pointer; out Done: Boolean): Boolean; procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -228,14 +227,6 @@ begin UpdateBuildModeGUI; end; -procedure TIDEOptionsDialog.HelpButtonClick(Sender: TObject); -begin - if FPrevEditor<>nil then - LazarusHelp.ShowHelpForIDEControl(FPrevEditor) - else - LazarusHelp.ShowHelpForIDEControl(Self); -end; - procedure TIDEOptionsDialog.CategoryTreeChange(Sender: TObject; Node: TTreeNode); var GroupClass: TAbstractIDEOptionsClass; @@ -335,18 +326,6 @@ begin TAbstractIDEOptionsEditor(Node.GetFirstChild.Data).GroupRec^.Collapsed := False; end; -procedure TIDEOptionsDialog.CategoryTreeKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); -var - Command: Word; -begin - Command := EditorOpts.KeyMap.TranslateKey(Key,Shift,nil); - if (Command=ecContextHelp) and (FPrevEditor <> nil) then begin - Key:=VK_UNKNOWN; - LazarusHelp.ShowHelpForIDEControl(FPrevEditor); - end; -end; - function TIDEOptionsDialog.FilterEditFilterItem(ItemData: Pointer; out Done: Boolean): Boolean; var OptEditor: TAbstractIDEOptionsEditor; @@ -365,10 +344,29 @@ begin IDEDialogLayoutList.SaveLayout(self); end; +procedure TIDEOptionsDialog.HelpButtonClick(Sender: TObject); +begin + if assigned(FPrevEditor) then + LazarusHelp.ShowHelpForIDEControl(FPrevEditor) + else + LazarusHelp.ShowHelpForIDEControl(self); +end; + procedure TIDEOptionsDialog.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin + // help + if EditorOpts.KeyMap.TranslateKey(Key, Shift, nil) = ecContextHelp then + begin + // in these controls, show help for open options frame + if FilterEdit.Focused or CategoryTree.Focused then + begin + HelpButtonClick(Sender); + Key := 0; + end; + end + // dialog - if (Key = VK_ESCAPE) and (Shift = []) then + else if (Key = VK_ESCAPE) and (Shift = []) then begin CancelButtonClick(Sender); Key := 0;