ADD: Navigation through directory global history menu

(cherry picked from commit f3d000321f)
This commit is contained in:
Alexander Koblov 2024-07-27 14:27:53 +03:00
commit 3a6be9bd44
2 changed files with 39 additions and 5 deletions

View file

@ -822,10 +822,11 @@ type
procedure HotDirSelected(Sender:TObject);
procedure HotDirActualSwitchToDir(Index:longint);
procedure HistorySelected(Sender:TObject);
procedure HistorySomeSelected(Sender:TObject);
procedure ViewHistorySelected(Sender:TObject);
procedure ViewHistoryPrevSelected(Sender:TObject);
procedure ViewHistoryNextSelected(Sender:TObject);
procedure CreatePopUpDirHistory;
procedure CreatePopUpDirHistory(UseTreeViewMenu: Boolean; FromPathIndex: Integer);
procedure ShowFileViewHistory(const Params: array of string);
procedure ShowFileViewHistory(const Params: array of string; FromFileSourceIndex, FromPathIndex, ToFileSourceIndex, ToPathIndex: Integer);
procedure miHotAddOrConfigClick(Sender: TObject);
@ -3132,14 +3133,26 @@ begin
with Sender as TComponent do Commands.cm_WorkWithDirectoryHotlist(['action='+HOTLISTMAGICWORDS[tag], 'source='+QuoteStr(ActiveFrame.CurrentLocation), 'target='+QuoteStr(NotActiveFrame.CurrentLocation), 'index=0']);
end;
procedure TfrmMain.CreatePopUpDirHistory;
procedure TfrmMain.CreatePopUpDirHistory(UseTreeViewMenu: Boolean;
FromPathIndex: Integer);
var
I: Integer;
I, Finish: Integer;
MenuItem: TMenuItem;
begin
pmDirHistory.Items.Clear;
for I:= 0 to Min(gDirHistoryCount, glsDirHistory.Count - 1) do
if (not UseTreeViewMenu) and (FromPathIndex > 0) then
begin
MenuItem := TMenuItem.Create(pmDirHistory);
MenuItem.Caption := '...';
MenuItem.OnClick := @HistorySomeSelected;
MenuItem.Tag := Max(0, FromPathIndex - gDirHistoryCount - 1);
pmDirHistory.Items.Add(MenuItem);
end;
Finish:= Min(FromPathIndex + gDirHistoryCount, glsDirHistory.Count - 1);
for I:= FromPathIndex to Finish do
begin
MenuItem:= TMenuItem.Create(pmDirHistory);
MenuItem.Caption:= glsDirHistory[I].Replace('&','&&');
@ -3147,6 +3160,15 @@ begin
MenuItem.OnClick:= @HistorySelected;
pmDirHistory.Items.Add(MenuItem);
end;
if (not UseTreeViewMenu) and (Finish < glsDirHistory.Count - 1) then
begin
MenuItem := TMenuItem.Create(pmDirHistory);
MenuItem.Caption := '...';
MenuItem.OnClick := @HistorySomeSelected;
MenuItem.Tag := Finish + 1;
pmDirHistory.Items.Add(MenuItem);
end;
end;
procedure TfrmMain.ShowFileViewHistory(const Params: array of string);
@ -3485,6 +3507,18 @@ begin
ChooseFileSource(ActiveFrame, aPath);
end;
procedure TfrmMain.HistorySomeSelected(Sender: TObject);
var
P: TPoint;
begin
if Sender is TMenuItem then
begin
P:= ActiveFrame.ClientToScreen(Classes.Point(0, 0));
CreatePopUpDirHistory(False, TMenuItem(Sender).Tag);
pmDirHistory.Popup(P.X, P.Y);
end;
end;
procedure TfrmMain.ViewHistorySelected(Sender: TObject);
var
FileSourceIndex, PathIndex: Integer;

View file

@ -3894,7 +3894,7 @@ begin
// 1. Let's parse our parameters.
DoParseParametersForPossibleTreeViewMenu(Params, gUseTreeViewMenuWithDirHistory, gUseTreeViewMenuWithDirHistory, bUseTreeViewMenu, bUsePanel, p);
frmMain.CreatePopUpDirHistory;
frmMain.CreatePopUpDirHistory(bUseTreeViewMenu, 0);
Application.ProcessMessages; //TODO: In Windows, Not sure why, but on all systems tried, this eliminate a "beep" when the popup is shown.
if bUseTreeViewMenu then