Merge branch 'IDE/Editor/StatusBar/CopyFileName' into 'main'

IDE/SourceEditor: Add a file name copy command to the status bar context menu

See merge request freepascal.org/lazarus/lazarus!520
This commit is contained in:
Maxim Ganetsky 2025-07-03 23:33:10 +03:00
commit 0852c1a313
2 changed files with 13 additions and 0 deletions

View File

@ -49,6 +49,10 @@ object SourceNotebook: TSourceNotebook
Caption = 'Goto line ...' Caption = 'Goto line ...'
OnClick = GoToLineMenuItemClick OnClick = GoToLineMenuItemClick
end end
object CopyFullPathMenuItem: TMenuItem
Caption = 'Copy full path'
OnClick = CopyFullPathMenuItemClick
end
object OpenFolderMenuItem: TMenuItem object OpenFolderMenuItem: TMenuItem
Caption = 'Open folder ...' Caption = 'Open folder ...'
OnClick = OpenFolderMenuItemClick OnClick = OpenFolderMenuItemClick

View File

@ -684,6 +684,7 @@ type
TSourceNotebook = class(TSourceEditorWindowInterface) TSourceNotebook = class(TSourceEditorWindowInterface)
GoToLineMenuItem: TMenuItem; GoToLineMenuItem: TMenuItem;
CopyFullPathMenuItem: TMenuItem;
OpenFolderMenuItem: TMenuItem; OpenFolderMenuItem: TMenuItem;
StatusPopUpMenu: TPopupMenu; StatusPopUpMenu: TPopupMenu;
StatusBar: TStatusBar; StatusBar: TStatusBar;
@ -691,6 +692,7 @@ type
{%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer); {%H-}Shift: TShiftState; {%H-}X, {%H-}Y: Integer);
procedure FormResize(Sender: TObject); procedure FormResize(Sender: TObject);
procedure GoToLineMenuItemClick(Sender: TObject); procedure GoToLineMenuItemClick(Sender: TObject);
procedure CopyFullPathMenuItemClick(Sender: TObject);
procedure OpenFolderMenuItemClick(Sender: TObject); procedure OpenFolderMenuItemClick(Sender: TObject);
procedure StatusBarClick(Sender: TObject); procedure StatusBarClick(Sender: TObject);
procedure StatusBarDblClick(Sender: TObject); procedure StatusBarDblClick(Sender: TObject);
@ -7692,6 +7694,7 @@ begin
end; end;
GoToLineMenuItem.Caption := lisMenuGotoLine; GoToLineMenuItem.Caption := lisMenuGotoLine;
CopyFullPathMenuItem.Caption := uemCopyFilename;
OpenFolderMenuItem.Caption := lisMenuOpenFolder; OpenFolderMenuItem.Caption := lisMenuOpenFolder;
{$IFDEF VerboseMenuIntf} {$IFDEF VerboseMenuIntf}
SrcPopupMenu.Items.WriteDebugReport('TSourceNotebook.BuildPopupMenu '); SrcPopupMenu.Items.WriteDebugReport('TSourceNotebook.BuildPopupMenu ');
@ -8885,6 +8888,7 @@ var
begin begin
i := StatusBar.GetPanelIndexAt(MousePos.X, MousePos.Y); i := StatusBar.GetPanelIndexAt(MousePos.X, MousePos.Y);
GoToLineMenuItem.Visible := i=CStatusPanelXY; GoToLineMenuItem.Visible := i=CStatusPanelXY;
CopyFullPathMenuItem.Visible := i=CStatusPanelFile;
OpenFolderMenuItem.Visible := i=CStatusPanelFile; OpenFolderMenuItem.Visible := i=CStatusPanelFile;
if i in [CStatusPanelXY, CStatusPanelFile] then if i in [CStatusPanelXY, CStatusPanelFile] then
StatusPopUpMenu.PopUp StatusPopUpMenu.PopUp
@ -9120,6 +9124,11 @@ begin
Manager.GotoLineClicked(nil); Manager.GotoLineClicked(nil);
end; end;
procedure TSourceNotebook.CopyFullPathMenuItemClick(Sender: TObject);
begin
Clipboard.AsText := Statusbar.Panels[CStatusPanelFile].Text;
end;
procedure TSourceNotebook.OpenFolderMenuItemClick(Sender: TObject); procedure TSourceNotebook.OpenFolderMenuItemClick(Sender: TObject);
begin begin
SelectInFolder(Statusbar.Panels[CStatusPanelFile].Text); SelectInFolder(Statusbar.Panels[CStatusPanelFile].Text);