mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-02 02:16:20 +02:00
lcl: TMenu: raise exception if something else is freeing the FItems
git-svn-id: trunk@54984 -
This commit is contained in:
parent
2e5a01d509
commit
49719205f8
@ -148,6 +148,7 @@ end;
|
|||||||
|
|
||||||
procedure TMenu.DestroyHandle;
|
procedure TMenu.DestroyHandle;
|
||||||
begin
|
begin
|
||||||
|
//debugln(['TMenu.DestroyHandle ',DbgSName(Self),' ',Items<>nil]);
|
||||||
Items.DestroyHandle;
|
Items.DestroyHandle;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -165,8 +166,8 @@ end;
|
|||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
destructor TMenu.Destroy;
|
destructor TMenu.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeThenNil(FItems);
|
FreeAndNil(FItems);
|
||||||
FreeThenNil(FImageChangeLink);
|
FreeAndNil(FImageChangeLink);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -309,8 +310,15 @@ end;
|
|||||||
procedure TMenu.Notification(AComponent: TComponent; Operation: TOperation);
|
procedure TMenu.Notification(AComponent: TComponent; Operation: TOperation);
|
||||||
begin
|
begin
|
||||||
inherited Notification(AComponent, Operation);
|
inherited Notification(AComponent, Operation);
|
||||||
if (Operation = opRemove) and (AComponent = FImages) then
|
if (Operation = opRemove) then
|
||||||
Images := nil;
|
begin
|
||||||
|
if (AComponent = FImages) then
|
||||||
|
Images := nil
|
||||||
|
else if AComponent=FItems then
|
||||||
|
begin
|
||||||
|
raise Exception.Create(''); // someone is stealing my
|
||||||
|
end;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMenu.SetChildOrder(Child: TComponent; Order: Integer);
|
procedure TMenu.SetChildOrder(Child: TComponent; Order: Integer);
|
||||||
|
@ -187,7 +187,7 @@ var
|
|||||||
i : integer;
|
i : integer;
|
||||||
HandlerType: TMenuItemHandlerType;
|
HandlerType: TMenuItemHandlerType;
|
||||||
begin
|
begin
|
||||||
//debugln('TMenuItem.Destroy A ',dbgsName(Self));
|
//debugln('TMenuItem.Destroy A ',dbgsName(Self),' ',Caption);
|
||||||
FMenuItemHandlers[mihtDestroy].CallNotifyEvents(Self);
|
FMenuItemHandlers[mihtDestroy].CallNotifyEvents(Self);
|
||||||
if FBitmap <> nil then
|
if FBitmap <> nil then
|
||||||
FreeAndNil(FBitmap);
|
FreeAndNil(FBitmap);
|
||||||
|
Loading…
Reference in New Issue
Block a user