From 3efecb9efa1f5cf4a08fa3236d1dcbeb0193cc63 Mon Sep 17 00:00:00 2001 From: ondrej Date: Thu, 10 May 2018 23:41:58 +0000 Subject: [PATCH] IDE: search results dialog: fix focus behavior - focus (new) result treeview unless the filter edit was explicitely focused. git-svn-id: trunk@57893 - --- ide/main.pp | 4 ---- ide/searchresultview.lfm | 3 ++- ide/searchresultview.pp | 33 ++++++++++++++++++++++++++++++++- 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/ide/main.pp b/ide/main.pp index 7b893919b5..8aeb1d92fe 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -8839,11 +8839,7 @@ begin end else if State=iwgfDisabled then SearchResultsView.DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TMainIDE.DoShowSearchResultsView'){$ENDIF}; if State>=iwgfShow then - begin IDEWindowCreators.ShowForm(SearchresultsView,State=iwgfShowOnTop); - if (State=iwgfShowOnTop) and SearchresultsView.SearchInListEdit.CanFocus then - SearchresultsView.SearchInListEdit.SetFocus; - end; end; function TMainIDE.GetTestBuildDirectory: string; diff --git a/ide/searchresultview.lfm b/ide/searchresultview.lfm index a922457b2a..703418c0c7 100644 --- a/ide/searchresultview.lfm +++ b/ide/searchresultview.lfm @@ -23,6 +23,7 @@ object SearchResultsView: TSearchResultsView MultiLine = True TabOrder = 1 OnChange = ResultsNoteBookPageChanged + OnChanging = ResultsNoteBookChanging OnCloseTabClicked = ResultsNoteBookClosetabclicked OnMouseDown = ResultsNoteBookMouseDown Options = [nboShowCloseButtons, nboMultiLine] @@ -68,9 +69,9 @@ object SearchResultsView: TSearchResultsView Top = 0 Width = 738 ButtonWidth = 23 - NumGlyphs = 1 Anchors = [akTop, akLeft, akRight] BorderSpacing.Left = 6 + NumGlyphs = 1 MaxLength = 0 TabOrder = 0 OnChange = SearchInListChange diff --git a/ide/searchresultview.pp b/ide/searchresultview.pp index 39b30e9b7d..f14e485e86 100644 --- a/ide/searchresultview.pp +++ b/ide/searchresultview.pp @@ -162,6 +162,7 @@ type procedure mniCopySelectedClick(Sender: TObject); procedure mniExpandAllClick(Sender: TObject); procedure mniCollapseAllClick(Sender: TObject); + procedure ResultsNoteBookChanging(Sender: TObject; var AllowChange: Boolean); procedure ResultsNoteBookMouseDown(Sender: TObject; Button: TMouseButton; {%H-}Shift: TShiftState; X, Y: Integer); procedure TreeViewKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); @@ -182,6 +183,8 @@ type Shift: TShiftState; X, Y: Integer); private FMaxItems: integer; + FFocusTreeViewInOnChange: Boolean; + FFocusTreeViewInEndUpdate: Boolean; FWorkedSearchText: string; FOnSelectionChanged: TNotifyEvent; FMouseOverIndex: integer; @@ -192,6 +195,8 @@ type function GetItems(Index: integer): TStrings; procedure SetMaxItems(const AValue: integer); procedure UpdateToolbar; + protected + procedure Loaded; override; public function AddSearch(const ResultsName: string; const SearchText: string; @@ -485,7 +490,7 @@ begin end; end; -procedure TSearchResultsView.ResultsNoteBookPageChanged (Sender: TObject ); +procedure TSearchResultsView.ResultsNoteBookPageChanged(Sender: TObject); var CurrentTV: TLazSearchResultTV; begin @@ -493,6 +498,8 @@ begin if Assigned(CurrentTV) and not (csDestroying in CurrentTV.ComponentState) then begin SearchInListEdit.FilteredTreeview := CurrentTV; SearchInListEdit.Filter := CurrentTV.SearchInListPhrases; + if FFocusTreeViewInOnChange then + ActiveControl := CurrentTV; end; UpdateToolbar; end; @@ -621,6 +628,11 @@ begin end; end; UpdateToolbar; + if FFocusTreeViewInEndUpdate and Assigned(CurrentTV) then + ActiveControl := CurrentTV + else + if SearchInListEdit.CanFocus then + ActiveControl := SearchInListEdit; end; procedure TSearchResultsView.Parse_Search_Phrases(var slPhrases: TStrings); @@ -648,6 +660,15 @@ begin end;//End for-loop i end; +procedure TSearchResultsView.ResultsNoteBookChanging(Sender: TObject; + var AllowChange: Boolean); +var + CurrentTV: TLazSearchResultTV; +begin + CurrentTV := GetTreeView(ResultsNoteBook.PageIndex); + FFocusTreeViewInOnChange := Assigned(CurrentTV) and CurrentTV.Focused; +end; + procedure TSearchResultsView.ClosePage(PageIndex: integer); var CurrentTV: TLazSearchResultTV; @@ -764,6 +785,8 @@ var begin Result:= nil; if Assigned(ResultsNoteBook) then + begin + FFocusTreeViewInEndUpdate := not (Assigned(ActiveControl) and SearchInListEdit.IsParentOf(ActiveControl)); with ResultsNoteBook do begin FWorkedSearchText:=BeautifyPageName(ResultsName); @@ -808,6 +831,7 @@ begin SearchInListEdit.Filter:=''; SearchInListEdit.FilteredTreeview := NewTreeView; end;//with + end; end;//AddResult procedure TSearchResultsView.LazTVShowHint(Sender: TObject; HintInfo: PHintInfo); @@ -838,6 +862,13 @@ begin end;//if end;//LazTVShowHint +procedure TSearchResultsView.Loaded; +begin + inherited Loaded; + + ActiveControl := ResultsNoteBook; +end; + procedure TSearchResultsView.TreeViewAdvancedCustomDrawItem( Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages, DefaultDraw: Boolean);