mirror of
https://github.com/doublecmd/doublecmd.git
synced 2026-06-21 09:58:13 +00:00
FIX: Bug [0001982] File Search with Brief View Navigation style Causes Issues with Selecting Files
This commit is contained in:
parent
e2450b0438
commit
4555b89e88
3 changed files with 37 additions and 6 deletions
|
|
@ -517,6 +517,9 @@ procedure TBriefFileView.CreateDefault(AOwner: TWinControl);
|
|||
begin
|
||||
inherited CreateDefault(AOwner);
|
||||
tmMouseScroll.Interval := 350;
|
||||
|
||||
// Changing height of a FileView with horizontal scrolling when hiding quick search causes file jumps under mouse
|
||||
quickSearch.LimitedAutoHide := True;
|
||||
end;
|
||||
|
||||
function TBriefFileView.GetFileViewGridClass: TFileViewGridClass;
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ const
|
|||
|
||||
procedure TOrderedFileView.AfterChangePath;
|
||||
begin
|
||||
if Filtered then
|
||||
if Filtered or quickSearch.Visible then
|
||||
begin
|
||||
FFileFilter:= EmptyStr;
|
||||
quickSearch.Finalize;
|
||||
|
|
@ -159,7 +159,6 @@ begin
|
|||
lblFilter.Caption := Self.lblFilter.Caption;
|
||||
lblFilter.Visible := Self.lblFilter.Visible;
|
||||
Self.quickSearch.CloneTo(quickSearch);
|
||||
quickSearch.Visible := Self.quickSearch.Visible;
|
||||
FFocusQuickSearch := Self.quickSearch.edtSearch.Focused;
|
||||
end;
|
||||
end;
|
||||
|
|
@ -286,6 +285,11 @@ begin
|
|||
case Key of
|
||||
VK_ESCAPE:
|
||||
begin
|
||||
if quickSearch.Visible and not Filtered then
|
||||
begin
|
||||
quickSearch.Finalize;
|
||||
Key := 0;
|
||||
end;
|
||||
if Filtered and (GetCurrentWorkType <> fvwtNone) then
|
||||
begin
|
||||
pmOperationsCancel.Items.Clear;
|
||||
|
|
|
|||
|
|
@ -65,6 +65,7 @@ type
|
|||
Finalizing: Boolean;
|
||||
FUpdateCount: Integer;
|
||||
FNeedsChangeSearch: Boolean;
|
||||
FIntendedLeave: Boolean;
|
||||
procedure BeginUpdate;
|
||||
procedure CheckFilesOrDirectoriesDown;
|
||||
procedure EndUpdate;
|
||||
|
|
@ -80,6 +81,7 @@ type
|
|||
procedure CancelFilter;
|
||||
procedure ProcessParams(const SearchMode: TQuickSearchMode; const Params: array of String);
|
||||
public
|
||||
LimitedAutoHide: Boolean;
|
||||
OnChangeSearch: TOnChangeSearch;
|
||||
OnChangeFilter: TOnChangeFilter;
|
||||
OnExecute: TOnExecute;
|
||||
|
|
@ -88,6 +90,7 @@ type
|
|||
destructor Destroy; override;
|
||||
procedure CloneTo(AQuickSearch: TfrmQuickSearch);
|
||||
procedure Execute(SearchMode: TQuickSearchMode; const Params: array of String; Char: TUTF8Char = #0);
|
||||
procedure Reset;
|
||||
procedure Finalize;
|
||||
function CheckSearchOrFilter(var Key: Word): Boolean; overload;
|
||||
function CheckSearchOrFilter(var UTF8Key: TUTF8Char): Boolean; overload;
|
||||
|
|
@ -217,6 +220,11 @@ begin
|
|||
AQuickSearch.tglFilter.OnChange := nil;
|
||||
AQuickSearch.tglFilter.Checked := Self.tglFilter.Checked;
|
||||
AQuickSearch.tglFilter.OnChange := TempEvent;
|
||||
AQuickSearch.Visible := Self.Visible;
|
||||
|
||||
// Do not clone LimitedAutoHide but honor it instead, because it depends on the parent fileview
|
||||
if Self.Visible and not Self.edtSearch.Focused and Self.LimitedAutoHide and not AQuickSearch.LimitedAutoHide then
|
||||
AQuickSearch.FrameExit(nil); // do autohide if needed
|
||||
end;
|
||||
|
||||
procedure TfrmQuickSearch.DoOnChangeSearch;
|
||||
|
|
@ -257,16 +265,21 @@ begin
|
|||
ProcessParams(SearchMode, Params);
|
||||
end;
|
||||
|
||||
procedure TfrmQuickSearch.Finalize;
|
||||
procedure TfrmQuickSearch.Reset;
|
||||
begin
|
||||
PopFilter;
|
||||
Self.Visible := False;
|
||||
|
||||
Options.LastSearchMode := qsNone;
|
||||
Options.Direction := qsdNone;
|
||||
Options.CancelSearchMode:=qscmNode;
|
||||
end;
|
||||
|
||||
procedure TfrmQuickSearch.Finalize;
|
||||
begin
|
||||
Reset;
|
||||
Hide;
|
||||
end;
|
||||
|
||||
{ TfrmQuickSearch.ProcessParams }
|
||||
procedure TfrmQuickSearch.ProcessParams(const SearchMode: TQuickSearchMode; const Params: array of String);
|
||||
var
|
||||
|
|
@ -659,6 +672,7 @@ begin
|
|||
begin
|
||||
Key := 0;
|
||||
|
||||
FIntendedLeave := True;
|
||||
DoHide;
|
||||
end;
|
||||
|
||||
|
|
@ -688,6 +702,8 @@ begin
|
|||
end;
|
||||
|
||||
procedure TfrmQuickSearch.FrameExit(Sender: TObject);
|
||||
var
|
||||
DontHide: Boolean;
|
||||
begin
|
||||
{$IF DEFINED(LCLQT) or DEFINED(LCLQT5)}
|
||||
// Workaround: QuickSearch frame lose focus on SpeedButton click
|
||||
|
|
@ -701,10 +717,18 @@ begin
|
|||
|
||||
Self.Active := False;
|
||||
|
||||
if (Mode = qsFilter) and (edtSearch.Text <> EmptyStr) then
|
||||
Self.Visible := not gQuickFilterAutoHide
|
||||
if FIntendedLeave then
|
||||
begin
|
||||
FIntendedLeave := False;
|
||||
DontHide := False;
|
||||
end
|
||||
else
|
||||
Finalize;
|
||||
DontHide := LimitedAutoHide;
|
||||
|
||||
if (Mode = qsFilter) and (edtSearch.Text <> EmptyStr) then
|
||||
Self.Visible := DontHide or not gQuickFilterAutoHide
|
||||
else
|
||||
if DontHide then Reset else Finalize;
|
||||
|
||||
Finalizing := False;
|
||||
end;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue