mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-06-06 18:18:18 +02:00
anchrodocking: clear splitter asynccall on destroy
git-svn-id: trunk@61546 -
This commit is contained in:
parent
312cafc8cb
commit
288b31c910
@ -237,24 +237,29 @@ type
|
|||||||
|
|
||||||
TAnchorDockSplitter = class(TCustomSplitter)
|
TAnchorDockSplitter = class(TCustomSplitter)
|
||||||
private
|
private
|
||||||
|
FAsyncUpdateDockBounds: boolean;
|
||||||
FCustomWidth: Boolean;
|
FCustomWidth: Boolean;
|
||||||
FDockBounds: TRect;
|
FDockBounds: TRect;
|
||||||
FDockParentClientSize: TSize;
|
FDockParentClientSize: TSize;
|
||||||
FDockRestoreBounds: TRect;
|
FDockRestoreBounds: TRect;
|
||||||
FPercentPosition: Single;
|
FPercentPosition: Single;
|
||||||
|
procedure SetAsyncUpdateDockBounds(const AValue: boolean);
|
||||||
procedure UpdatePercentPosition;
|
procedure UpdatePercentPosition;
|
||||||
protected
|
protected
|
||||||
|
procedure OnAsyncUpdateDockBounds({%H-}Data: PtrInt);
|
||||||
procedure SetResizeAnchor(const AValue: TAnchorKind); override;
|
procedure SetResizeAnchor(const AValue: TAnchorKind); override;
|
||||||
|
procedure SetParent(NewParent: TWinControl); override;
|
||||||
procedure PopupMenuPopup(Sender: TObject); virtual;
|
procedure PopupMenuPopup(Sender: TObject); virtual;
|
||||||
procedure Paint; override;
|
procedure Paint; override;
|
||||||
public
|
public
|
||||||
procedure MoveSplitter(Offset: integer); override;
|
procedure MoveSplitter(Offset: integer); override;
|
||||||
public
|
public
|
||||||
constructor Create(TheOwner: TComponent); override;
|
constructor Create(TheOwner: TComponent); override;
|
||||||
|
destructor Destroy; override;
|
||||||
property DockBounds: TRect read FDockBounds;
|
property DockBounds: TRect read FDockBounds;
|
||||||
property DockParentClientSize: TSize read FDockParentClientSize;
|
property DockParentClientSize: TSize read FDockParentClientSize;
|
||||||
procedure UpdateDockBounds;
|
procedure UpdateDockBounds;
|
||||||
procedure AsyncUpdateDockBounds ({%H-}Data: PtrInt);
|
property AsyncUpdateDockBounds: boolean read FAsyncUpdateDockBounds write SetAsyncUpdateDockBounds;
|
||||||
procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; // any normal movement sets the DockBounds
|
procedure SetBounds(ALeft, ATop, AWidth, AHeight: integer); override; // any normal movement sets the DockBounds
|
||||||
procedure SetBoundsPercentually;
|
procedure SetBoundsPercentually;
|
||||||
procedure SetBoundsKeepDockBounds(ALeft, ATop, AWidth, AHeight: integer); // movement for scaling keeps the DockBounds
|
procedure SetBoundsKeepDockBounds(ALeft, ATop, AWidth, AHeight: integer); // movement for scaling keeps the DockBounds
|
||||||
@ -2195,7 +2200,7 @@ function TAnchorDockMaster.RestoreLayout(Tree: TAnchorDockLayoutTree;
|
|||||||
Splitter.AnchorSide[akBottom].Control:=nil;
|
Splitter.AnchorSide[akBottom].Control:=nil;
|
||||||
end;
|
end;
|
||||||
Result:=Splitter;
|
Result:=Splitter;
|
||||||
Application.QueueAsyncCall(@Splitter.AsyncUpdateDockBounds,0);
|
Splitter.AsyncUpdateDockBounds:=true;
|
||||||
end else if ANode.NodeType=adltnLayout then begin
|
end else if ANode.NodeType=adltnLayout then begin
|
||||||
// restore layout
|
// restore layout
|
||||||
Site:=GetNodeSite(ANode);
|
Site:=GetNodeSite(ANode);
|
||||||
@ -7178,20 +7183,28 @@ begin
|
|||||||
//debugln(['TAnchorDockSplitter.SetResizeAnchor ',DbgSName(Self),' ResizeAnchor=',dbgs(ResizeAnchor),' Align=',dbgs(Align),' Anchors=',dbgs(Anchors)]);
|
//debugln(['TAnchorDockSplitter.SetResizeAnchor ',DbgSName(Self),' ResizeAnchor=',dbgs(ResizeAnchor),' Align=',dbgs(Align),' Anchors=',dbgs(Anchors)]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TAnchorDockSplitter.SetParent(NewParent: TWinControl);
|
||||||
|
begin
|
||||||
|
if NewParent=nil then
|
||||||
|
AsyncUpdateDockBounds:=false;
|
||||||
|
inherited SetParent(NewParent);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockSplitter.PopupMenuPopup(Sender: TObject);
|
procedure TAnchorDockSplitter.PopupMenuPopup(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockSplitter.AsyncUpdateDockBounds (Data: PtrInt);
|
procedure TAnchorDockSplitter.OnAsyncUpdateDockBounds (Data: PtrInt);
|
||||||
begin
|
begin
|
||||||
|
FAsyncUpdateDockBounds:=false;
|
||||||
FPercentPosition:=-1;
|
FPercentPosition:=-1;
|
||||||
UpdateDockBounds;
|
UpdateDockBounds;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TAnchorDockSplitter.UpdateDockBounds;
|
procedure TAnchorDockSplitter.UpdateDockBounds;
|
||||||
begin
|
begin
|
||||||
|
if csDestroying in ComponentState then exit;
|
||||||
FDockBounds:=BoundsRect;
|
FDockBounds:=BoundsRect;
|
||||||
if Parent<>nil then begin
|
if Parent<>nil then begin
|
||||||
FDockParentClientSize.cx:=Parent.ClientWidth;
|
FDockParentClientSize.cx:=Parent.ClientWidth;
|
||||||
@ -7220,6 +7233,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TAnchorDockSplitter.SetAsyncUpdateDockBounds(const AValue: boolean);
|
||||||
|
begin
|
||||||
|
if FAsyncUpdateDockBounds=AValue then Exit;
|
||||||
|
FAsyncUpdateDockBounds:=AValue;
|
||||||
|
if FAsyncUpdateDockBounds then
|
||||||
|
Application.QueueAsyncCall(@OnAsyncUpdateDockBounds,0)
|
||||||
|
else
|
||||||
|
Application.RemoveAsyncCalls(Self);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TAnchorDockSplitter.SetBounds(ALeft, ATop, AWidth, AHeight: integer);
|
procedure TAnchorDockSplitter.SetBounds(ALeft, ATop, AWidth, AHeight: integer);
|
||||||
begin
|
begin
|
||||||
DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockSplitter.SetBounds'){$ENDIF};
|
DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TAnchorDockSplitter.SetBounds'){$ENDIF};
|
||||||
@ -7429,6 +7452,12 @@ begin
|
|||||||
FPercentPosition:=-1;
|
FPercentPosition:=-1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
destructor TAnchorDockSplitter.Destroy;
|
||||||
|
begin
|
||||||
|
AsyncUpdateDockBounds:=false;
|
||||||
|
inherited Destroy;
|
||||||
|
end;
|
||||||
|
|
||||||
{ TAnchorDockPageControl }
|
{ TAnchorDockPageControl }
|
||||||
|
|
||||||
function TAnchorDockPageControl.GetDockPages(Index: integer): TAnchorDockPage;
|
function TAnchorDockPageControl.GetDockPages(Index: integer): TAnchorDockPage;
|
||||||
|
Loading…
Reference in New Issue
Block a user