anchordocking: started clean up after restore

git-svn-id: trunk@46463 -
This commit is contained in:
mattias 2014-10-07 15:49:54 +00:00
parent 869ab94929
commit 4c6fbfdc2d

View File

@ -460,7 +460,7 @@ type
TAnchorDockMaster = class(TComponent)
private
FAllowDragging: boolean;
FControls: TFPList;
FControls: TFPList; // list of TControl, custom host sites
FDockOutsideMargin: integer;
FDockParentMargin: integer;
FDragTreshold: integer;
@ -501,6 +501,7 @@ type
function GetControls(Index: integer): TControl;
function GetLocalizedHeaderHint: string;
function CloseUnneededControls(Tree: TAnchorDockLayoutTree): boolean;
function FreeUnneededHelperControls(Tree: TAnchorDockLayoutTree): boolean;
function CreateNeededControls(Tree: TAnchorDockLayoutTree;
DisableAutoSizing: boolean; ControlNames: TStrings): boolean;
procedure MapTreeToControls(Tree: TAnchorDockLayoutTree);
@ -1378,7 +1379,7 @@ begin
end;
function TAnchorDockMaster.CloseUnneededControls(Tree: TAnchorDockLayoutTree
): Boolean;
): boolean;
var
i: Integer;
AControl: TControl;
@ -1417,6 +1418,15 @@ begin
Result:=true;
end;
function TAnchorDockMaster.FreeUnneededHelperControls(
Tree: TAnchorDockLayoutTree): boolean;
begin
Result:=false;
if Tree=nil then exit;
// ToDo: traverse all sites and remove empty pages and unneeded splitters
Result:=true;
end;
function TAnchorDockMaster.CreateNeededControls(Tree: TAnchorDockLayoutTree;
DisableAutoSizing: boolean; ControlNames: TStrings): boolean;
@ -2743,11 +2753,11 @@ begin
DebugWriteChildAnchors(Tree.Root);
{$ENDIF}
// close all unneeded forms/controls (not helper controls like splitters)
if not CloseUnneededControls(Tree) then exit;
BeginUpdate;
try
// close all unneeded forms/controls (not helper controls like splitters)
if not CloseUnneededControls(Tree) then exit;
// create all needed forms/controls (not helper controls like splitters)
if not CreateNeededControls(Tree,true,ControlNames) then exit;
@ -2766,6 +2776,9 @@ begin
fTreeNameToDocker.WriteDebugReport('TAnchorDockMaster.LoadLayoutFromConfig Map');
{$ENDIF}
// free unneeded helper controls (e.g. splitters and pages)
if not FreeUnneededHelperControls(Tree) then exit;
// create sites
RestoreLayout(Tree,Scale);
finally