From 5cb5446db25be67d43dd142ea037365d59e5223d Mon Sep 17 00:00:00 2001 From: juha Date: Fri, 3 Mar 2017 15:57:48 +0000 Subject: [PATCH] IDE: Filter the NewDialog using both 2 columns. Improve OK button enabled state update. Issue #31471. git-svn-id: trunk@54336 - --- ide/newdialog.lfm | 3 ++- ide/newdialog.pas | 29 ++++++++++++++++++++++------- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/ide/newdialog.lfm b/ide/newdialog.lfm index 482aa9cd09..c2221dc74c 100644 --- a/ide/newdialog.lfm +++ b/ide/newdialog.lfm @@ -83,6 +83,7 @@ object NewOtherDialog: TNewOtherDialog SortType = stText TabOrder = 1 ViewStyle = vsReport + OnSelectItem = InheritableComponentsListViewSelectItem end object CompFilterEdit: TListViewFilterEdit AnchorSideTop.Control = DescriptionLabel @@ -96,8 +97,8 @@ object NewOtherDialog: TNewOtherDialog Anchors = [akTop, akLeft, akRight] MaxLength = 0 TabOrder = 0 - Text = 'listviewfilteredit1' FilteredListview = InheritableComponentsListView + ByAllFields = True end end object Splitter1: TSplitter diff --git a/ide/newdialog.pas b/ide/newdialog.pas index 90ea855670..c1b0cfcee8 100644 --- a/ide/newdialog.pas +++ b/ide/newdialog.pas @@ -135,6 +135,8 @@ type Panel1: TPanel; Splitter1: TSplitter; procedure HelpButtonClick(Sender: TObject); + procedure InheritableComponentsListViewSelectItem(Sender: TObject; + Item: TListItem; Selected: Boolean); procedure ItemsTreeViewSelectionChanged(Sender: TObject); procedure OKButtonClick(Sender: TObject); private @@ -168,7 +170,7 @@ var begin NewItem := nil; NewOtherDialog := TNewOtherDialog.Create(nil, AOnlyModules); - Result := NewOtherDialog.ShowModal; + Result := NewOtherDialog.ShowModal; if Result = mrOk then NewItem := NewOtherDialog.NewItem; IDEDialogLayoutList.SaveLayout(NewOtherDialog); @@ -325,12 +327,26 @@ begin end; procedure TNewOtherDialog.ItemsTreeViewSelectionChanged(Sender: TObject); +var + Node: TTreeNode; begin - ButtonPanel.OKButton.Enabled := (ItemsTreeView.Selected <> nil) and - (TObject(ItemsTreeView.Selected.Data) is TNewIDEItemTemplate); + Node := ItemsTreeView.Selected; + // For inherited comps OKButton is enabled also later when a ListView item is selected. + if Assigned(Node) and (TObject(Node.Data) is TNewItemProjectFile) and + (TNewItemProjectFile(Node.Data).Descriptor is TFileDescInheritedComponent) + then + ButtonPanel.OKButton.Enabled := Assigned(InheritableComponentsListView.Selected) + else + ButtonPanel.OKButton.Enabled := Assigned(Node) and (TObject(Node.Data) is TNewIDEItemTemplate); UpdateDescription; end; +procedure TNewOtherDialog.InheritableComponentsListViewSelectItem( + Sender: TObject; Item: TListItem; Selected: Boolean); +begin + ButtonPanel.OKButton.Enabled := Assigned((Sender as TListView).Selected); +end; + procedure TNewOtherDialog.HelpButtonClick(Sender: TObject); begin LazarusHelp.ShowHelpForIDEControl(Self); @@ -357,6 +373,7 @@ var aNewItemTemplate: TNewIDEItemTemplate; begin ANode := ItemsTreeView.Selected; + CompFilterEdit.Visible := false; InheritableComponentsListView.Visible := false; if (ANode <> nil) and (ANode.Data <> nil) then begin @@ -370,10 +387,8 @@ begin begin if TNewItemProjectFile(aNewItemTemplate).Descriptor is TFileDescInheritedComponent then begin + CompFilterEdit.Visible := true; InheritableComponentsListView.Visible := true; - //InheritableComponentsListView.Height:=InheritableComponentsListView.Parent.ClientHeight-50; - //if InheritableComponentsListView.Items.Count>0 then - // InheritableComponentsListView.Selected := InheritableComponentsListView.Items[0]; end; end; end; @@ -406,7 +421,7 @@ begin SetupComponents; FillItemsTree(AOnlyModules); FillProjectInheritableItemsList; - CompFilterEdit.Clear; + CompFilterEdit.Visible := false; InheritableComponentsListView.Visible := false; IDEDialogLayoutList.ApplyLayout(Self, 570, 400);