From 872183212badc613d3ea7093ae563615edb0cdd7 Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Fri, 5 Sep 2008 11:52:19 +0200 Subject: Make quicksearch mode less 'sticky' --- UMain.pas | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'UMain.pas') diff --git a/UMain.pas b/UMain.pas index f548a6d..f1181d1 100644 --- a/UMain.pas +++ b/UMain.pas @@ -1461,24 +1461,33 @@ begin else ActivateCommandLine(Key); end; } GDK_Down : begin - KeyHandled := True; + KeyHandled := False; if [ssCtrl] = Shift then begin Accept := False; CommandLineCombo.Entry.SetFocus; CommandLineCombo.Entry.SelectAll; + KeyHandled := True; end else begin if QuickFind and (Shift = []) then begin - QuickFindSendKey(LeftPanel, Key); - Accept := False; - end else if Assigned(AListView.Selected) and (AListView.ConvertToSorted(AListView.Selected.Index) = AListView.Items.Count - 1) then Accept := False; + KeyHandled := QuickFindSendKey(LeftPanel, Key); + Accept := not KeyHandled; + end; + if not KeyHandled then begin + KeyHandled := True; + if Assigned(AListView.Selected) and (AListView.ConvertToSorted(AListView.Selected.Index) = AListView.Items.Count - 1) then Accept := False; + end; end; end; GDK_Up : begin - KeyHandled := True; + KeyHandled := False; if QuickFind and (Shift = []) then begin - QuickFindSendKey(LeftPanel, Key); - Accept := False; - end else if Assigned(AListView.Selected) and (AListView.ConvertToSorted(AListView.Selected.Index) = 0) then Accept := False; + KeyHandled := QuickFindSendKey(LeftPanel, Key); + Accept := not KeyHandled; + end; + if not KeyHandled then begin + KeyHandled := True; + if Assigned(AListView.Selected) and (AListView.ConvertToSorted(AListView.Selected.Index) = 0) then Accept := False; + end; end; GDK_Page_Up, GDK_Page_Down: begin KeyHandled := True; @@ -2910,7 +2919,11 @@ begin NewText := Entry.Text; end else if (Key = GDK_Down) or (Key = GDK_Up) then begin - NewText := Entry.Text; + if Length(Entry.Text) = 0 then begin + DeactivateQuickFind(LeftPanel); + Result := False; + Exit; + end else NewText := Entry.Text; end else begin s := UTF8Encode(WideChar(KeyValToUnicode(Key))); if (Length(s) = 0) or (s = #0) then Exit; -- cgit v1.2.3