diff --git a/ide/lazarusidestrconsts.pas b/ide/lazarusidestrconsts.pas index 86142131fa..0338049fb2 100644 --- a/ide/lazarusidestrconsts.pas +++ b/ide/lazarusidestrconsts.pas @@ -1360,6 +1360,9 @@ resourcestring dlgMaxRecentFiles = 'Files'; dlgMaxRecentProjs = 'Projects'; dlgMaxRecentPacks = 'Packages'; + dlgRecentProjects = 'Recent Projects:'; + dlgRecentPackages = 'Recent Packages:'; + dlgRecentFiles = 'Recent Files:'; dlgMaxRecentHint = 'Value 0 means unlimited.'; dlgLazarusDir = 'Lazarus directory (default for all projects)'; lisLazarusDirHint = 'Lazarus sources. This path is relative to primary config directory (%s).'; diff --git a/ide/mainbase.pas b/ide/mainbase.pas index ede8430887..6efd1b3076 100644 --- a/ide/mainbase.pas +++ b/ide/mainbase.pas @@ -534,12 +534,31 @@ procedure TOpenFileToolButton.RefreshMenu(Sender: TObject); AMenuItem.ImageIndex := LoadProjectIconIntoImages(AFileName, DropdownMenu.Images, FIndex); end; - procedure AddFiles(List: TStringList; MaxCount: integer; const AOnClick: TNotifyEvent); + procedure AddHeader(const ACaption: string); + var + AMenuItem: TOpenFileMenuItem; + begin + AMenuItem := TOpenFileMenuItem.Create(DropdownMenu); + AMenuItem.Caption := ACaption; + AMenuItem.Enabled := false; + DropdownMenu.Items.Add(AMenuItem); + end; + + procedure AddRecentItemsGroup(List: TStringList; MaxCount: integer; const AOnClick: TNotifyEvent; const AHeader: string); var i: integer; begin + if List.Count <= 0 then + exit; + // separator + if DropdownMenu.Items.Count > 0 then + DropdownMenu.Items.AddSeparator; + // header + AddHeader(AHeader); + // value 0 means unlimited if MaxCount <= 0 then MaxCount := List.Count; + // files for i := 0 to Min(MaxCount, List.Count) - 1 do AddFile(List[i], AOnClick); end; @@ -548,11 +567,9 @@ begin with EnvironmentOptions do begin DropdownMenu.Items.Clear; - AddFiles(RecentProjectFiles, MaxRecentProjectFiles, @mnuProjectFile); - DropdownMenu.Items.AddSeparator; - AddFiles(RecentPackageFiles, MaxRecentPackageFiles, @mnuPackageFile); - DropdownMenu.Items.AddSeparator; - AddFiles(RecentOpenFiles, MaxRecentOpenFiles, @mnuOpenFile); + AddRecentItemsGroup(RecentProjectFiles, MaxRecentProjectFiles, @mnuProjectFile, dlgRecentProjects); + AddRecentItemsGroup(RecentPackageFiles, MaxRecentPackageFiles, @mnuPackageFile, dlgRecentPackages); + AddRecentItemsGroup(RecentOpenFiles, MaxRecentOpenFiles, @mnuOpenFile, dlgRecentFiles); end; end;