LCL: anchordocking: updating TLazDockForm.Caption when switching page in nested TLazDockPages

git-svn-id: trunk@14088 -
This commit is contained in:
mattias 2008-02-11 14:27:31 +00:00
parent fc14dbf587
commit 84a2ec0155

View File

@ -166,6 +166,7 @@ type
procedure SetActiveNotebookPageComponent(const AValue: TLazDockPage); procedure SetActiveNotebookPageComponent(const AValue: TLazDockPage);
protected protected
function GetFloatingDockSiteClass: TWinControlClass; override; function GetFloatingDockSiteClass: TWinControlClass; override;
procedure Change; override;
public public
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
property Page[Index: Integer]: TLazDockPage read GetNoteBookPage; property Page[Index: Integer]: TLazDockPage read GetNoteBookPage;
@ -796,7 +797,7 @@ end;
function TLazDockPages.GetActiveNotebookPageComponent: TLazDockPage; function TLazDockPages.GetActiveNotebookPageComponent: TLazDockPage;
begin begin
Result:=TLazDockPage(ActivePageComponent); Result:=TLazDockPage(inherited ActivePageComponent);
end; end;
function TLazDockPages.GetNoteBookPage(Index: Integer): TLazDockPage; function TLazDockPages.GetNoteBookPage(Index: Integer): TLazDockPage;
@ -815,6 +816,12 @@ begin
Result:=TLazDockForm; Result:=TLazDockForm;
end; end;
procedure TLazDockPages.Change;
begin
inherited Change;
TLazDockForm.UpdateMainControlInParents(Self);
end;
constructor TLazDockPages.Create(TheOwner: TComponent); constructor TLazDockPages.Create(TheOwner: TComponent);
begin begin
PageClass:=TLazDockPage; PageClass:=TLazDockPage;
@ -2737,7 +2744,7 @@ procedure TLazDockForm.UpdateMainControl;
var var
NewMainControl: TControl; NewMainControl: TControl;
begin begin
if FMainControl=nil then begin if (FMainControl=nil) or (not FMainControl.IsVisible) then begin
NewMainControl:=FindMainControlCandidate; NewMainControl:=FindMainControlCandidate;
if NewMainControl<>nil then if NewMainControl<>nil then
MainControl:=NewMainControl; MainControl:=NewMainControl;
@ -2858,11 +2865,17 @@ end;
class procedure TLazDockForm.UpdateMainControlInParents(StartControl: TControl class procedure TLazDockForm.UpdateMainControlInParents(StartControl: TControl
); );
var
Form: TLazDockForm;
begin begin
while StartControl<>nil do begin while StartControl<>nil do begin
if (StartControl is TLazDockForm) if (StartControl is TLazDockForm) then
and (TLazDockForm(StartControl).MainControl=nil) then begin
TLazDockForm(StartControl).UpdateMainControl; Form:=TLazDockForm(StartControl);
if (Form.MainControl=nil)
or (not Form.MainControl.IsVisible) then
Form.UpdateMainControl;
end;
StartControl:=StartControl.Parent; StartControl:=StartControl.Parent;
end; end;
end; end;
@ -2879,7 +2892,8 @@ var
begin begin
for i:=0 to ParentControl.ControlCount-1 do begin for i:=0 to ParentControl.ControlCount-1 do begin
AControl:=ParentControl.Controls[i]; AControl:=ParentControl.Controls[i];
DebugLn(['FindCandidate ParentControl=',DbgSName(ParentControl),' AControl=',DbgSName(AControl)]); //DebugLn(['FindCandidate ParentControl=',DbgSName(ParentControl),' AControl=',DbgSName(AControl)]);
if (not AControl.IsControlVisible) then continue;
if ((AControl.Name<>'') or (AControl.Caption<>'')) if ((AControl.Name<>'') or (AControl.Caption<>''))
and (not (AControl is TLazDockForm)) and (not (AControl is TLazDockForm))
and (not (AControl is TLazDockSplitter)) and (not (AControl is TLazDockSplitter))