mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 05:39:14 +02:00
anchordocking: clean up anchors after close
git-svn-id: trunk@26090 -
This commit is contained in:
parent
04b038eff5
commit
b971bd845b
@ -235,6 +235,7 @@ type
|
|||||||
procedure AddCleanControl(AControl: TControl; TheAlign: TAlign = alNone);
|
procedure AddCleanControl(AControl: TControl; TheAlign: TAlign = alNone);
|
||||||
procedure RemoveControlFromLayout(AControl: TControl);
|
procedure RemoveControlFromLayout(AControl: TControl);
|
||||||
procedure RemoveSpiralSplitter(AControl: TControl);
|
procedure RemoveSpiralSplitter(AControl: TControl);
|
||||||
|
procedure ClearChildControlAnchorSides(AControl: TControl);
|
||||||
procedure Simplify;
|
procedure Simplify;
|
||||||
procedure SimplifyPages;
|
procedure SimplifyPages;
|
||||||
procedure SimplifyOneControl;
|
procedure SimplifyOneControl;
|
||||||
@ -2585,6 +2586,7 @@ procedure TAnchorDockHostSite.RemoveControlFromLayout(AControl: TControl);
|
|||||||
debugln(['RemoveControlBoundSplitter ',DbgSName(Splitter)]);
|
debugln(['RemoveControlBoundSplitter ',DbgSName(Splitter)]);
|
||||||
Splitter.Free;
|
Splitter.Free;
|
||||||
|
|
||||||
|
ClearChildControlAnchorSides(AControl);
|
||||||
//DebugWriteChildAnchors(GetParentForm(Self),true,true);
|
//DebugWriteChildAnchors(GetParentForm(Self),true,true);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -2674,6 +2676,7 @@ begin
|
|||||||
RaiseGDBException('TAnchorDockHostSite.RemoveControlFromLayout inconsistency');
|
RaiseGDBException('TAnchorDockHostSite.RemoveControlFromLayout inconsistency');
|
||||||
|
|
||||||
if IsOneSiteLayout(OnlySiteLeft) then begin
|
if IsOneSiteLayout(OnlySiteLeft) then begin
|
||||||
|
ClearChildControlAnchorSides(AControl);
|
||||||
ConvertToOneControlType(OnlySiteLeft);
|
ConvertToOneControlType(OnlySiteLeft);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
@ -2693,8 +2696,12 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
if SplitterCount=4 then
|
if SplitterCount=4 then begin
|
||||||
RemoveSpiralSplitter(AControl);
|
RemoveSpiralSplitter(AControl);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
ClearChildControlAnchorSides(AControl);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockHostSite.RemoveSpiralSplitter(AControl: TControl);
|
procedure TAnchorDockHostSite.RemoveSpiralSplitter(AControl: TControl);
|
||||||
@ -2777,6 +2784,21 @@ begin
|
|||||||
|
|
||||||
// delete the splitter
|
// delete the splitter
|
||||||
DeleteSplitter.Free;
|
DeleteSplitter.Free;
|
||||||
|
|
||||||
|
ClearChildControlAnchorSides(AControl);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TAnchorDockHostSite.ClearChildControlAnchorSides(AControl: TControl);
|
||||||
|
var
|
||||||
|
Side: TAnchorKind;
|
||||||
|
Sibling: TControl;
|
||||||
|
begin
|
||||||
|
for Side:=Low(TAnchorKind) to high(TAnchorKind) do begin
|
||||||
|
Sibling:=AControl.AnchorSide[Side].Control;
|
||||||
|
if (Sibling=nil) then continue;
|
||||||
|
if (Sibling.Parent=Self) then
|
||||||
|
AControl.AnchorSide[Side].Control:=nil;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockHostSite.Simplify;
|
procedure TAnchorDockHostSite.Simplify;
|
||||||
@ -3456,6 +3478,7 @@ begin
|
|||||||
if not Result then exit;
|
if not Result then exit;
|
||||||
|
|
||||||
DisableAutoSizing;
|
DisableAutoSizing;
|
||||||
|
debugln(['TAnchorDockHostSite.CloseSite ',DbgSName(Self),' SiteType=',dbgs(SiteType)]);
|
||||||
case SiteType of
|
case SiteType of
|
||||||
adhstNone:
|
adhstNone:
|
||||||
Release;
|
Release;
|
||||||
|
Loading…
Reference in New Issue
Block a user