diff --git a/components/filebrowser/frmfilebrowser.lfm b/components/filebrowser/frmfilebrowser.lfm
index 78fedb0bd5..0708817b10 100644
--- a/components/filebrowser/frmfilebrowser.lfm
+++ b/components/filebrowser/frmfilebrowser.lfm
@@ -1,12 +1,13 @@
object FileBrowserForm: TFileBrowserForm
- Left = 305
+ Left = 282
Height = 434
- Top = 466
+ Top = 402
Width = 385
ActiveControl = Panel1
Caption = 'File Browser'
ClientHeight = 434
ClientWidth = 385
+ OnActivate = FormActivate
OnClose = FormClose
OnCreate = FormCreate
OnShow = FormShow
@@ -19,10 +20,9 @@ object FileBrowserForm: TFileBrowserForm
Align = alClient
Directory = '/home/graemeg'
FileType = [ftArchive, ftNormal]
- ItemHeight = 0
+ ItemHeight = 23
OnDblClick = FileListBoxDblClick
TabOrder = 0
- TopIndex = -1
end
object TV: TTreeView
Left = 0
@@ -32,6 +32,7 @@ object FileBrowserForm: TFileBrowserForm
Align = alTop
DefaultItemHeight = 19
ReadOnly = True
+ ScrollBars = ssAutoBoth
TabOrder = 1
OnExpanded = TVExpanded
OnSelectionChanged = TVSelectionChanged
@@ -58,7 +59,7 @@ object FileBrowserForm: TFileBrowserForm
end
object btnConfigure: TButton
Left = 8
- Height = 25
+ Height = 28
Top = 7
Width = 90
Caption = 'Configure'
diff --git a/components/filebrowser/frmfilebrowser.lrs b/components/filebrowser/frmfilebrowser.lrs
index dd5d826239..58984e97f2 100644
--- a/components/filebrowser/frmfilebrowser.lrs
+++ b/components/filebrowser/frmfilebrowser.lrs
@@ -1,27 +1,28 @@
{ This is an automatically generated lazarus resource file }
LazarusResources.Add('TFileBrowserForm','FORMDATA',[
- 'TPF0'#16'TFileBrowserForm'#15'FileBrowserForm'#4'Left'#3'1'#1#6'Height'#3#178
- +#1#3'Top'#3#210#1#5'Width'#3#129#1#13'ActiveControl'#7#6'Panel1'#7'Caption'#6
- +#12'File Browser'#12'ClientHeight'#3#178#1#11'ClientWidth'#3#129#1#7'OnClose'
- +#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#6'OnShow'#7#8'FormShow'#10'LCLV'
- +'ersion'#6#6'0.9.27'#0#12'TFileListBox'#11'FileListBox'#4'Left'#2#0#6'Height'
- +#3#186#0#3'Top'#3#248#0#5'Width'#3#129#1#5'Align'#7#8'alClient'#9'Directory'
- +#6#13'/home/graemeg'#8'FileType'#11#9'ftArchive'#8'ftNormal'#0#10'ItemHeight'
- +#2#0#10'OnDblClick'#7#19'FileListBoxDblClick'#8'TabOrder'#2#0#8'TopIndex'#2
- +#255#0#0#9'TTreeView'#2'TV'#4'Left'#2#0#6'Height'#3#201#0#3'Top'#2'*'#5'Widt'
- +'h'#3#129#1#5'Align'#7#5'alTop'#17'DefaultItemHeight'#2#19#8'ReadOnly'#9#8'T'
- +'abOrder'#2#1#10'OnExpanded'#7#10'TVExpanded'#18'OnSelectionChanged'#7#18'TV'
- +'SelectionChanged'#7'Options'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'
- +#21'tvoKeepCollapsedNodes'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLine'
- +'s'#11'tvoShowRoot'#11'tvoToolTips'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6
- +'Height'#2'*'#3'Top'#2#0#5'Width'#3#129#1#5'Align'#7#5'alTop'#10'BevelOuter'
- +#7#6'bvNone'#12'ClientHeight'#2'*'#11'ClientWidth'#3#129#1#8'TabOrder'#2#2#0
- +#9'TCheckBox'#8'cbHidden'#4'Left'#3#200#0#6'Height'#2#22#3'Top'#2#8#5'Width'
- +#3#134#0#7'Caption'#6#17'Show hidden files'#8'OnChange'#7#14'cbHiddenChange'
- +#8'TabOrder'#2#0#0#0#7'TButton'#12'btnConfigure'#4'Left'#2#8#6'Height'#2#25#3
- +'Top'#2#7#5'Width'#2'Z'#7'Caption'#6#9'Configure'#7'OnClick'#7#17'btnConfigu'
- +'reClick'#8'TabOrder'#2#1#0#0#0#9'TSplitter'#9'Splitter1'#6'Cursor'#7#8'crVS'
- +'plit'#4'Left'#2#0#6'Height'#2#5#3'Top'#3#243#0#5'Width'#3#129#1#5'Align'#7#5
- +'alTop'#12'ResizeAnchor'#7#5'akTop'#0#0#0
+ 'TPF0'#16'TFileBrowserForm'#15'FileBrowserForm'#4'Left'#3#26#1#6'Height'#3#178
+ +#1#3'Top'#3#146#1#5'Width'#3#129#1#13'ActiveControl'#7#6'Panel1'#7'Caption'#6
+ +#12'File Browser'#12'ClientHeight'#3#178#1#11'ClientWidth'#3#129#1#10'OnActi'
+ +'vate'#7#12'FormActivate'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCre'
+ +'ate'#6'OnShow'#7#8'FormShow'#10'LCLVersion'#6#6'0.9.27'#0#12'TFileListBox'
+ +#11'FileListBox'#4'Left'#2#0#6'Height'#3#186#0#3'Top'#3#248#0#5'Width'#3#129
+ +#1#5'Align'#7#8'alClient'#9'Directory'#6#13'/home/graemeg'#8'FileType'#11#9
+ +'ftArchive'#8'ftNormal'#0#10'ItemHeight'#2#23#10'OnDblClick'#7#19'FileListBo'
+ +'xDblClick'#8'TabOrder'#2#0#0#0#9'TTreeView'#2'TV'#4'Left'#2#0#6'Height'#3
+ +#201#0#3'Top'#2'*'#5'Width'#3#129#1#5'Align'#7#5'alTop'#17'DefaultItemHeight'
+ +#2#19#8'ReadOnly'#9#10'ScrollBars'#7#10'ssAutoBoth'#8'TabOrder'#2#1#10'OnExp'
+ +'anded'#7#10'TVExpanded'#18'OnSelectionChanged'#7#18'TVSelectionChanged'#7'O'
+ +'ptions'#11#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedNo'
+ +'des'#11'tvoReadOnly'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11
+ +'tvoToolTips'#0#0#0#6'TPanel'#6'Panel1'#4'Left'#2#0#6'Height'#2'*'#3'Top'#2#0
+ +#5'Width'#3#129#1#5'Align'#7#5'alTop'#10'BevelOuter'#7#6'bvNone'#12'ClientHe'
+ +'ight'#2'*'#11'ClientWidth'#3#129#1#8'TabOrder'#2#2#0#9'TCheckBox'#8'cbHidde'
+ +'n'#4'Left'#3#200#0#6'Height'#2#22#3'Top'#2#8#5'Width'#3#134#0#7'Caption'#6
+ +#17'Show hidden files'#8'OnChange'#7#14'cbHiddenChange'#8'TabOrder'#2#0#0#0#7
+ +'TButton'#12'btnConfigure'#4'Left'#2#8#6'Height'#2#28#3'Top'#2#7#5'Width'#2
+ +'Z'#7'Caption'#6#9'Configure'#7'OnClick'#7#17'btnConfigureClick'#8'TabOrder'
+ +#2#1#0#0#0#9'TSplitter'#9'Splitter1'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'H'
+ +'eight'#2#5#3'Top'#3#243#0#5'Width'#3#129#1#5'Align'#7#5'alTop'#12'ResizeAnc'
+ +'hor'#7#5'akTop'#0#0#0
]);
diff --git a/components/filebrowser/frmfilebrowser.pas b/components/filebrowser/frmfilebrowser.pas
index 3861f6f285..f356f670a6 100644
--- a/components/filebrowser/frmfilebrowser.pas
+++ b/components/filebrowser/frmfilebrowser.pas
@@ -39,6 +39,7 @@ type
procedure FormShow(Sender: TObject);
procedure TVExpanded(Sender: TObject; Node: TTreeNode);
procedure TVSelectionChanged(Sender: TObject);
+ procedure FormActivate(Sender: TObject);
private
FOnConfigure: TNotifyEvent;
FOnOpenFile: TOpenFileEvent;
@@ -47,6 +48,7 @@ type
FRootDir: string;
FDir: string;
FShowHidden: Boolean;
+ FOnLoadLayout: TNotifyEvent;
procedure AddDirectories(Node: TTreeNode; Dir: string);
function GetAbsolutePath(Node: TTreeNode): string;
procedure SetDir(const Value: string);
@@ -72,6 +74,7 @@ type
property OnSelectDir: TNotifyEvent read FOnSelectDir write FOnSelectDir;
{ OnLoadLayout }
property OnSaveLayout: TNotifyEvent read FOnSaveLayout write FOnSaveLayout;
+ property OnLoadLayout: TNotifyEvent read FOnLoadLayout write FOnLoadLayout;
end;
var
@@ -140,6 +143,12 @@ begin
OnselectDir(Self);
end;
+procedure TFileBrowserForm.FormActivate(Sender: TObject);
+begin
+ { for some reason this does not work in FormShow }
+ TV.MakeSelectionVisible;
+end;
+
procedure TFileBrowserForm.btnConfigureClick(Sender: TObject);
begin
if Assigned(FOnConfigure) then
@@ -176,6 +185,8 @@ end;
procedure TFileBrowserForm.FormShow(Sender: TObject);
begin
+ if Assigned(FOnLoadLayout) then
+ FOnLoadLayout(Self);
if TV.Selected <> nil then
TV.Selected.Expand(False);
end;
diff --git a/components/filebrowser/idefilebrowser.lpk b/components/filebrowser/idefilebrowser.lpk
index 74375ff41c..9ea67557c5 100644
--- a/components/filebrowser/idefilebrowser.lpk
+++ b/components/filebrowser/idefilebrowser.lpk
@@ -14,7 +14,7 @@
-
+
diff --git a/components/filebrowser/regidefilebrowser.pp b/components/filebrowser/regidefilebrowser.pp
index a97eefeab0..3de8926bd5 100644
--- a/components/filebrowser/regidefilebrowser.pp
+++ b/components/filebrowser/regidefilebrowser.pp
@@ -17,6 +17,7 @@ type
FCustomDir: string;
FWindow: TFileBrowserForm;
FNeedSave: Boolean;
+ procedure DoLoadLayout(Sender: TObject);
procedure DoSelectDir(Sender: TObject);
procedure DoSaveLayout(Sender: TObject);
procedure ReadConfig; virtual;
@@ -96,6 +97,7 @@ begin
FWindow.OnConfigure := @DoConfig;
FWindow.OnSelectDir := @DoSelectDir;
FWindow.OnSaveLayout := @DoSaveLayout;
+ FWindow.OnLoadLayout := @DoLoadLayout;
IDEDialogLayoutList.ApplyLayout(FWindow);
D := FCustomDir;
if (FStartDir = sdProjectDir) and Assigned(LazarusIDE.ActiveProject) then
@@ -112,6 +114,20 @@ begin
LazarusIDE.DoOpenEditorFile(AFileName, 0, Flags);
end;
+procedure TFileBrowserController.DoLoadLayout(Sender: TObject);
+begin
+ with GetIDEConfigStorage(SConfigFile, True) do
+ begin
+ try
+ FWindow.Top := GetValue('Position/Top', FWindow.Top);
+ FWindow.Left := GetValue('Position/Left', FWindow.Left);
+ FWindow.TV.Height := GetValue(KeySplitterPos, FWindow.TV.Height);
+ finally
+ Free;
+ end;
+ end;
+end;
+
procedure TFileBrowserController.DoSelectDir(Sender: TObject);
begin
if FStartDir = sdLastOpened then
@@ -126,7 +142,9 @@ begin
IDEDialogLayoutList.SaveLayout(FWindow);
with GetIDEConfigStorage(SConfigFile, True) do
try
- SetValue(KeySplitterPos, FWindow.Splitter1.Top);
+ SetValue(KeySplitterPos, FWindow.TV.Height);
+ SetValue('Position/Top', FWindow.Top);
+ SetValue('Position/Left', FWindow.Left);
FNeedSave := False;
finally
Free;