LCL: destroy TGraphicControl.Canvas.Handle when control is removed from parent. Issue #30003

git-svn-id: trunk@53254 -
This commit is contained in:
ondrej 2016-10-28 19:01:59 +00:00
parent 643cbe0475
commit 0c617048fe

View File

@ -6315,6 +6315,7 @@ end;
procedure TWinControl.RemoveControl(AControl: TControl);
var
AWinControl: TWinControl;
AGrControl: TGraphicControl;
begin
DisableAutoSizing{$IFDEF DebugDisableAutoSizing}('TWinControl.RemoveControl'){$ENDIF};
try
@ -6327,8 +6328,16 @@ begin
AWinControl.DestroyHandle;
end
else
begin
if AControl is TGraphicControl then
begin
AGrControl := TGraphicControl(AControl);
if (AGrControl.Canvas<>nil) then
TControlCanvas(AGrControl.Canvas).FreeHandle;
end;
if HandleAllocated then
AControl.InvalidateControl(AControl.IsVisible, False, True);
end;
Remove(AControl);
Perform(CM_CONTROLLISTCHANGE, WParam(AControl), LParam(False));
if not (csDestroying in ComponentState) then